我通常会同时处理多个工作簿(5,6,7 +),这通常会让我无法重新启动计算机b / c我不想经历拯救,关闭然后重新打开的麻烦我最近在做的工作簿。 我想知道Excel是否有办法记住在退出程序之前我打开了哪些工作簿(所有工作簿一次),然后可以选择在Excel下次启动时打开所有这些工作簿;基本上,这将是一个"会话恢复"。要在顶部添加樱桃,最好在启动时提供一个清单,提示我选择要打开的工作簿,以防我不想打开所有这些工作簿。任何帮助将不胜感激!
答案 0 :(得分:0)
你可以做的是你可以创建另一个工作簿,这将是你的开放式工作簿。然后你可以使用
的一些代码Dim wb as Workbook
Dim TotalNum as Long
For Each wb in Application.Workbooks
TotalNum = TotalNum + 1
Range("A" & TotalNum) = wb.FullName
If wb.Name <> ActiveWorkbook.Name Then
wb.close
End If
Next wb
此代码将写出您在工作簿上打开的每个文件的位置。请注意,它还将关闭您打开的每个工作簿。如果您不希望它删除wb.close
行。
以下代码打开了上一代码在工作表上编写的所有工作簿。
Dim wb as Workbook
For i = 1 to Range("A" & Rows.Count).End(xlUp).Row
Set wb = Workbooks.Open(Range("A" & i))
Next i
我将如何使用它是一个空白的工作簿并在其上放置两个命令按钮。一个是“Save Open Workbooks”按钮,另一个是“Open Saved Workbooks”按钮。然后只需单击“保存打开的工作簿”按钮,保存当前工作簿,重新启动计算机,打开放置两个按钮的工作簿,然后单击打开按钮。这应该可以解决问题。
答案 1 :(得分:0)
如果需要,您可以调整此功能,出于工作目的,我已经使用Brad的注释进行了调整,我没有太多时间将其调整为一般情况
Private Function offer_recent_IF_SPEC() As Workbook
Dim file As Variant, ans As Boolean
Set offer_recent_IF_SPEC = Nothing
For Each file In Application.RecentFiles
If file.Name Like "*_COMPLETE_*" Then
ans = False
ans = Application.InputBox(Prompt:="IF SPEC document is not opened, do you wish to open " & file.Name & " ?", Title:="IF_SPEC to open", Default:=False, Type:=4)
If ans Then
Workbooks.Open file.Name, UpdateLinks:=0
'Debug.Print Mid(file.Name, InStrRev(file.Name, "\") - 1)
Set offer_recent_IF_SPEC = Workbooks(Mid(file.Name, InStrRev(file.Name, "\") + 1))
Exit For
End If
End If
Next file
If Not ans Then
MsgBox "You do not have opened GBL_COMPLETE excel", vbCritical, "GBL_COMPLETE not opened"
End
End If
End Function
答案 2 :(得分:0)
在打开文件的那部分,我想建议对FailyLegit代码进行修改:
Dim wb As Workbook
Dim sWorkbook, sWorksheet As String
sWorkbook = ThisWorkbook.Name
sWorksheet = ActiveSheet.Name
For i = 1 To Workbooks(sWorkbook).Worksheets(sWorksheet).Range("A" & Rows.Count).End(xlUp).Row
Set wb = Workbooks.Open(Workbooks(sWorkbook).Worksheets(sWorksheet).Range("A" & i))
Next i
当宏打开列表的第一个文件时,它将失去焦点,从而在最近打开的文件而不是列表上搜索对下一个文件的引用。 这样就可以解决。
感谢代码FairlyLegit!