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

Excel 避免工作簿的副作用。打开一个.csv文件,excel,vba,csv,Excel,Vba,Csv,我正在使用vba打开一个.csv文件 Sub open_csv_file() Workbooks.Open("c:\test.csv") ActiveWorkbook.Close End Sub 它可以工作,但有一个副作用:当csv文件打开时,原始的.xlsm文件开始重新计算 有没有办法避免副作用 另外,我已经将Excel计算设置为手动。避免计算的一种方法是使用另一个Excel实例打开文件: Dim app As Excel.Application Di

我正在使用vba打开一个.csv文件

Sub open_csv_file()        
    Workbooks.Open("c:\test.csv")
    ActiveWorkbook.Close    
End Sub
它可以工作,但有一个副作用:当csv文件打开时,原始的.xlsm文件开始重新计算

有没有办法避免副作用


另外,我已经将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")

避免计算的一种方法是使用另一个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")

在打开.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

应添加一些错误处理,以处理新文件名已存在的情况。

在打开.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

应添加一些错误处理,以处理新文件名已存在的情况。

唯一有效的解决方法是为每个工作表将sheet.enableColution设置为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

唯一似乎有效的解决方法是为每个工作表将Workplace.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

是的,它有效。但是,为什么必须将每个工作表enablecalculation设置为false?因为我已经设置了excel。神秘的excel…这似乎是一个已知的问题,它与excel的易变行为有关。是的,它是有效的。但是,为什么必须将每个工作表enablecalculation设置为false?因为我已经设置了excel。神秘的excel…这似乎是一个已知的问题,它与excel的易变行为有关。它并不完美——文件已打开,不会触发重新计算,但所有行都只有一列,逗号不再用作分隔符…事实上,我的解决方案仅适用于制表符分隔的文件(这是我通常看到的保存为.csv文件的内容)。我已更新了解决方案,以使用真正的逗号分隔值文件。“格式:=2”表示在打开时使用逗号作为分隔符。这并不完美——文件已打开,不会触发重新计算,但所有行都只有一列,逗号不再用作分隔符……事实上,我的解决方案仅适用于制表符分隔的文件(这是我通常看到的另存为.csv文件)。我已更新我的解决方案以使用真正的逗号分隔值文件。“格式:=2”表示在打开时使用逗号作为分隔符。