VBA - Convertendo o número do mês no nome por extenso - Convertendo o nome por extenso do mês no número








Blog Office VBA | Blog Excel | Blog Access | 

Hello folks!

Ao lidar com periodicidades móveis como MAT (Moving Annual Total), YTD (Year to Date), QTD (Quarter-To-Date), MTD (Month-To-Date), Year-ending, etc... Talvez necessitemos ajustar os nossos meses movendo-os dinamicamente.
How to convert month number to month name
Convert numbers to month names
Convert Month Name To Number
Convert Month Number to Month Name in Report based on query

A movimentação dos meses ajustada nas apresentações dos gráficos e das tabelas dos nossos Dashboards e Scorecards, invariavelmente requererão que os meses sejam manipulados internamente por somá-los ou subtraí-los, adequando as apresentações dos mesmos. Para que este feito fosse facilmente implementado precisaríamos transformar Novembro em 11 11 em Novembro, por exemplo. Como ?

Para o vosso regalo, seguem funções abaixo:

Function ABL_Convert_Number2MonthName (ByVal lngMonth As Long) As String

    ' Author:                     Date:               Contact:                 URL:

    ' André Bernardes             28/06/2011 13:58    bernardess@gmail.com     http://inanyplace.blogspot.com/

    ' Application: ®

    ' Converte o número do mês no respectivo nome (11 em Novembro).

    ' Listening: 20 - Flynn Lives - Daft Punk - TRON Legacy Soundtrack [Complete Edition](MP3@320Kbps)  

    On Error GoTo Err_GetMonthName

    Dim dteTemp As Date

    If lngMonthName < 1 And lngMonthName > 12 Then

        Let ABL_Convert_Number2MonthName = vbNullString    

        Exit Function

    End If

    Let dteTemp = DateSerial(Year(Date), lngMonth, 1)

    Let ABL_Convert_Number2MonthName = Format(dteTemp, "mmmm")

    Exit Function

Err_GetMonthName:

    Let ABL_Convert_Number2MonthName = vbNullString

End Function

Function ABL_Convert_MonthName2Number (monthName As String) As Integer
    ' Author:                     Date:               Contact:                 URL:

    ' André Bernardes             28/06/2011 14:01    bernardess@gmail.com     http://inanyplace.blogspot.com/

    ' Application: ®

    ' Converte o nome de um mês em número (Novembro em 11).

    ' Listening: 20 - Flynn Lives - Daft Punk - TRON Legacy Soundtrack [Complete Edition](MP3@320Kbps)

    ' try to convert month name to actual date type

    Dim dtestr As String

    Let dtestr = monthName & "/1/2011"

    Dim dte As Date

    On Error Resume Next

    Let dte = CDate(dtestr)

If Err.Number <> 0 Then

  Let ABL_Convert_MonthName2Number = -999

  Exit Function

End If

    On Error GoTo 0

    Let ABL_Convert_MonthName2Number = Month(dte)

End Function

Vocabulário:

YTDYear to Date

QTD = É um período iniciado no começo do trimestre em curso, terminando na data atual.

MAT = Moving Annual Total.

MTD = Month-To-Date


Tags: VBA, Office, Month, Mês, converter

VBA Access - Como apagar arquivos - Delete, Kill, Erase

images?q=tbn:ANd9GcSZ-Cq8_QecEo2KqZMuthWjgD0YoogjLImgdFwR-fGGcmOO1_mA Não é rara a necessidade de precisarmos apagar arquivos temporários que utilizamos para importação, exportação, consolidação, geração de relatórios externos, etc...

Como posso excluir a tais?

A instrução Kill exclui os arquivos de um disco.

Sintaxe: Kill pathname

O argumento pathname é uma expressão de seqüência de caracteres que especifica um ou mais nomes de arquivo a serem excluídos. O pathname pode incluir o diretório ou pasta e a unidade.

No Microsoft Windows, Kill aceita o uso de curingas de múltiplos caracteres (*) e de um único caractere (?) para especificar múltiplos arquivos. Entretanto, no Macintosh, esses caracteres são tratados como caracteres de nomes de arquivo válidos e não podem ser usados como curingas para especificar múltiplos arquivos.

Como o Macintosh não aceita os curingas, use o tipo de arquivo para identificar grupos de arquivos a excluir. Você pode usar a função MacID para especificar o tipo de arquivo em vez de repetir o comando com nomes de arquivo separados. Por exemplo, a instrução a seguir exclui todos os arquivos TEXT da pasta atual.


