打开文件时,在新的Excel实例中打开特定的Excel文件

打开文件时,在新的Excel实例中打开特定的Excel文件,excel,vba,Excel,Vba,信息: 我有一个名为Demo.xlsm的Excel文件 此文件包含一个名为UserForm1的userform,在打开文件时自动加载 打开文件时,名为Demo.xlsm的工作簿在用户窗体后面的后台也可见 问题: 我经常在桌面上打开一个Excel应用程序,其中有各种工作簿和工作表,其中包含我每天使用的信息。目前,如果我打开Demo.xlsm文件,它将与我正在使用的所有其他工作簿/工作表一起在当前Excel应用程序中打开 首先:我希望Demo.xlsm文件能够在一个完全独立的instance/Exc

信息:

我有一个名为Demo.xlsm的Excel文件

此文件包含一个名为UserForm1的userform,在打开文件时自动加载

打开文件时,名为Demo.xlsm的工作簿在用户窗体后面的后台也可见

问题:

我经常在桌面上打开一个Excel应用程序,其中有各种工作簿和工作表,其中包含我每天使用的信息。目前,如果我打开Demo.xlsm文件,它将与我正在使用的所有其他工作簿/工作表一起在当前Excel应用程序中打开

首先:我希望Demo.xlsm文件能够在一个完全独立的instance/Excel应用程序中自动打开,而不是在我的其他作品中打开

第二:我希望只有userform是可见的。(我不需要/不需要在后台看到工作簿/工作表。)

第三:如果可以在显示用户表单的同时最小化Excel应用程序的第二个实例,那就太完美了。(当前,如果我尝试最小化Excel应用程序的第二个实例,则userform也会最小化)

我觉得我做这件事的方式不对


在此方面的任何帮助都将不胜感激

对于您的
工作簿_Open
,执行以下操作可能会让您接近

If Application.Workbooks.Count > 1 Then
    Call Shell(Application.Path & Application.PathSeparator & "excel.exe " & ThisWorkbook.FullName)
    ThisWorkbook.Close SaveChanges:=False
Else
    UserForm1.Show
End If

我对此进行了测试,任务管理器中还有另一个“Excel.exe”,所以它应该是正确的。

这对我来说很有效。将此代码复制粘贴到ThisWorkbook对象中:

Option Explicit

Dim objExcel As Excel.Application

Dim FileName As String

Public Sub workbook_open()
    FileName = ThisWorkbook.FullName
    If vbReadOnly <> 0 Then
        Exit Sub
    Else
        objExcel.Workbooks.Open FileName:=FileName
        ThisWorkbook.Saved = True
        ThisWorkbook.Close
        objExcel.Quit
    End If
End Sub
选项显式
Dim objExcel作为Excel.Application
将文件名设置为字符串
公共子工作簿_open()
FileName=thishworkbook.FullName
如果vbReadOnly为0,则
出口接头
其他的
objExcel.Workbooks.Open文件名:=文件名
ThisWorkbook.Saved=True
此工作簿。关闭
退出
如果结束
端接头

这就是我所做的,它工作起来很好。我有一张很好的大图,这张图有一个宏,它是:

Dim appXL As New Excel.Application

appXL.Workbooks.Open "G:\All Users\Jurie\Test\Hotel Maintenance V1SE.xlsm"
appXL.ActiveWorkbook.Windows(1).Visible = True
appXL.Visible = True
Workbooks("Hotel Stay Easy Maintenance Program.xlsm").Close   SaveChanges:=True
ThisWorkbook.Activate

这将在其自己的实例中打开我的文件,我可以根据需要关闭它,它不会干扰任何其他打开的文件。

将快捷方式复制到Excel,然后右键单击,选择属性并添加到目标的末尾“-“C:\Demo.xlsm”(排除第一个和最后一个引号,并替换为文件的实际文件路径。

我不知道您更广泛的目的-但您描述的大部分内容,只有表单是可见的-听起来像是addin.pnuts-我感谢链接…签出了它,但我不一定希望每个excel文件都在新实例中打开,只是这个指定。)ic file.Doug Glancy-不幸的是,我没有任何加载项的经验或如何使用它们。我请求的主要目的是让userform本质上像一个独立的程序一样工作,而不是让最终用户觉得userform必然是excel的一部分。userform应该像一个程序一样工作,在execl文件已打开。表单接受用户输入并在outlook中生成一封电子邮件,并以所有适当的格式发送。嗯……不确定这是否是我要找的。我测试了它,它的行为似乎与我要找的不一样……我将进一步处理它,看看我是否能找到答案。这个答案并不简单OP的要求。OP希望最小化Excel的新实例,同时从此处打开的工作簿加载的表单仍保留在顶部并显示给用户。
Dim appXL As New Excel.Application

appXL.Workbooks.Open "G:\All Users\Jurie\Test\Hotel Maintenance V1SE.xlsm"
appXL.ActiveWorkbook.Windows(1).Visible = True
appXL.Visible = True
Workbooks("Hotel Stay Easy Maintenance Program.xlsm").Close   SaveChanges:=True
ThisWorkbook.Activate