Tag Archives: Arquivo

VBA – Exportar Planilha para TXT

Nascido das mãos do colega Rafael do nosso fórum, o código abaixo realiza a exportação de uma planilha ativa no Excel para um arquivo Texto:

Sub Exportar()
    Application.DisplayAlerts = False
 
    template_file = ActiveWorkbook.FullName
 
    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\users" + _
                                    VBA.Strings.Format(Now, "mmddyyyy") + ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")
 
    If fileSaveName = False Then
        Exit Sub
    End If
 
    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
 
    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)
 
    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next
 
    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
 
    'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing
 
    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
 
End Sub

A parte bacana deste código é não necessidade de utilizar ou precisar conhecer de manipulação de arquivos, uma vez que estamos utilizando o “Salvar Como” arquivo texto. Fica bem mais fácil de customizar!

O link original do código do fórum pode ser visto aqui:

https://www.tomasvasquez.com.br/forum/viewtopic.php?t=1651&p=8162

Bom proveito!

VBA – Lendo um arquivo texto linha a linha (sem FileSystemObject)


Bom, como falei sobre o mesmo problema outro dia em C#, nada mais justo do que publicar em VBA também, até porque a dúvida surgiu no fórum também.

A rotina abaixo faz o trabalho de abrir e ler uma arquivo no formato texto linha a linha. A idéia é permitir alterar o código de tal forma que se for preciso fazer uma análise do conteúdo da linha, fica fácil de fazer:

Option Explicit
 
Public Sub LeArquivoTexto()
    Dim Arquivo As Integer
    Dim CaminhoArquivo As String
    Dim TextoArquivo As String
    Dim TextoProximaLinha As String
    Dim ContadorLinha As Long
 
    'Configura a leitura do arquivo
    Arquivo = FreeFile
    CaminhoArquivo = "C:\temp\arquivo.txt"
 
    'Abre o arquivo para leitura
    Open CaminhoArquivo For Input As Arquivo
    ContadorLinha = 1
    'Lê o conteúdo do arquivo linha a linha
    Do While Not EOF(Arquivo)
        Line Input #Arquivo, TextoProximaLinha
        TextoProximaLinha = TextoProximaLinha & vbCrLf
        TextoArquivo = TextoArquivo & TextoProximaLinha
    Loop
 
    'Coloca na janela de verificação imediata
    Debug.Print TextoArquivo
 
    'Fecha o arquivo
    Close Arquivo
 
End Sub

Como destacado no título do arquivo, a vantagem deste método, apesar de menos legível, é não precisar carregar a dependência da biblioteca do FileSystemObject, usando somente os recursos padrão do Visual Basic.

Bom proveito!

Dicas – Localizando o Processo que está usando o arquivo

Sabe aquelas vezes em que você tenta excluir uma pasta ou arquivo no Windows e recebe a famosa mensagem de erro:

Ótimo. Em alguns casos, até conseguimos resolver o problema pois é óbvio saber qual programa está travando o arquivo, como um arquivo .doc que pode ser o Word, ou um .mp3 que o Media Player ou Winamp estejam “segurando”.

Mas em alguns casos não há santo que ajude a saber quem está segurando o arquivo.  A solução quase infalível é reiniciar o computador, o que em algumas situações é inviável. Bom, um programinha conhecido da maior parte dos MSGeeks, o Process Explorer, ajuda a encontrar o dito processo que bloqueia o arquivo.

Abrindo um parênteses sobre o Process Explorer, ele faz parte do Windows Sysinternals, um conhecido pacote de aplicativos disponibilizado pela Microsoft focado para administradores de rede que disponibiliza ferramentas de análise avançadas. No caso, o Process Explorer pode ser considerar um Gerenciador de Tarefas “tunado”. Existe várias ferramentas, mas vamos nos ater a ele. Para saber mais:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Na janela do Process Explorer, basta ir ao menu Find->Find Handle or DLL… Uma caixa de diálogo de busca é aberta. Basta digitar o nome do arquivo ou pasta que quer excluir para ser mostrada uma lista dos aplicativos que estão travando o arquivo:

Um duplo clique na linha fará com que você vá para uma janela em que todos os arquivos processo que bloqueiam arquivos podem ser vistos. Nele, basta seleciona o processo que está travando o arquivo, clicar com o direito e selecionar Close Handle:

Voilá! Seu arquivo está livre!

Bom proveito!

Referências:

http://windowsxp.mvps.org/processlock.htm

Excel – Abrindos arquivos em uma nova instância do Excel

Por padrão, as versões mais atuais do Excel abrem novos arquivos na mesma instância do aplicativo, caso já exista um aberto. É o comportamento padrão quando você dá um duplo-clique em arquivo pelo Windows Explorer.

Porém, dependendo do comportamento do determinado arquivo, é desejável que ele seja aberto e uma nova instância. Isso é relativamente simples em VBA. Porém, seria interessante ter o mesmo comportamento de forma mais tradicional. Issoé possível, seguindo os seguintes passos:

Passo 1: Com o Windows Explorer aberto, vá em Ferramentas->Opções de pasta. Nessa janela, vá para a aba Tipos de Arquivo e procure pela extensão XLS. Selecione e clique no botão Avançado.

Passo 2: Com a janela Editar tipo de arquivo aberta, clique no botão novo.

Passo 3: Na janela Nova ação, selecione um nome para esta. Como sugestão inicial, coloque “Abrir em uma nova instância do Excel” já que é isto mesmo que a ação fará e no campo Aplicativo usado para executar a ação, coloque o seguinte comando:

“C:\Arquivos de programas\Microsoft Office\OFFICE11\EXCEL.EXE” “%1”

É importante que a primeira parte do comando aponte para a pasta onde está instalado o office no seu computador. O comando acima faz referência a instalação padrão do Excel 2003.

Passo 4: Agora é fazer o teste. Abra o Windows Explorer e aponte para qualquer pasta que contenha um arquivo em Excel (.xls) e clique com o botão direito para que a ação que acabamos de configurar está presente no  menu:

Porém, para efetuar o teste com clareza, deixe aberto antes de executar a ação acima algum outro arquivo do Excel. Agora basta conferir pelo gerenciador de tarefas (Ctrl+Shift+Esc) que quando este comando é executado, uma nova instância do Excel é aberta.

Para remover o comportamento, basta ir até o passo 2 deste tutorial, mas ao invés de clicar em novo, selecione a ação que acabamos de criar em clique em remover.

Bom proveito!

Referências:

http://www.vadriano.com/excel-vb/