Sorry, this entry is only available in Português.
Tag Archives: Planilha
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!
Excel – Desbloqueando Planilhas
Esse é um dos posts “indesejados” por aqueles que trabalham com Excel em seu dia a dia, mas que precisam estar na base de conhecimento de todos eles, pois uma das características de qualquer bom sistema, é saber de suas fragilidades.
O Excel possui nativamente um sistema de proteção de planilhas baseados em senha, mas que é um pouco frágil, do ponto de vista técnico/avançado. Tão frágil que existe um código em VBA que é quase uma convenção entre os programadores da linguagem para desbloquear planilhas de forma rápida. Abaixo segue o mesmo:
Sub DesprotegerEstaPlanilha() Dim i, i1, i2, i3, i4, i5, i6 As Integer, j As Integer, k As Integer, l As Integer, m As Integer, n As Integer On Error Resume Next For i = 65 To 66 For j = 65 To 66 For k = 65 To 66 For l = 65 To 66 For m = 65 To 66 For i1 = 65 To 66 For i2 = 65 To 66 For i3 = 65 To 66 For i4 = 65 To 66 For i5 = 65 To 66 For i6 = 65 To 66 For n = 32 To 126 ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) If ActiveSheet.ProtectContents = False Then MsgBox "Planilha " & ActiveSheet.Name & " debloqueada sob a senha: " & Chr(i) & Chr(j) & _ Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _ Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) Exit Sub End If Next Next Next Next Next Next Next Next Next Next Next Next End Sub |
O motivo da facilidade do desbloqueio está na simplicidade do algoritmo de encriptação da senha. Conforme anunciado pela própria especificação do Office Open XML specification, a mesma se baseia em um hash de 16 bits. Uma lida rápida em documentações de criptografia nos leva a constatação de que o algoritmo hash produz resultados “sem volta”, ou seja, é impossível obter o valor original a partir de “seu hash”, mas também que a base em 16 bit é quebrável sem muito esforço computacional. A função acima quebra a senha fazendo uso de força bruta, o que comprova a fragilidade do método utilizado.
Disso, dá para tirar algumas conclusões e cuidados que devemos tomar quando falamos de aplicativos e planilhas sérias em nosso dia a dia:
- Use o recurso de proteção de planilhas somente para bloqueio de nevegação ou algo parecido
- Se quiser proteger efetivamente, use proteção de senha do arquivo
- Use senhas fortes sempre que possível
Para projetos VBA:
- Use sempre proteção de senha para os projetos
- Siga as dicas deste blog e do nosso fórum sobre técnicas de segurança para projetos VBA
Mais algumas dicas:
http://www.oraxcel.com/projects/encoffice/help/How_safe_is_Excel_encryption.html
Referências
http://kohei.us/2008/01/18/excel-sheet-protection-password-hash/
Excel – O que é uma Pasta de trabalho no Excel?
Essa foi uma questão divertida, até. Ela surgiu não em um fórum, como de costume, mas de uma referência feita ao blog cujo critério de busca era exatamente o título deste post.
Como em muitas ocasiões e discussões em fóruns, blogs e outros meios de interação que existem na internet, o termo pasta de trabalho e planilha são pouco esclarecidos, resolvi colocar aqui um pequeno guia para elucidar e definir os mesmos, a fim de facilitar as discussões. Esta é uma idéia geral, mas suficiente para seguir em frente com longas discussões.
Vamos lá:
Pasta de trabalho
A pasta de trabalho é o arquivo do Excel como um todo, englobando todos os seus objetos, sendo eles planilhas, gráficos, planilhas de macro, tabelas dinâmicas, gráficos dinâmicos e projetos VBA. Ele é representado fundamentalmente pelo arquivo “fisico”, ou seja, o .xls (que pode ser também xlsx, xlsm, xla, xlt, entre outros formatos que em que o Excel pode ser salvo).
É muito comum este ser chamado de planilha. Até faz sentido, já que em sua concepção, o Excel é um gerenciador de planilhas eletrônicas. Porém, notem que o termo referente está no plural, ou seja, “planilhas”. Um arquivo do Excel é então, no mínimo um conjunto de planilhas, termo que será definido a seguir.
Planilha
Uma planilha é uma “aba”, popularmente falando. Normalmente, quando você abre o Excel, ele cria automaticamente uma nova pasta de trabalho com 3 planilhas. As planilhas podem ser visíveis na parte inferior da janela, como na figura abaixo:
Tecnicamente, é correto chamar de “planilha” cada uma destas abas.
Arquivo
Um arquivo no contexto do Excel representa necessariamente uma pasta de trabalho, como foi explicado acima.
Esclarecendo
Portanto, de posse dos conceitos acima, é comum começarmos a estranhar frases como “tenho uma planilha do Excel”, ou “tenho um problema na minha planilha”, já que a primeira pergunta que se faz ao autor é “você quer dizer planilha ou pasta de trabalho?”.
Para programadores VBA, esse conceito tem que estar obrigatoriamente claro, já que, ao trabalhar com o modelo de objetos do Excel, esses dois ficam bem distintos, sendo representados pelos classes Worksheet e Workbook no VBA. Qualquer manipulação sobre qualquer um destes, as diferenças ficarão evidentes.
Só como um exemplo, uma planilha ou Worksheet contém uma coleção de células/cells. Já a pasta de trabalho ou Workbook, obrigatoriamente contém uma coleção de planilhas/worksheets, não sendo possível que ela tenha células diretamente.
Concluindo
Essa é a idéia geral. Seria preciso entrar no mérito de todos os objetos válidos do Excel para saber dar o correto nome aos bois, mas saber o descrito acima já ajuda e muito no entendimento das dúvidas que são colocadas nos fóruns e grupos de discussão.
Bom proveito a todos!