2016-08-30 61 views
1

我想关闭所有的工作簿,但是没有断开链接的活动工作簿。关闭所有的工作簿,但没有断开链接的活动之一?

Sub dateUpdate() 

Dim WB As Workbook 
Dim TestWkbk As Workbook 
Dim obj As Object 
Range("C1").Select 

Application.ScreenUpdating = False 
Workbooks.Open Filename:=ActiveWorkbook.Path & "\receiving.xlsx", ReadOnly:=True 
ActiveWindow.Visible = False 
Workbooks.Open Filename:=ActiveWorkbook.Path & "\packing.xlsx", ReadOnly:=True 
ActiveWindow.Visible = False 
Workbooks.Open Filename:=ActiveWorkbook.Path & "\shipping.xlsx", ReadOnly:=True 
ActiveWindow.Visible = False 
Workbooks.Open Filename:=ActiveWorkbook.Path & "\hoist.xlsx", ReadOnly:=True 
ActiveWindow.Visible = False 
ThisWorkbook.Activate 
'Application.ScreenUpdating = True 



If Val(Application.Version) >= 12 Then 
    Set TestWkbk = Nothing 
    On Error Resume Next 
    Set TestWkbk = Workbooks("WinDatePicker.xlam") 
    On Error GoTo 0 
    If TestWkbk Is Nothing Then 
     MsgBox "Sorry the Date Picker add-in is not open." 
    Else 
     Application.Run "'" & TestWkbk.Name & "'!OpenDatePicker", obj 
    End If 
End If 


For Each WB In Workbooks 
If WB.Name <> ThisWorkbook.Name Then 
    WB.Close savechanges:=False 
End If 
Next WB 


End Sub 

如果我选择一个新的日期,那么因为书已经关闭,我会得到参考错误。任何方式在这个?

+0

你试图找出如何关闭所有工作簿除了当前和一个包含“日期选择器加载项”? (如果您所指的“链接”是指其他xlsx文件中的单元格,则应该再次打开这些文件。) – YowE3K

回答

2

下面的代码将关闭所有的工作簿,除了活动一个

Dim wb As Workbook 
For Each wb In Application.Workbooks 
    If Not (wb Is Application.ActiveWorkbook) Then 
     wb.Close 
    End If 
Next 
+0

是的,我已经得到了它。我更新了这个问题。 –

1

闭幕式以外的所有活动工作簿

Sub test() 
    Application.DisplayAlerts = False 
    Dim ActiveWB: ActiveWB = ThisWorkbook.Name 

    For Each wb In Application.Workbooks 
     If (wb.Name <> ActiveWB) Then 
      wb.Close 
     End If 
    Next 
End Sub 
+0

是的,我已经得到了这个。我更新了这个问题。 –

相关问题