Tag Archives: Arquivo

Excel – Conversão para arquivo CSV

O que é

O CSV é um implementação particular de arquivos de texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores. O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.

O tornou-se uma alternativa mais estruturada frente aos arquivos textos tradicionais e binários, usados em aplicações legadas, geralmente escritas em C, C++ e outras linguagens da época. Esse formato não segue o formalismo de apresentação de arquivos separados por tabulação, sendo mais direcionados para troca de dados entre sistemas.

Exemplo

O Excel suporta nativamente leitura de arquivos no formato CSV. Um arquivo CSV em um computador Windows com o Excel instalado geralmente aparece da seguinte forma:

conversaocvs1

Este arquivo aberto no bloco de notas tem o seguinte formato:

conversaocvs4

Abra este arquivo no Microsoft Excel para ver o resultado:

conversaocvs2

Abrir o arquivo pode ser feito tanto pelo Windows como através da caixa de diálogo Arquivo->Abrir, selecionando na caixa Arquivos do Tipo a opção “Arquivos de texto (*.prn;*.txt;*.csv)”. A edição do arquivo transcorre normalmente. Porém, ao tentar salvá-lo, o Excel apresenta a seguinte mensagem:

conversaocvs3

Naturalmente como em arquivos texto, ao tentar salva os dados no formato CSV, este não poderá manter funcionalidades como fórmulas e outros recursos disponibilizados pelo Microsoft Excel. Também da mesma forma que faz com arquivos XML, o Excel trabalha com o arquivo desvinculado, ou seja, ele faz uma importação dos dados do arquivo CSV para possibilitar o trabalho dentro de uma planilha, sendo necessário salvá-lo explicitamente como CSV porteriormente.

Da mesma forma que importa, o Excel também exporta arquivos para o formato CSV, seguindo as mesmas regras de limitação já descritas.

Para fazê-lo, crie o seguinte arquivo no Excel:

conversaocvs6

Para salvar este arquivo como CSV, vá até o menu Arquivo->Savlar como. Na caixa salvar como tipo, selecione a opção CSV (separado por vírgulas) (*.csv).

conversaocvs7

Dê o nome de arquivo e salve-o em alguma pasta de seu disco. Abrir este arquivo no bloco de notas nos mostrará o seguinte resultado:

conversaocvs5

Conclusão

Desta forma, vemos que o Excel possibilita o trabalho completo com arquivos CSV. Ainda é comum encontrar sistemas que trabalham com este tipo de arquivo, ou até mesmo sistemas atuais. Aplicativos de WebMail por exemplo, costumam exportar listas de contato para arquivos o tipo CSV.

Este também pode ser uma opção para transmitir informações para outros usuários que por ventura não possuam o Microsoft Excel instalado.

.NET : Obter o tamanho de um diretório com o .NET

Dica publicada pelo pessoal da BufaloInfo.

Não há ainda, nas classes do framework, um meio de obter o tamanho total de um diretório. Por isso o tamanho total de um diretório deve ser obtido pela soma do tamanho de seus arquivos e diretórios, da seguinte forma :

public static long Size(System.IO.DirectoryInfo dirInfo)
{
	long total = 0; 
 
	// Obtem o tamanho total dos arquivos no diretório
	foreach(System.IO.FileInfo file in dirInfo.GetFiles())
	total += file.Length; 
 
	// Obtem o tamanho total dos sub-diretórios da pasta
	foreach(System.IO.DirectoryInfo dir in dirInfo.GetDirectories())
	total += Size(dir); 
 
	return total;
}

É interessante observar que esta função é recursiva : Ao encontrar uma pasta a função chama a si mesma para poder calcular o tamanho da pasta e desta forma somar ao tamanho total.

No link abaixo há uma explicação mais detalha sobre Recursividade e os cuidados a considerar em seu uso:

http://pt.wikipedia.org/wiki/Recursividade

VBA – Excluindo arquivos e Movendo para a Lixeira

Lixeira
Lixeira

