1

我通常同时处理多个工作簿(5、6、7+),这通常会阻止我重新启动计算机 b/c 我不想经历保存、关闭然后重新打开我最近使用的工作簿的麻烦工作。我想知道 Excel 是否有办法记住我在退出程序之前打开了哪些工作簿(一次所有工作簿),然后可以选择在下次 Excel 启动时打开所有这些工作簿;本质上,这将是“会话恢复”。要在顶部添加樱桃,最好在启动时有一个清单,提示我选择要打开的工作簿,以防我不想打开所有工作簿。任何帮助,将不胜感激!

4

3 回答 3

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

我将如何使用它是制作一个空白工作簿并在其上放置两个命令按钮。一个是“保存打开的工作簿”按钮,另一个是“打开保存的工作簿”按钮。然后只需单击“保存打开的工作簿”按钮,保存当前工作簿,重新启动计算机,打开放置两个按钮的工作簿,然后单击打开按钮。这应该够了吧。

于 2015-04-27T20:56:14.663 回答
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!

于 2020-07-29T20:19:27.100 回答
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

于 2019-01-30T07:56:53.480 回答