segunda-feira, 31 de dezembro de 2018

Solicitar ao usuário um nome e local para gravar um arquivo, em VBA

Uma função muito utilizada por mim é a que eu solicito um nome/local de arquivo para o usuário. Em VBA, isso é fácil:

Uso sTexto para mandar uma mensagem para o usuário. E uso sTipo para saber se é para Ler um arquivo ou é para Gravar, ou seja, se passar Ler, o arquivo já deverá existir no diretório apontado pelo usuário. Se passar Gravar, o usuário deverá informar o nome/local do arquivo.

Na prática, posso usar assim:

Dim sArquivo As String
 
  sArquivo = fRetornaArquivo("Informe a base de dados", "Ler")
 
  If sArquivo <> "" Then
     exit sub
  end if
  ...

Function fRetornaArquivo(sTexto As String, sTipo As String) As String
'
' Abre o arquivo
'
Dim CancelProcedure As Integer
Dim FileToOpenTxt As String

CancelProcedure = MsgBox(sTexto, vbOKCancel)

If CancelProcedure = 2 Then
   GoTo Suspende:
End If

If sTipo = "Ler" Then
   FileToOpenTxt = Application.GetOpenFilename("Planilhas (*.*), *.*")
Else
   FileToOpenTxt = Application.GetSaveAsFilename("Planilhas (*.*), *.*")
End If

fRetornaArquivo = FileToOpenTxt

Suspende:
   Exit Function

End Function

Formatar texto numérico com zeros à esquerda

Sempre aparace uma necessidade de colocar zeros à esquerda em textos que representam números. Exemplo clássico é transformar o número que ...