6

Visual Basic for ApplicationsでHelloWorldアプリケーションを作成しようとしています。つまり、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プロセスを強制終了するだけです。それをデバッグすると、それはラインでハングしますWorkbook.Close。その行の問題は何ですか?

4

2 に答える 2

5

問題は、Excel の操作を完了するのに十分な時間を与えていないことです。通常は aDoEventsで問題が解決します。また、混乱を避けるために、変数の名前を「Workbook」ではなく「wbk」にすることもできます。

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
于 2012-12-10T08:38:24.697 に答える
1

そのはず

Workbooks.Close

また、「Workbook」は予約語なので、代わりに「wb」などを使用する必要があると思います。

Dim wb As Workbook
于 2012-12-10T08:43:29.827 に答える