Kill MacID ("TEXT")


Se você usar a função MacID com Kill no Microsoft Windows, ocorrerá um erro. Se você tentar usar Kill para excluir um arquivo aberto, ocorrerá um erro.

Você pode deletar vários arquivos em um diretório

Estou tentando apagar arquivos temporários que o MS Word às vezes deixa para trás, quando não os consegue limpar corretamente. 

Digamos os arquivos como ~$lename.dot. Utilizar apenas o comando Kill, não funciona para arquivos ocultos como estes. mas, se eu mudar seus atributos ele funciona perfeitamente. 

Existe uma comando que pode matar arquivos ocultos também? Se não, como posso contornar uma situação como este problema que impede alguns modelos mailmerge de serem excluídos? 

Como quero executar o comando fora de um botão. Estou pegando o caminho de um DLookup, pois varia de local para local.


Function KillTempFiles()



If Dir(DLookup("[Path]", "tblMailmerge", "mID=1") & "~*.dot") > "" Then

Kill (DLookup("[Path]", "tblMailmerge", "mID=1") & "~*.dot")

End If


On Error Resume Next


End Function

No entanto, a declaração Kill não pode excluir arquivos somente leitura, por isso, a menos que não exista chance de que o arquivo possa ser marcado como readonly, deve-se primeiro remover o atributo readonly do arquivo. Pode fazer isso da seguinte forma:


Dim KillFile As String

Let KillFile = "c:\bernardes\inanyplace.doc"

' Checa se o arquivo existe
If Len(Dir$(KillFile)) > 0 Then

    ' Primeiro remove o atributo de readonly, caso esteja assim configurado
    SetAttr KillFile, vbNormal

    ' Deleta o aqruivo.
     Kill KillFile
End If

Para deletar todos os arquivos em um diretório:

' Faz um Loop através de todos os arquivos em um diretório por usar a função Dir$

Dim MyFile As String


Let MyFile = Dir$ ("c:\Bernardes\*.*")


Do While MyFile <> ""

    KillProperly "c:\Bernardes\" & MyFile


    ' É necessário especificar o caminho novamente, porque o arquivo foi deletado.

    Let MyFile = Dir$ ("c:\Bernardes\*.*")

Loop


Alternativamente, você pode ler todos os valores em uma matriz, e excluir todos os arquivos usando um loop. Esse será um processo mais rápido se o diretório for muito grande, caso contrário não notará qualquer diferença.


Referências: StackoverFlow
               Bytes
               MVPS




Tags

Access, Kill, Delete, Del, Excluir, deletar, apagar, arquivo, file, archive


André Luiz Bernardes
A&A® - Work smart, not hard.

       







ACCESS - Usando Gauges em Dashboards - Usando Dashboard Gráfico no Access





Ahhh, os Dashboards e os Scorecards...São um desafio para desenvolvê-los diante dos inúmeros softwares comerciais criados com essa finalidade. 

Será que a nossa tão conhecida e amplamente utilizada suíte do MS Office consegue nos atender nos nossos anseios por belos Dashboards 
 ou mesmo a elaboração de Cockpits?




Talvez deseje ler adicionalmente o artigo: 

Bem, agora é o momento de olharmos o modo como podemos fazer uso da visualização de KPI,  com medidores e/ou mostradores,  em Dashboards no MS Access. Sim, você realmente pode usar o MS Access para criar alguns Dashboards executivos visualmente interessantes.

Dê uma olhada abaixo no screenshot de um Dashboards desenvolvido em MS Access:

Dashboard_Andre_Luiz_Bernardes_01.png

Ou algo parecido com isso:

Dashboard_Andre_Luiz_Bernardes_02.png

Muito legal, não é mesmo? Quer saber como criar seu próprio painel de acesso com estes gráficos para Dashboards?


Bem o MS Access não é tipicamente uma ferramenta na qual pensaria quando se considera desenvolver uma plataforma de Dashboards. As ferramentas de relatório no MS Access, ainda não têm tais funcionalidades facilitadoras. Ou seja, o MS Access não oferece uma série com Dashboards gráficos. Claro que ele tem gráficos e formatação condicional, mas nada como no MS Excel.


No próximo artigo, mostro um hack, algumas pequenas dicas, para que possa adicionar características profissionais aos seus relatórios MS Access para Dashboards.





Referências: DataPigTechnologies


