none
VBA - Macro Word - Inserção de Cabeçalho Personalizado. RRS feed

  • Pergunta

  • Prezados Boa Noite,

    Estou tentando criar uma Macro para inserção automática de um cabeçalho personalizado que fiz. Copiei o arquivo Building Blocks.dotx e Built-In Building Blocks.dotx em um diretório de rede para chamá-los a partir da macro. Acontece que a macro só executa no diretório padrão (D:\Usuários\nome do usuário\AppData\Roaming\Microsoft\Document Building Blocks\1046\15\) não reconhecendo o arquivo copiado do diretório da rede (\\10.71.0.5\Scripts\scripts\Word\). Abaixo podemos fazer uma comparação melhor:

    a) O que funciona:

    Application.Templates( _
            "D:\Usuários\alcio.britto\AppData\Roaming\Microsoft\Document Building Blocks\1046\15\Building Blocks.dotx" _
            ).BuildingBlockEntries("Carimbo Numerador CJU/BA e Pag").Insert Where:= _
            Selection.Range, RichText:=True

    b) O que não funciona:

    Application.Templates( _
            "\10.71.0.5\Scripts\scripts\Word\Building Blocks.dotx" _
            ).BuildingBlockEntries("Carimbo Numerador CJU/BA e Pag").Insert Where:= _
            Selection.Range, RichText:=True

    Acredito que tenha relação com o caminho do arquivo Building Blocks.dotx na rede, só que não sei como resolver isso.

    Agradeço se alguém me ajudar.

    ARBrasil 

    segunda-feira, 13 de janeiro de 2014 21:40

Todas as Respostas

  • ARBrasil,

    Provavelmente é permissão de acesso(Ler / executar; Modificar) à este diretório. 

    Verifique os acessos do seu usuário e dos arquivos ou sub-diretórios que estão dentro dele e que você pode utilizar.

    Veja abaixo um print-screen acessando a janela Propriedades de um diretório de rede:

    Se você puder, pelo menos para testar, conceda o acesso de "Controle Total" no diretório.

    Se foi útil na solução do seu problema, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 13 de janeiro de 2014 21:56
  • Obrigado Durval,

    Mas não resolveu. Aliás tem outro complicador, tentei rodar a mesma macro em outro documento (com o diretório padrão criado pelo gravador de macros) e acusou o mesmo erro:

    Erro em tempo de Execução '5941': o membro solicitado da coleção não existe.

    Fim um teste no meu computador colocando os arquivos na área de trabalho (desktop) e o problema se repetiu. Por gentileza, dê uma olhada no script completo para ver o que estou fazendo de errado, pois meu conhecimento é básico:

    Sub Teste()
    '
    ' Teste Macro
    '
    '
        If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
            ActiveWindow.Panes(2).Close
        End If
        If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
            ActivePane.View.Type = wdOutlineView Then
            ActiveWindow.ActivePane.View.Type = wdPrintView
        End If
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Application.Templates( _
            "C:\Users\nome do usuário\Desktop\Built-In Building Blocks.dotx" _
            ).BuildingBlockEntries("Animação (Página Ímpar)").Insert Where:=Selection _
            .Range, RichText:=True
        ActiveWindow.ActivePane.View.NextHeaderFooter
        If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
            ActiveWindow.Panes(2).Close
        End If
        If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
            ActivePane.View.Type = wdOutlineView Then
            ActiveWindow.ActivePane.View.Type = wdPrintView
        End If
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Application.Templates( _
            "C:\Users\Nome do Usuário\Desktop\Built-In Building Blocks.dotx" _
            ).BuildingBlockEntries(" Em Branco").Insert Where:=Selection.Range, _
            RichText:=True
        Selection.EndKey Unit:=wdStory
        Selection.Delete Unit:=wdCharacter, Count:=1
    End Sub

    Obs.: Nome do Usuário foi modificado por mim para este exemplo. Uma hipótese que suspeito é quanto a ativação do documento do word, no excel usamos uma propriedade worksheet.activate para fazer referência a um documento aberto.

    Abs.

    ARBrasil

    terça-feira, 14 de janeiro de 2014 14:30