none
Salvar documento do Word em VBA RRS feed

  • 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
    sexta-feira, 8 de maio de 2015 15:55

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

    sábado, 9 de maio de 2015 13:25

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

    e

    Dim 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


    sexta-feira, 8 de maio de 2015 16:36
  • Obrigado pela atenção. Mas, como eu disse, nada entendo de VBA. Seria então possível você aplicar a solução dada à macro que enviei? Obrigado e desculpe pelo abuso, que resulta da minha total ignorância em VBA.
    sexta-feira, 8 de maio de 2015 17:03
  • 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

    sexta-feira, 8 de maio de 2015 22:54
  • 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

    sábado, 9 de maio de 2015 13:25
  • Prezados amigos

    Obrigado pela atenção. Felipe. Sua macro foi perfeita. Rodou perfeitamente. Desde já os meus agradecimentos.

    segunda-feira, 11 de maio de 2015 21:40
  • Infelizmente não consegui. Mas deixo o meu agradecimento tenha atenção. JRJoppert
    segunda-feira, 11 de maio de 2015 21:41
  • 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 

    terça-feira, 12 de maio de 2015 13:49