避免工作簿的副作用。打开一个.csv文件

我用vba打开.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") 

似乎正在工作的唯一解决方法是为每个工作表的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 

调用.xlsm文件将在打开.csv文件时重新计算,而不是在打开.xls文件时。 在打开之前将.csv文件重命名为.xls将会阻止重新计算,并仍照常打开文件。

 Sub open_csv_file() Name "c:\test.csv" As "c:\test.xls" Workbooks.Open "c:\test.xls", Format:=2 End Sub 

应该添加一些error handling来处理新文件名已经存在的情况。

在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