vba脚本挂在Workbook.Close

我正在尝试在Visual Basic for Applications中编写一个hello world应用程序,即修改Excel工作表中的单元格。 这里是:

Sub hello() Dim obj As Object Dim Workbook As Object Set obj = CreateObject("Excel.Application") Set Workbook = obj.Workbooks.Open("C:\Users\gbuday\Desktop\Oktatás\Excel\start.xlsx") Workbook.Worksheets("Munka1").Range("B3") = "Hello World!" Workbook.Close Set Workbook = Nothing Set obj = Nothing End Sub 

运行时,Excel挂起,我不能停止脚本运行,只杀死Excel进程。 debugging它,它挂在Workbook.Close行。 那条线有什么问题?

问题是你没有给Excel足够的时间来完成它的操作。 通常一个DoEvents将解决这个问题。 另外为了避免混淆,你可能想把你的variables命名为“wbk”而不是“Workbook”

 Sub hello() Dim obj As Object, wbk As Object Set obj = CreateObject("Excel.Application") Set wbk = obj.Workbooks.Open("C:\Users\gbuday\Desktop\Oktatás\Excel\start.xlsx") wbk.Worksheets("Munka1").Range("B3") = "Hello World!" DoEvents '~~> Change True to False if you do not want to save wbk.Close SaveChanges:=True Set wbk = Nothing: Set obj = Nothing End Sub 

它应该是

 Workbooks.Close 

我也认为“Workbook”是一个保留字,你应该使用“wb”之类的东西来代替。

 Dim wb As Workbook