我正在使用vba打开.csv文件
loggedIn
它有效但有副作用:当打开csv文件时,原始.xlsm文件开始重新计算。
有没有办法避免副作用?
PS。我已经将Excel计算设置为手动。
答案 0 :(得分:4)
避免计算的一种方法是使用另一个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")
答案 1 :(得分:2)
似乎唯一有效的解决方法是将每个工作表的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
答案 2 :(得分:1)
调用.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
应该添加一些错误处理来处理新文件名已经存在的情况。