2015-09-19 34 views
0

我从临时Excel工作簿运行VBA它将执行的操作是“在另一个路径中打开启用宏的Excel并将值从单元格C3中提取到临时Excel”。但问题是,每当我从该路径打开Excel工作簿时,它将显示两个框。跳过输入框或任何错误消息

1)一些错误(我不知道,错误的名字,因为宏密码在Excel中保护的文件,否则建议如何发送“回车”键,跳过这个错误。)

2)输入框(这种情况下,我只需要输入,就是这样。)

有没有什么办法从其他关闭的工作簿中获取数据验证下拉值而不打开它。

Sub macro1() 
Dim wrk As Workbook 
Set wrk = Workbooks.Open("D:\Test\Test.xlsm") Workbooks("Book1.xlsm").Activate 
ActiveSheet.Range("h10") = wrk.Sheets(1).Range("c2").Validation.Formula1 wrk.Close SaveChanges:=False 
End Sub 

上面是我现在实际使用的代码。但是这个代码将打开文件。我需要值而不打开文件。

+0

也许看看[SendKeys](https://msdn.microsoft.com/en-us/library/aa266279(v = vs.60).aspx)。 – Jeeped

+0

你能分享这两个截图吗? [Here](http://stackoverflow.com/questions/16174469/unprotect-vbproject-from-vb-code/16176557#16176557)是处理这些盒子的可靠方法。它使用的API而不是的SendKeys –

+0

子宏1() 昏暗WRK作为工作簿 集WRK = Workbooks.Open( “d:\测试\ Test.xlsm”)。 工作簿( “Book1.xlsm”)激活 ActiveSheet。范围(“h10”)= wrk.Sheets(1).Range(“c2”)。Validation.Formula1 wrk.Close SaveChanges:= False End Sub 上面的代码我在临时文件中使用它。当试图打开“Test.xlsm”时,它会显示我在问题中提到的2个框。 –

回答

0

尝试

Dim xlApp, xlBook, xlSht, my_file 
    my_file= Application.GetOpenFilename 
If my_file = "False" Then Exit Sub 

Set xlApp = CreateObject("Excel.Application") 
    xlApp.EnableEvents = False 

Set xlBook = xlApp.Workbooks.Open(my_file) 
Set xlSht = xlApp.ActiveSheet 

'YOUR CODE HERE 

xlBook.Close False 
xlApp.Quit 
Set xlSht = Nothing 
Set xlBook = Nothing 
Set xlApp = Nothing 

的关键是xlApp.EnableEvents = False,这将禁用其他工作簿中的所有宏。

希望这会有所帮助。

+0

请参阅更改后的答案。 –

+0

**谢谢Gedeon Kheboyan。**它为我工作。但是我**在**家**中测试了这个案例。但真正的工作是我需要在我的**官方文件**中测试**这个案例**,这是我的**办公室**。 在我的**卷** **测试**中,它跳过了输入框。这是一流的。 但是在我的** real ** **测试**中,它会在文件打开时显示1个错误消息和1个输入框。所以明天我需要检查这个宏。 –

+0

不客气。此代码应该跳过第二个工作簿上的任何VBA代码。所以,我认为它不会显示任何错误消息和输入框。 –