打开文件时,在新的Excel实例中打开特定的Excel文件
信息: 我有一个名为Demo.xlsm的Excel文件 此文件包含一个名为UserForm1的userform,在打开文件时自动加载 打开文件时,名为Demo.xlsm的工作簿在用户窗体后面的后台也可见 问题: 我经常在桌面上打开一个Excel应用程序,其中有各种工作簿和工作表,其中包含我每天使用的信息。目前,如果我打开Demo.xlsm文件,它将与我正在使用的所有其他工作簿/工作表一起在当前Excel应用程序中打开 首先:我希望Demo.xlsm文件能够在一个完全独立的instance/Excel应用程序中自动打开,而不是在我的其他作品中打开 第二:我希望只有userform是可见的。(我不需要/不需要在后台看到工作簿/工作表。) 第三:如果可以在显示用户表单的同时最小化Excel应用程序的第二个实例,那就太完美了。(当前,如果我尝试最小化Excel应用程序的第二个实例,则userform也会最小化) 我觉得我做这件事的方式不对打开文件时,在新的Excel实例中打开特定的Excel文件,excel,vba,Excel,Vba,信息: 我有一个名为Demo.xlsm的Excel文件 此文件包含一个名为UserForm1的userform,在打开文件时自动加载 打开文件时,名为Demo.xlsm的工作簿在用户窗体后面的后台也可见 问题: 我经常在桌面上打开一个Excel应用程序,其中有各种工作簿和工作表,其中包含我每天使用的信息。目前,如果我打开Demo.xlsm文件,它将与我正在使用的所有其他工作簿/工作表一起在当前Excel应用程序中打开 首先:我希望Demo.xlsm文件能够在一个完全独立的instance/Exc
在此方面的任何帮助都将不胜感激 对于您的
工作簿_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