Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por juauvitor
Posts
#17858
Boa tarde Galera,
sou novo aqui no fórum e me chamo João Vitor, prazer,
Tenho uma dúvida que está me matando, não acho resposta em lugar algum para minha dúvida, seguinte:

Em uma planilha, ao abrir ela por meio de um atalho de teclados, a planilha tira print apenas da janela ativa (no meu sistema de trabalho é super útil). Porém, quando eu preciso acionar novamente o código, o excel não reconhece que o Word está aberto e abre um novo word e refaz a colagem.

pra ser mais específico, queria que o código reconhecesse que o word está aberto e colasse o print logo abaixo do outro. no mesmo trabalho de Word que já foi iniciado.
Editado pela última vez por juauvitor em 05 Dez 2016 às 15:32, em um total de 1 vez.
Avatar do usuário
Por alexandrevba
Avatar
#17863
Boa tarde!!

Talvez ajuda a clarear um pouco.

Não testado!
Código: Selecionar todos
Function DocOpen(strDocName As String) As Boolean
    Dim appWord As Object
    Dim wdDoc As Object
    On Error Resume Next
    Set appWord = GetObject(, "Word.Application")
    If Err <> 0 Then GoTo errorhandler
     
    With appWord
        Set wdDoc = appWord.Documents(strDocName)
        If Err <> 0 Then GoTo errorhandler
    End With
    DocOpen = True
    Exit Function
errorhandler:
     
End Function
Código: Selecionar todos
Sub testeAleVBA()
    If DocOpen("Document1.doc") <> True Then
        MsgBox "AleVBA"
    End If
End Sub
Att
Por juauvitor
Posts
#17866
Olá Alexandre, obrigadão pela dica, mas pode me auxiliar a colocar isso no meu código? Eu estou aprendendo VBA de forma auto de data, e Function eu ainda não faço ideia de como usar, domino algumas funções apenas, mas nada muito extenso.
Fico grato pela ajuda até agora e aguardo algum retorno referente.
Avatar do usuário
Por alexandrevba
Avatar
#17868
Boa tarde!

No meu exemplo a função foi invocada pelo nome
Código: Selecionar todos
DocOpen()
na linha
Código: Selecionar todos
If DocOpen("Document1.doc") <> True Then
faça isso na sua sub rotina.

Att
Por juauvitor
Posts
#17923
Alexandre, coloquei o código na minha planilha, ela está aqui de forma já modificada, mas não consegui concluir. Pode por favor revisar e me dar uma dica?
Antes ela abria o Word toda vez que o código era acionado, porém, quero que o apenas o código seja aplicado caso o Word tenha sido aberto, sem abrir ele novamente como um novo trabalho.

Segue a planilha para analise, grato desde já.
Pasta1.rar
Você não está autorizado a ver ou baixar esse anexo.
Por juauvitor
Posts
#18115
Boa tarde,

Cheguei no seguinte código:
Código: Selecionar todos
Sub incon()
Application.WindowState = xlMinimized
Application.Wait (DateAdd("s", 1, Now()))
Call PrintTheScreen1
 If DocOpen("Doc1.docx") <> True Then
        Application.Wait (DateAdd("s", 1, Now()))
Shell "C:\Program Files\Microsoft Office 15\root\office15\winword.exe", vbNormalFocus
Application.Wait (DateAdd("s", 2, Now()))
SendKeys "{ENTER}"
SendKeys "Inconsistências filial 1"
SendKeys "{ENTER}"
SendKeys "^v"
SendKeys "{NUMLOCK}"
Application.Visible = True

ElseIf DocOpen("Doc1.docx") <> False Then
Call PrintTheScreen1
SendKeys "{ENTER}"
SendKeys "Inconsistências filial 2"
SendKeys "{ENTER}"
SendKeys "^v"
SendKeys "{NUMLOCK}"
Application.Visible = True
End If
End Sub

Sub PrintTheScreen1()
Application.SendKeys "(%{1068})"
DoEvents
End Sub

Function DocOpen(strDocName As String) As Boolean
    Dim appWord As Object
    Dim wdDoc As Object
    On Error Resume Next
    Set appWord = GetObject(, "Word.Application")
    If Err <> 0 Then GoTo errorhandler
     
    With appWord
        Set wdDoc = appWord.Documents(strDocName)
        If Err <> 0 Then GoTo errorhandler
    End With
    DocOpen = True
    Exit Function
errorhandler:
     
End Function
Porém meu código n está funcionando na segunda parte, que deveria abrir o documento do Word já em uso e continuar parte do percurso.

Alguém será que consegue ajudar? fico no aguardo, abraço.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord