Notifications
Clear all

Função IF, Else

10 Posts
3 Usuários
0 Reactions
1,580 Visualizações
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Boa tarde,

Tenho uma planilha que depende de situações para funcionar o código, e de tanto pesquisar e tentar cheguei em uma conclusão,
Se eu conseguir fazer com que a planilha execute uma macro ao abrir, e outra caso já esteja aberta (pelo mesmo chamado) meus 30 dias de problema estariam terminados...

Uma função que reconheça a planilha aberta e que reage de forma diferente no mesmo chamado. Alguma dica? qualquer ajuda será muito bem vinda.

 
Postado : 14/12/2016 2:12 pm
(@mprudencio)
Posts: 0
New Member
 

Nao entendi...

 
Postado : 14/12/2016 2:23 pm
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Exemplo bem bobo mesmo:

Sub ETC...( )
-Meu código quando a planilha abre-
If (Planilha já está aberta) Then
-Outro código com a planilha já aberta, porém, outra vez utilizada a macro-
End If

Tentei explicar assim, quero que a planilha, ao abrir faça um código, e já aberta, caso eu faça o chamado, gere outra situação, outro código.

Grato pela atenção.

 
Postado : 14/12/2016 2:30 pm
(@mprudencio)
Posts: 0
New Member
 

Nao sei se entendi bem mas acho que vc esta complicando o simples

A planilha quando abre executa o codigo no workbook open

Se a planilha estiver aberta coloque o codigo em um botao. ou no evento change.

 
Postado : 14/12/2016 2:44 pm
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Olha MPrudencio,

Falando bem a verdade, a coisa é bem mais complexa, eu tive essa ideia agora do nada mas pelo visto não tem nem pé nem cabeça mesmo, e não se encaixaria a minha fórmula.
Depois de muitas tentativas, cheguei em um código que tira print da tela ativa e cola no word, como quero deixar a planilha aberta enquanto trabalho, queria tirar mais prints e ir colando no mesmo Docx, no mesmo Word.
Mas os códigos sempre abrem um novo documento e repetem o processo desde o início.
Segue a planilha, é bem complexo e sei que é apenas um detalhe que vai me salvar. segue o desafio kkk:

 
Postado : 14/12/2016 2:58 pm
(@mprudencio)
Posts: 0
New Member
 

Por pura curiosidade pq vc tira o print da tela e cola no word?

Como eu disse anteriormente vc deve estar complicando o simples.

Acho quase que esta tentando reinventar a roda

 
Postado : 14/12/2016 3:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não abri o anexo, mas, se entendi bem, você quer verificar se o documento do Word em que cola os prints está aberto.

Eu uso os códigos abaixo para fazer esta análise.
Códigos encontrados na internet, que não saberia a quem dar os créditos no momento.

É apenas um exemplo, pois executo outras ações, portanto, estou incluindo apenas a verificação se o arquivo (DocWord.docx) está aberto e, caso negativo, o abra.

Quando chegar em casa, analiso o seu anexo.

Sub TestFileOpened()

If IsFileOpen("C:CDocWord.docx") Then

MsgBox "Arquivo em uso!"

Else

MsgBox "Arquivo não está em uso!"

Call Open_Word_Document

End If

End Sub

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Sub Open_Word_Document()

Dim objWord As Object

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

objWord.Documents.Open "C:CDocWord.docx"

End Sub

 
Postado : 14/12/2016 4:38 pm
(@juauvitor)
Posts: 0
New Member
Topic starter
 

MPrudencio,

É que no meu serviço tenho que tirar uns 10 prints com o titulo padrão e colar no Word de forma organizada e etc... Se eu conseguir uma macro que faça isso por mim, o trabalho de 10min. vai se tornar 03 segundos me entende?

Edson, valeu mesmo, cheguei em grande parte da minha solução, obrigado, mas dá uma olhada no código a seguir:

Sub TestFileOpened()

If IsFileOpen("C:Program FilesMicrosoft Office 15rootoffice15winword.exe") Then

MsgBox "Arquivo em uso!" 'como eu coloco pro print ir pra mesmo documento do word já aberto?

Else

Application.WindowState = xlMinimized
Application.Wait (DateAdd("s", 1, Now()))
Call PrintTheScreen1
        Application.Wait (DateAdd("s", 1, Now()))
Shell "C:Program FilesMicrosoft Office 15rootoffice15winword.exe", vbNormalFocus
Application.Wait (DateAdd("s", 2, Now()))
SendKeys "{ENTER}"
SendKeys "Filial "
SendKeys "{ENTER}"
SendKeys "^v"
SendKeys "{NUMLOCK}"
Application.Visible = True

End If

End Sub

Falta só aquele dificil detalhe, do código reconhecer o arquivo aberto e continuar parte do serviço no mesmo documento, sem abrir um novo. Falta pouco, e fico grato pela ajuda até agora. ;)

Segue arquivo completo em anexo, atualizado.

 
Postado : 15/12/2016 4:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Inclua este passo, porém, testei com apenas uma instância do Word ativa

Dim wdApp As Object

On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
wdApp.Activate

 
Postado : 15/12/2016 5:08 am
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Olá senhores, passando pra divulgar que resolvi,

coloquei uma condição com clique do mouse e alguns comando de SendKeys no botão iniciar, onde salvei um arquivo "Doc1.Docx" e caso eu continue com a mesma macro, ele abre se estiver fechado e continua o trabalho se estiver aberto.
Obrigadão, segue o anexo para concluir.

 
Postado : 16/12/2016 10:04 am