Ir ao conteúdo

Posts recomendados

Postado

Bom dia.

 

Quando coloco o seguinte código no excel VBA, para abrir um documento Word, 

 

Dim appWORD As WORD.Application
Dim DOC As WORD.Document

Set appWORD = New WORD.Application
appWORD.Visible = True

Set DOC = WORD.Documents.Open("C:\Users\miguel.martins\Desktop\PJM\PJM\Novos Modelos\Meus\Correspondência\Geral - Modelos\010 Ofício - Modelo1.doc")

 

obtenho o erro “aguardando que outro aplicativo conclua a ação OLE".

 

Alguém sabe como posso solucionar isto? O Excel que estou a usar é o 2007.

 

Antes de mais, muito obrigado pela ajuda.

Postado
4 horas atrás, Edson Luiz Branco disse:

Set DOC = appWORD.Documents.Open...

 

Só mais uma questão:

 

Se eu executar a macro de abertura de documento word duas vezes seguidas sem fechar o primeiro documento word aberto, o Word pergunta-me se pretendo abrir um ficheiro apenas de leitura. Se eu não selecionar nenhuma opção e fechar essa janela, o programa do excel dá-me um erro, pois não programei essa possibilidade.

 

Será que me consegue indicar um código que feche automaticamente o documento word aberto, sempre que a macro é executada segunda vez com o primeiro documento ainda aberto?

 

Cumprimentos

Postado

Veja:

Sub substitute()  
'  
' substitute Macro 
' 
' Note: In Excel VBA, in tools -> references: Enable Microsoft Word 12.0 0bject  
'  
Dim FindStr As String  
Dim ReplaceStr As String  
Dim path_src As String  
Dim path_dest As String  

' Define word object  
Dim WA As Object  

Dim cs As Worksheet  
Dim Idx As Integer  

' Data worksheet "Data" col A find text, Col B replace text  
Set cs = ActiveWorkbook.Worksheets("Data")  

Set WA = CreateObject("Word.Application")  

WA.Visible = True  

path_src = "C:\Temp\data.docx"  
path_dest = "C:\Temp\data_out.docx"  

WA.documents.Open (path_src)  

' Set word object active  
WA.Activate  

' Optional, use Idx to limit loop iterations  
Idx = 1  
Do While ((Len(cs.Cells(Idx, 1).Value) > 1) And (Idx < 100))  
'  
  FindStr = cs.Cells(Idx, 1).Value  
  ReplaceStr = cs.Cells(Idx, 2).Value  
  With WA  
    .Selection.HomeKey Unit:=wdStory  
    .Selection.Find.ClearFormatting  
    .Selection.Find.Replacement.ClearFormatting  
    With .Selection.Find  
        .Text = FindStr  
        .Replacement.Text = ReplaceStr  
        .Forward = True  
        .Wrap = wdFindAsk  
        .Format = False  
        .MatchCase = False  
        .MatchWholeWord = False  
        .MatchWildcards = False  
        .MatchSoundsLike = False  
        .MatchAllWordForms = False  
    End With  

    .Selection.Find.Execute Replace:=wdReplaceAll  
   End With  
   Idx = Idx + 1  
Loop  
WA.Application.ActiveDocument.SaveAs path_dest  
WA.documents.Close  

Set WA = Nothing  

End Sub  

 

Postado

@Gabriel.Rizzatto Antes de mais, obrigado pela ajuda... 

 

Continua a dar-me o mesmo problema.

 

Se eu substituir o código integralmente, dá-me o run-time error "9" na linha 

 

Set cs = ActiveWorkbook.Worksheets("Data")...

 

De certeza que este código é para aquilo que pretendo? Vou explicar melhor:

 

Eu criei uma macro que me abre um documento Word, já preenchido. Se eu clicar no botão da macro uma segunda vez sem fechar o documento aberto, o Word pergunta-me se pretendo abrir uma cópia de leitura, uma vez que o documento original já se encontra aberto. Se eu não selecionar nenhuma opção e fechar essa janela no "x", o meu programa dá erro.

 

Assim, eu pretendo um código que feche automaticamente o primeiro documento aberto após execuções consecutivas da mesma macro, para que este conflito não ocorra.

 

Cumprimentos e obrigado!

 

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!