Ativar botão em uma planilha do Excel Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

manbat42
Posts: 22
Joined: 04 Nov 2017, 11:25

Ativar botão em uma planilha do Excel

30 Aug 2019, 11:15

As minhas saudações para todos.
Estou a tentar desenvolver um pequeno script que pretende, o seguinte:
Depois de ter clicado num CommandButton (ActiveX) que coloquei numa folha de Excel, é despoletada uma Macro que verifica dados existentes numa determinada célula da folha de Excel e, se o conteúdo da célula o permitir, chama um executável feito em AutoHotKey.
Este executável desenvolve algumas operações na folha de Excel e, antes de terminar a execução, era minha intenção clicar, automaticamente, no CommandButton para executar, novamente, a macro.
O meu problema é que não sei como identificar o CommandButton nem que comando(s) usar para clicar nele a partir do script.
Alguém pode ajudar?

Code: Select all

#NoEnv
;#Warn
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance off
SetTitleMatchMode, 2

caminho := A_ScriptDir

Sleep, 200

ficheiro := "Experiencia - Excel"

WinWait, %ficheiro%, 
IfWinNotActive, %ficheiro%, , WinActivate, %ficheiro%, 
WinWaitActive, %ficheiro%, 
Xl := ComObjActive("Excel.Application")

StatusBarWait , Pronto

linha := Xl.Range("D1").Value
StringLeft, linha, linha, (StrLen(linha)-7)
celula := coluna . linha
coluna:= "C"
celula := coluna . linha
Xl.Range(celula).Value := mensagem
Sleep, 100
Xl.Range("D1").Value ++

ControlClick, ("FAZER"), %ficheiro% ;Doesn't work
SendMessage, 0x0111,CommandButton.("FAZER") ;Doesn't work
Xl.ActiveSheet.OLEObjects.CommandButton("FAZER").Click() ;Doesn't work - Error
Em anexo o ficheiro excel que uso para a experiência.
Toda a ajuda é apreciada.

Saúde e bem-estar para todos.
Attachments
Experiencia.ahk
(768 Bytes) Downloaded 84 times

[The extension xlsm has been deactivated and can no longer be displayed.]

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re:

09 Sep 2019, 08:05

Bom dia Manbat42.

Infelizmente estou impossibilitado de testar códigos Microsoft Excel no momento, pois meu computador é da empresa em que trabalho e recentemente trocamos para o LibreOffice.

Mas aqui vai uma dica: A ferramenta gravar macros do Excel pode ser usada para se ter uma ideia do código a ser escrito. Basta você clicar para gravar uma macro, executar a ação desejada (clicar no botão), parar a gravação e salvar a macro. Depois, você pode consultar a macro gravada e clicando em editar, visualizar o código VBA correspondente.

O código VBA não é exatamente igual ao código que você escreverá no AutoHotkey, mas pelo menos te ajuda em saber quais elementos você deverá usar (por exemplo, ele vai te mostrar se aquela ação foi feita acessando uma propriedade, ou chamando uma função ou qual o nome do objeto acionado).

Na internet, eu encontrei uma página que alega que você pode ativar o botão mudando o valor da propriedade Value dele para true. Pela simplicidade, recomendo testar.

CommandButton1.Value := True

No caso do botão que você criou, pode ser que o nome não seja CommandButton1, então se você testar e não funcionar, vale a pena usar aquela dica do gravador de macros para encontrar o nome correto. Também não deve esquecer que no AutoHotkey a cadeia inteira deve ser escrita em todos os comandos (desde Xl).
Guest

Re:

09 Sep 2019, 13:53

Obrigado Gio. Vou testar.
manbat42
Posts: 22
Joined: 04 Nov 2017, 11:25

Re: Ativar botão em uma planilha do Excel  Topic is solved

21 Sep 2019, 19:01

Boa noite para todos.

Encontrei a solução para o meu problema

Xl := ComObjActive("Excel.Application")
Xl.Run(xlsfile "Sub_Name")

Obrigado especialmente ao Gio pelo espírito colaborativo.

Bem hajam!

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 46 guests