Programadores mais experientes sempre tiveram a mão uma função simples para exclusão de arquivos no VBA. A função Kill. A Macro abaixo exclui o arquivo no caminho informado:

Public Sub KillThem()
    Kill "C:\temp\delete.txt"
End Sub

Até aqui tudo bem. O inconveniente desta função é que o arquivo é definitivamente excluído, ou seja, não passa nem pela Lixeira. Em alguns casos isso pode até ser bom, em outros não, como por exemplo, selecionar um arquivo por engano.

Para isso, há uma pequena alternativa que seria a óbvia. Enviar o arquivo para a Lixeira. O código VBA abaixo permite a proeza:

Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
 
Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
End Type
 
Private Declare Function SHFileOperation Lib _
 "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
 
Public Function Exclui_Arquivo(CaminhoArquivo As String) As Boolean
    Dim shfo As SHFILEOPSTRUCT
    Dim lresult As Long
 
    With shfo
        .wFunc = FO_DELETE
        .pFrom = CaminhoArquivo
        .fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
    End With
 
    lresult = SHFileOperation(shfo)
    Exclui_Arquivo = CBool(lresult = 0)
End Function
 
Um exemplo de chamada à função seria:
 
Public Sub Teste()
    Dim CaminhoArquivo As String
    CaminhoArquivo = "C:\temp\delete.txt"
    If Exclui_Arquivo(CaminhoArquivo) Then
        MsgBox "Arquivo " & CaminhoArquivo & " excluido com sucesso"
    Else
        MsgBox "Falha na exclusão do aquivo " & CaminhoArquivo
    End If
End Sub

É interessante notar que as constantes FOF_ALLOWUNDO e FOF_NOCONFIRMATION são utilizadas em cojunto. O resultado produzido é a efetivação da operação sem confirmação. Porém, se omitir o segundo, a caixa de confirmação de exclusão de arquivo padrão do Windows será mostrada.  Experimento deixar somente o FOF_ALLOWUNDO e execute o código novamente.

Não entrarei em detalhes da função SHFileOperation e da Estrutura SHFILEOPSTRUCT. Ambas estão bem detalhadas na documentação oficial:

SHFileOperation Function
SHFILEOPSTRUCT Structure

Bom proveito!

VBA – Caixa de Diálogo para Abrir arquivo (OpenFileDialog)

Função pouco comum, mas em sistemas em VBA tem se tornado cada vez mais trivial a necessidade de abrir ou referenciar um arquivo.

A função abaixo (OpenFileDialog) abre uma caixa de diálogo para seleção de um arquivo e retorna o caminho deste juntamente com o nome do arquivo:

Public Function OpenFileDialog() As String
    Dim Filter As String, Title As String
    Dim FilterIndex As Integer
    Dim Filename As Variant
    ' Define o filtro de procura dos arquivos
    Filter = "Arquivos Wave (*.wav),*.wav,"
    ' O filtro padrão é *.*
    FilterIndex = 3
    ' Define o Título (Caption) da Tela
    Title = "Selecione um arquivo"
    ' Define o disco de procura
    ChDrive ("C")
    ChDir ("C:\")
    With Application
        ' Abre a caixa de diálogo para seleção do arquivo com os parâmetros
        Filename = .GetOpenFilename(Filter, FilterIndex, Title)
        ' Reseta o Path
        ChDrive (Left(.DefaultFilePath, 1))
        ChDir (.DefaultFilePath)
    End With
    ' Abandona ao Cancelar
    If Filename = False Then
        MsgBox "Nenhum arquivo foi selecionado."
        Exit Function
    End If
    ' Retorna o caminho do arquivo
    OpenFileDialog = Filename
End Function

Mais detalhes:

  • Utiliza-se o método GetOpenFilename para chamar a caixa de diálogo
  • Define-se o filtro de seleção de arquivos para o tipo  “Wave Files (*.wav),*.wav,”, mas poderia ser qualquer outro (txt, xls, doc, etc)
  • Pode-se definir um drive padrão de busca do arquivo

Bom proveito!

Referências:

http://www.tek-tips.com