Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vba script hangs at Workbook.Close

Tags:

excel

vba

I am trying to write a hello world application in Visual Basic for Applications, namely, to modify a cell in an Excel sheet. Here it is:

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

When running, Excel hangs and I cannot stop the script running, only kill the excel process. Debugging it, it hangs at the Workbook.Close line. What is the problem with that line?

like image 537
Gergely Avatar asked Dec 10 '12 08:12

Gergely


1 Answers

The problem is that you are not giving Excel enough time to finish it's operations. Usually a DoEvents will solve the problem. Also to avoid confusion, you might want to name your variable as `wbk' instead of '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
like image 170
Siddharth Rout Avatar answered Nov 15 '22 09:11

Siddharth Rout