我使用VBA來打開一個.csv文件避免副作用workbooks.open .csv文件
Sub open_csv_file()
Workbooks.Open("c:\test.csv")
ActiveWorkbook.Close
End Sub
它的工作原理,但有一個副作用:CSV文件打開時,原.xlsm文件開始重新計算。
有沒有辦法避免的副作用?
ps。我已經將Excel計算設置爲手動。
我使用VBA來打開一個.csv文件避免副作用workbooks.open .csv文件
Sub open_csv_file()
Workbooks.Open("c:\test.csv")
ActiveWorkbook.Close
End Sub
它的工作原理,但有一個副作用:CSV文件打開時,原.xlsm文件開始重新計算。
有沒有辦法避免的副作用?
ps。我已經將Excel計算設置爲手動。
一種方法是打開文件與Excel的其他實例:
Dim app As Excel.Application
Dim csv As Workbook
Set app = New Excel.Application
app.Visible = True
Set csv = app.Workbooks.Open("c:\test.csv")
Workbooks.Open前加入這一行:
Application.Calculation = xlCalculateManual
要手動計算,按F9鍵。
或者
避免計算Sub open_csv_file()
Application.Calculation = xlCalculateManual
Workbooks.Open("c:\test.csv")
ActiveWorkbook.Close
Application.Calculation = xlCalculateAutomatic
End Sub
打開.csv文件時,調用.XLSM文件重新計算,但不是在打開.xls文件時。打開之前將.csv文件重命名爲.xls將阻止重新計算,並仍照常打開文件。
Sub open_csv_file()
Name "c:\test.csv" As "c:\test.xls"
Workbooks.Open "c:\test.xls", Format:=2
End Sub
應該添加一些錯誤處理來處理新文件名已經存在的情況。
,這似乎是工作的唯一解決方法是Worksheet.EnableCalculation設置爲False每個工作表。
試試這個
Sub open_csv_file()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.EnableCalculation = False
Next ws
Workbooks.Open ("c:\users\test\desktop\test.csv")
ActiveWorkbook.Close
End Sub
沒有它不工作。之前,所以我已經在excel選項中將計算設置爲手動。 – athos
你已經編輯了你的問題,你將計算設置爲手動後,我回答了你原來的問題。那麼爲什麼downvote?根據我當時的瞭解,我給了你一個誠實的答案。 – peakpeak
我測試了一個帶有複雜公式的大型excel文件,它不起作用。 – athos