簡體   English   中英

訪問VBA在遍歷Excel工作表時創建不合格的參考

[英]Access VBA creating unqualified reference while looping through excel sheets

我試圖遍歷Access中的Excel工作表,並以對Excel的無限制引用結尾。

Dim ExcelApp As Excel.Application
Dim ExcelWorkbook As Workbook
Dim ExcelWorkSheet As Worksheet
Dim i As Integer
Dim salesfile As String

Set ExcelApp = CreateObject("Excel.Application")

salesfile = "C:\filename"

Set ExcelWorkbook = ExcelApp.Workbooks.Open(salesfile)

With ExcelApp
  With ExcelWorkbook
    For Each ExcelWorkSheet In .Worksheets

     i = i + 1

    Next ExcelWorkSheet
  End With
End With

ExcelWorkbook.Save
ExcelWorkbook.Close
Set ExcelWorkSheet = Nothing
Set ExcelWorkbook = Nothing
Set ExcelApp = Nothing

我嘗試過移動資格,使用.quit等,但仍然以任務mananger中的那個excel.exe進程結束。 該問題明確存在於每個循環中。 如果我在那之前關門,那很好。

似乎您正在關閉excel工作簿,而不是excel本身。 如果您嘗試過類似的操作怎么辦

ExcelApp.Close

更改此:

i = i + 1

對此:

ExcelWorkSheet.Activate

在VBA中,即使將對象設置為Nothing ,資源也不會真正釋放,直到變量超出范圍為止,在這種情況下,這就是子/函數的結尾。 您可以從另一個子或函數內部調用此代碼,只要excel應用超出范圍時在本地聲明,它將從正在運行的進程中刪除。

埃里克·利珀特(Eric Lippert)的博客中有一個條目解釋了原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM