16

我的 excel 文件包含很多公式,因此我希望它在打开后立即将计算模式设置为手动。否则计算会自动开始,我必须等待几个小时。我找到了这个页面:

http://excel.tips.net/T001988_Forcing_Manual_Calculation_For_a_Workbook.html

这应该能够做到这一点。但是它不适用于我的 excel 文件。它指出在 VBA 代码的“ThisWorkbook”部分中,应输入以下代码:

Private Sub Workbook_Open()
    Application.Calculation = xlManual
    Application.CalculateBeforeSave = False
End Sub

正如所指出的,它在我的情况下不起作用。有人有替代解决方案吗?

4

1 回答 1

9

解决此问题的最佳方法是在与您要打开的文件相同的文件夹中创建一个名为“launcher.xlsm”的 Excel。在“启动器”文件中,将以下代码放入“工作簿”对象中,但将常量设置为TargetWBName您希望打开的文件的名称。

Private Const TargetWBName As String = "myworkbook.xlsx"

'// First, a function to tell us if the workbook is already open...
Function WorkbookOpen(WorkBookName As String) As Boolean
' returns TRUE if the workbook is open
    WorkbookOpen = False
    On Error GoTo WorkBookNotOpen
    If Len(Application.Workbooks(WorkBookName).Name) > 0 Then
        WorkbookOpen = True
        Exit Function
    End If
WorkBookNotOpen:
End Function

Private Sub Workbook_Open()
    'Check if our target workbook is open
    If WorkbookOpen(TargetWBName) = False Then
        'set calculation to manual
        Application.Calculation = xlCalculationManual
        Workbooks.Open ThisWorkbook.Path & "\" & TargetWBName
        DoEvents
        Me.Close False
    End If
End Sub

将常量“TargetWBName”设置为您希望打开的工作簿的名称。此代码将简单地将计算切换为手动,然后打开文件。然后启动器文件将自动关闭。*注意:如果您不希望每次打开此文件时都提示“启用内容”(取决于您的安全设置),您应暂时删除“me.close”以防止其自行关闭,保存文件并将其设置为受信任,然后在再次保存之前重新启用“me.close”调用。或者,您可以将 False 设置为 TrueafterMe.Close

于 2013-07-19T00:24:44.870 回答