gpt4 book ai didi

excel - 打开多个Excel实例时,如何设置Excel实例打开手动打开的文件?

转载 作者:行者123 更新时间:2023-12-04 19:46:17 24 4
gpt4 key购买 nike

背景:我有一个文件 AppLauncher.xlsm,它在 Excel 的新实例中打开 App.xlsm,然后自行关闭。 App.xlsm 设置 Application.Visible = False,然后显示一个用户窗体。这使用户窗体看起来是它自己的应用程序,与 Excel 无关。
问题:如果用户手动打开另一个文件,该文件将在 Excel 的第二个实例(打开 App.xlsm 的那个)中打开,并使应用程序可见。
目标:当用户手动打开文件时,在已打开的 Excel 实例(如果存在)或新的 Excel 实例中打开文件。
我尝试过/研究过的内容:

  • 使用 Application.WorkbookOpen 事件捕获手动打开的工作簿的路径和名称,然后将其关闭并在不同的 Excel 实例中打开;这会起作用,但它没有考虑到另一个 Workbook.xlsm 的代码使用 Workbook.Open 事件(Workbook.Open 事件在 Application.WorkbookOpen 事件之前触发)。
  • 使用 Access 而不是 Excel。 VBAWarning 注册表项设置为 3,要求所有宏都进行数字签名;不幸的是,Access 中的签名宏似乎被破坏了。
  • 使用 Word 或 PowerPoint。我想我会遇到同样的问题。
  • 运行对象表 (ROT)。根据我的阅读,ROT 的目的是如果已经有一个应用程序正在运行,则不创建新的应用程序实例。我还读到 Excel 只在 ROT 中注册 Excel 的第一个实例;使用 RotView ,我观察到注册了多个 Excel 实例,而不仅仅是第一个实例。

  • 潜在解决方案:删除已打开 App.xlsm 的 Excel 实例的 ROT 条目...不确定如何仅使用 VBA 完成此操作(使用 SendMessage 函数?)。
    AppLauncher.xlsm 代码:​​
    Private Sub Workbook_Open()
    Call Shell("excel.exe /x /s " & """" & ThisWorkbook.Path & "\App.xlsm""")
    ThisWorkbook.Close
    End Sub
    App.xlsm 代码:​​
    Private Sub Workbook_Open()
    Application.Visible = False
    UserForm1.Show vbModeless
    End Sub
    编辑 1:使用 Application.IgnoreRemoteRequests = True在已打开 App.xlsm 的 Excel 实例上似乎无法在 Microsoft 365 中工作。

    最佳答案

    我认为您可以使用窗口的 API 来显示或隐藏应用程序实例。
    这是一些代码,我认为这就是您所追求的。

    Option Explicit

    Public Declare Function ShowWindow Lib "user32.dll" (ByVal HWND As Long, ByVal nCmdShow As Long) As Long

    Public Const SW_HIDE As Long = 0
    Public Const SW_SHOW As Long = 5

    Public Sub ShowHide()
    ShowWindow ThisWorkbook.Application.HWND, SW_HIDE 'Get the Handle of the application running the form
    UserForm1.Show 'Pop the form open
    ShowWindow ThisWorkbook.Application.HWND, SW_SHOW 'When the form closes, show Excel again
    End Sub
    我能够打开另一个 Excel 工作簿,该新工作簿正常打开,而带有表单的原始 Excel 工作簿仍然隐藏。

    关于excel - 打开多个Excel实例时,如何设置Excel实例打开手动打开的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70596072/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com