2

信息:

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

此文件包含一个名为 UserForm1 的用户表单,该用户表单会在打开文件时自动加载。

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

问题:

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

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

第二:我希望只有用户表单可见。(我不需要/使用工作簿/工作表在后台可见。)

第三:如果可以在仍然显示用户窗体的同时最小化 Excel 应用程序的第二个实例,那将是完美的。(目前,如果我尝试最小化 Excel 应用程序的第二个实例,用户窗体也会被最小化)

  Private Sub Workbook_Open()
  Dim objExcel
  Set objExcel = CreateObject("Excel.Application")
  objExcel.Visible = True

  UserForm1.Show

  Application.ScreenUpdating = False
  Set newBook = Workbooks.Open(Demo.xlsm)
  Windows(Demo.xlsm).Visible = False
  Application.ScreenUpdating = True 

  End Sub

我觉得我没有以正确的方式解决这个问题......

对此的任何帮助将不胜感激!

4

4 回答 4

2

这就是我所做的,而且效果很好。我有一张很好的大图,图片有一个宏,即:

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

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

于 2015-10-28T14:38:44.413 回答
1

这对我有用。将此代码复制粘贴到 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
于 2013-12-21T02:32:46.107 回答
0

对于你的Workbook_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”,所以应该是正确的。

于 2013-09-13T01:09:08.893 回答
0

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

于 2016-03-22T15:48:38.360 回答