Tags: Access, Dashboard, gauge, medidor, mostrador, bmp, bitmap, chart, gráfico



EXCEL - Dica para otimizar velocidade de cálculos no Excel 2007







Dica para otimizar velocidade de cálculos no Excel 2007

Se utiliza o MS Excel 2007 em uma máquina com processador de dois (ou mais) núcleos você pode aumentar a velocidade de cálculo habilitando a opção "multithread": Clique no botão OFFICE/OPÇÕES DO EXCEL/AVANÇADO/PERMITIR CÁLCULOS MULTITHREAD


Com isso o MS Excel 2007 passa a fazer operações simultâneas de forma independente usando os núcleos separadamente. Isso significa uma sensível melhora de performance em planilhas parrudas, mas imperceptível no arroz-com-feijão do dia-a-dia.


Referência: Pasta1xls



Tags: VBA, Office, Excel, velocidade, otimizar, velocity, speed

Inspiration: 

VBA - Deletando arquivos - Deletando pastas - Deletando Diretórios - Delete via Vba




Já tentou apagar um arquivo externo à sua aplicação, talvez uma planilha ou um arquivo texto? 
Pense, como posso excluir um arquivo?


Delete Files Via Vba
Delete Text File
Delete a folder and all subfolders and files
Delete files in a folder VBA
Deleting a file in VBA
How remove file
How to delete files using VBA
How to use VBA to delete files
I need to copy, rename and delete files in a folder
Macro to delete all files





Move and Delete files and folders
Remove Files


Poderia basicamente usar o comando Kill, mas um programador preocupado precisa permitir a possibilidade de existir um arquivo que está sendo usado somente como leitura, eis a função para você:







 DeleteFile ("Bernardes_Dashboard_Results.txt")











Sub DeleteFile(ByVal FileToDelete As String)





   If FileExists(FileToDelete) Then 'See above





      SetAttr FileToDelete, vbNormal





      Kill FileToDelete




   End If





End Sub





Não se esqueça da função que checa a existência do arquivo:







Function FileExists(ByVal FileToTest As String) As Boolean




   Let FileExists = (Dir(FileToTest) <> "")




End Function




Ahhh, você pode definir uma referência para a biblioteca Scripting.Runtime e depois usar o FileSystemObject, este tem dois métodos DeleteFile e FileExists.

Não vou esconder que temos outras opções:







Let nTest = Dir(filename)





If not nTest="" then





Kill(Filename)





end if





O código a seguir pode ser usado para testar a existência de um arquivo, e depois excluí-lo:







Dim aFile As String





Let nFile = "c:\Bernardes_Dashboard_Results.txt"





If Len(Dir$(nFile)) > 0 Then




     Kill nFile




End If





Estava me segurando, mas preciso avisar-lhe quanto a não permitir que o código retorne uma mensagem de erro do tipo "Descupe-me, mas não existe nenhum código para apagar", então coloque também algo como o mostrado abaixo:







On Error Resume Next 





Kill "









c:\Bernardes_Dashboard_Results.txt




"





On Error Goto 0





Return Len(Dir$(aFile)) > 0 





As opções não param. Aqui está um método simples de apagar uma pasta e todos os arquivos e subpastas. Ele usa o File System Object (objeto sistema de arquivos). 

Para usá-lo, você terá que definir uma referência para o Microsoft Scripting Runtime geralmente encontrada em C:\WINDOWS\system32\scrrun.dll.







Sub DeleteAllFolders(FolderPath As String)









   Dim fso As Scripting.FileSystemObject




   Set fso = New Scripting.FileSystemObject




  




   On Error Resume Next




   fso.DeleteFolder (FolderPath)




   Set fso = Nothing









End Sub





O método fso.DeleteFolder não pode retirar a barra à direita ("\")  do path, por isso precisamos removê-la quando aparecer.







Function CorrectPath(FolderPath As String) As String




    




    Let FolderPath = Trim(FolderPath)





    If Right(FolderPath, 1) = "\" Then




        Let CorrectPath = Left(FolderPath, Len(FolderPath) - 1)




    Else




        Let CorrectPath = FolderPath




    End If




End Function




Referências: MSDN
                    Stackoverflow
                    Tektips

Tag: Bernardes, MS, Microsoft, Office, files, arquivo
, archive,
 deletar, apagar, excluir, kill


André Luiz Bernardes
A&A® - Work smart, not hard.

 
       
diHITT - Notícias