2017-10-10 182 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有什麼意義?這似乎毫無意義。