Página 1 de 1
Código SendKeys
Enviado: 02 Dez 2016 às 14:17
por juauvitor
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.
Re: Código SendKeys
Enviado: 02 Dez 2016 às 15:38
por alexandrevba
Boa tarde!!
Talvez ajuda a clarear um pouco.
Não testado!
Código: Selecionar todosFunction 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 todosSub testeAleVBA()
If DocOpen("Document1.doc") <> True Then
MsgBox "AleVBA"
End If
End Sub
Att
Código SendKeys
Enviado: 02 Dez 2016 às 16:25
por juauvitor
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.
Re: Código SendKeys
Enviado: 02 Dez 2016 às 16:47
por alexandrevba
Boa tarde!
No meu exemplo a função foi invocada pelo nome
na linha
faça isso na sua sub rotina.
Att
Código SendKeys
Enviado: 05 Dez 2016 às 12:10
por juauvitor
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
Re: Código SendKeys
Enviado: 12 Dez 2016 às 16:51
por juauvitor
Boa tarde,
Cheguei no seguinte código:
Código: Selecionar todosSub 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.