2017-10-10 163 views
0

我想要做的是运行一个VBA文件,打开一个Excel工作簿,用输入框启动宏,在该输入框中输入文本,按下回车,然后宏继续运行。SendKeys到Excel输入框(VBA)

我已到目前为止,这是用“的GetData”是宏的名称:

strPath = "C:\Users\Test\Desktop\ExcelFile.xlsm" 
strMacro = "GetData" 

Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True 

Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro 

objApp.SendKeys "Sample" 
objApp.SendKeys "~" 

我遇到的问题是,的SendKeys不激活之后才宏运行完成。输入框出现后,它会一直呆在那里,直到我关闭它。这导致宏不做任何事情,然后单词“Sample”被输入到单元格中,然后按下“Enter”键。

我的问题是:我如何让SendKeys在输入框中输入值?

+0

你可以把宏'strmacro'改成像strfunction这样的函数(inputboxtext as string),然后当调用函数发送你想要的输入框中的文本?当然,不再需要输入框了。 – Max

回答

0

你不上InputBox使用SendKeys,你只需指定一个默认值:

x = InputBox("Prompt", "Title", "Default Value") 

如果不能满足您的需求,那么它变得有点复杂。让调用程序在调用宏之前将值写入文件,然后让该宏将该文件读入一个变量,然后InputBox将其用作其默认值。

但是,如果它也是“按回车”,那么首先使用InputBox有什么意义?这似乎毫无意义。