Usuário com melhor resposta
Salvar documento do Word em VBA

Pergunta
-
Olá caros amigos. Estou com um problema em VBA no Word 2010 e peço que me ajudem, pois nada entendo a respeito.
O caso é o seguinte: preciso emitir relatórios diários para a empresa em que trabalho, sendo que esses relatórios seguem uma numeração contínua (Relatório 1, Relatório 2, etc).
Então, busquei na rede uma macro que, quando acionada, salvasse os Relatórios nessa ordem, sendo que encontrei uma disponibilizada por EvangelistaLion , a qual, após eu ter feito as adaptações necessárias (mudei o endereço para a pasta em que estavam salvos os relatórios - “c:/Relatórios” e o nome do arquivo a ser salvo) foi perfeita, já que realmente salvava o novo documento acrescendo a sequência numérica necessária, Eis o teor original da macro:
“Sub Salva() Dim n As Integer
endereço = "F:\usuarios\cqf\AUDITORIA\RNCs 2008\ACIARIA\"
Set fs = Application.FileSearch
With fs
.LookIn = endereço
.FileName = "RNC*"
.Execute
n = .FoundFiles.Count
ActiveDocument.SaveAs endereço & "RNC" & n + 1
End With
End Sub”
Ocorre que, ao migrar para o Office 2010 (eu utilizava o Office XP), essa macro passou a indicar 2 erros quando acionada.
Por primeiro, destaca em amarelo a 3ª linha (endereço = "F:\usuarios\cqf\AUDITORIA\RNCs 2008\ACIARIA\") e abre o box com os dizeres: “ERRO DE COMPILAÇÃO. VARIÁVEL NÃO DEFINIDA”.
Dando continuidade na execução da macro, outro box se abre com os dizeres: “ERRO DE TEMPO DE EXECUÇÃO 5111. ESTE COMANDO NÃO ESTÁ DISPONÍVEL NESTA PLATAFORMA”. E ai destaca a 2ª linha da macro (Dim n As Integer).
Se possível, me ajudem a resolver este problema, salientando que esta macro, agora, roda no Office 2010 (e não mais no XP). Desde já agradeço
JRJoppert
- Editado JRJoppert sexta-feira, 8 de maio de 2015 16:05
Respostas
-
JRJoppert,
a instrução "FileSearch" foi removida, por isso o erro. Por favor, teste o código abaixo e veja se funciona:
Sub Salvar() Dim n As Integer Dim sCaminho As String 'Defina a Pasta aqui sCaminho = "F:\usuarios\cqf\AUDITORIA\RNCs 2008\ACIARIA" Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFolder = oFSO.GetFolder(sCaminho) 'Estrutura da Pasta de origem For Each sItemFile In oFolder.Files 'Percorrendo toda a pasta If sItemFile.Name Like "RNC*" Then n = n + 1 End If Next ActiveDocument.SaveAs sCaminho & "RNC" & n + 1 & ".docm" MsgBox "Fim da Execução. Arquivo Salvo!", vbInformation End Sub
Abraço.
Filipe Magno
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 11 de maio de 2015 13:49
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 12 de maio de 2015 21:26
Todas as Respostas
-
Olá, amigo!
Vamos analisar:1- Tente corrigir com isto:"Option Explicit", isto definirá toda variável a ser declarada.
Exemplo:
Dim a As Integer
eDim b As Integer
Precisam ser definidas, então um "Option Explicit" pode resolver esse problema
2 - Lembrando que pode estar havendo um Conflito entre versões do office. Documentos do Word antes tinham extensões ".doc", a partir da edição 2010 ficaram ".docx"
Verifique esse detalhe, busque um macro atualizado para ".docx"
Espero ter lhe ajudado!
MS INFORMATICA - Projeto Marinner
- Editado Márcio Silva Lima sexta-feira, 8 de maio de 2015 16:36
-
-
Não tem problema, meu jovem.
Estamos todos aqui para aprender uns com os outros. O tempo nos aperfeiçoa e nos mostra mais tempo para aprendermos mais e mais. Por isso que existe o Fórum.
Aqui está como iras inserir o detalhe que te passei no outro comentário.
Espero que consigas, amigo! Boa sorte.
MS INFORMATICA - Projeto Marinner
-
JRJoppert,
a instrução "FileSearch" foi removida, por isso o erro. Por favor, teste o código abaixo e veja se funciona:
Sub Salvar() Dim n As Integer Dim sCaminho As String 'Defina a Pasta aqui sCaminho = "F:\usuarios\cqf\AUDITORIA\RNCs 2008\ACIARIA" Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFolder = oFSO.GetFolder(sCaminho) 'Estrutura da Pasta de origem For Each sItemFile In oFolder.Files 'Percorrendo toda a pasta If sItemFile.Name Like "RNC*" Then n = n + 1 End If Next ActiveDocument.SaveAs sCaminho & "RNC" & n + 1 & ".docm" MsgBox "Fim da Execução. Arquivo Salvo!", vbInformation End Sub
Abraço.
Filipe Magno
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 11 de maio de 2015 13:49
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 12 de maio de 2015 21:26
-
-
-
Esclareço que quando disse não haver conseguido, me referi à solução dada pela MS INFORMATICA, certamente pela minha total ignorância em VBA. A solução dada por Felipe, no entanto, como já dito, foi perfeita. Meus sinceros agradecimentos a todos.
JRJoppert