2017-04-17 54 views
0

我有一个应用程序将用于多个电子表格和命名格式总是会不同的项目。他们希望我使用文件→从菜单打开以打开一个窗口,在其中他们从桌面选择电子表格。我已经获得了VBScript代码,但我无法激活工作簿来收集或输入数据。VBScript激活打开没有URL的Excel电子表格

WShell.SendKeys "%FO" 

objExcel.Wait (Now + TimeSerial(0, 0, 3)) 

For i = 1 to 3 
    WShell.SendKeys "+{TAB}" 
Next 

WShell.SendKeys "{HOME}" 
WShell.SendKeys "D" 
WShell.SendKeys "{ENTER}" 

MsgBox "Please select the file you want to open, then click OK to continue.", _ 
    vbOKOnly+vbSystemModal, "Open File" 

WShell.SendKeys "{ENTER}" 

Set objWorkbook = ThisWorkbook 

objWorkbook.Sheets(1).Activate 
objWorkbook.Sheets(1).Cells(1, 1).Value = "Hello" 

我想要Set objWorkbook = ThisWorkbook激活当前工作簿,而不必使用其名称或URL。有人可以帮我弄这个吗?

+2

请参阅:https://msdn.microsoft.com/en-us/library/office/ff836226.aspx –

+0

斯科特说什么。无论何时您的解决方案涉及“SendKeys”,您都有可能在某处出现错误转向,需要返回并重新构建解决方案。 –

+0

谢谢你们,但是当我在Scott的评论中使用链接时,当它转到'Next lngCount'时,我在'For ... Next'循环中遇到错误。我认为必须有更多的内容,或者是因为当我将VBScript用作Macro Express Pro中的外部脚本时,它是一种VBA解决方案。 – Lou

回答

0

我想出了如何让它工作。我需要循环浏览任何打开的Excel电子表格,看看我刚刚打开的电子表格是否可用。 注意:这仅适用于打开一个电子表格,这是打开对话框打开的电子表格。

WShell.SendKeys "%FO" 

objExcel.Wait (Now + TimeSerial(0, 0, 3)) 

For i = 1 to 3 
    WShell.SendKeys "+{TAB}" 
Next 

WShell.SendKeys "{HOME}" 
WShell.SendKeys "D" 
WShell.SendKeys "{ENTER}" 

MsgBox "Please select the file you want to open, then click OK to continue.", _ 
vbOKOnly+vbSystemModal, "Open File" 

WShell.SendKeys "{ENTER}" 

On Error Resume Next 
    Set objExcel = GetObject(,"Excel.Application") 
    If Err.Number <> 0 Then ShowError ("Macro failed to get Excel object.") 
On Error GoTo 0 

objExcel.Wait (Now + TimeSerial(0, 0, 1)) 

For Each WB In objExcel.Workbooks 
    Set objWorkbook = WB 
Next 

objWorkbook.Sheets(1).Activate 
objWorkbook.Sheets(1).Cells(1, 1).Value = "Hello" 

这将打开电子表格,并在A1单元格中输入“你好”。

相关问题