尝试在单独的实例中打开工作簿

2024-03-31

不确定我做得是否正确。请建议我。

我正在尝试在新实例中打开一本工作簿。但有些地方效果不太好。下面是代码供您参考。我正在尝试在新实例中打开名为“Loginfrm”的表单。

假设如果另一个工作簿已打开,则当前代码也会冻结该工作簿。理想情况下,这不应该发生。

Private Sub Workbook_Open()
Call New_Excel

Dim xlWrkBk As Excel.Workbook
Dim xlApp As New Excel.Application

Set xlWrkBk = xlApp.ActiveWorkbook
xlApp.Visible = True
'ThisWorkbook.Windows(1).Visible = False
LoginFrm.Show

End Sub
Sub New_Excel()
  'Create a Microsoft Excel instance via code
  'using late binding. (No references required)
  Dim xlApp As Object
  Dim wbExcel As Object

  'Create a new instance of Excel
  Set xlApp = CreateObject("Excel.Application")

  'Open workbook, or you may place here the
  'complete name and path of the file you want
  'to open upon the creation of the new instance
  Set wbExcel = xlApp.Workbooks.Add

  'Set the instance of Excel visible. (It's been hiding until now)
  xlApp.Visible = True

  'Release the workbook and application objects to free up memory
  Set wbExcel = Nothing
  Set xlApp = Nothing
End Sub

I am going to show you how to run a macro in another instance of excel ,which in your case will display a UserForm1


1) Create a new workbook
2) Open the VBE (Visual Basic Editor) - ALT + F11
3) Insert new UserForm and Module (right click in the project explorer then Insert). Your screen should look similar to the below picture:

step 3 overview

4) Add References for the Microsoft Visual Basic for Applications Extensibility 5.3 https://stackoverflow.com/questions/9879825/how-to-add-a-reference-programmatically-vba-excel
note: I have this already in my code, but you have to make sure you have properly attached it

5)在新创建的Module1插入代码

Sub Main()
    AddReferences
    AddComponent "UserForm1", "UserForm1.frm"
End Sub

Private Sub AddReferences()
    '   Name:            VBIDE
    '   Description:     Microsoft Visual Basic for Applications Extensibility 5.3
    '   GUID:            {0002E157-0000-0000-C000-000000000046}
    '   Major:           5
    '   Minor:           3
    '   FullPath:        C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
    On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromGuid GUID:="{0002E157-0000-0000-C000-000000000046}", _
                                                  Major:=5, Minor:=3
End Sub

Sub AddComponent(theComponent$, fileName$)

    ' export
    Application.VBE.ActiveVBProject.VBComponents(theComponent).Export ThisWorkbook.Path & "\" & fileName

    Dim xApp As Excel.Application
    Set xApp = New Excel.Application
    xApp.Visible = True

    Dim wb As Excel.Workbook
    Set wb = xApp.Workbooks.Add

    wb.VBProject.VBComponents.Import ThisWorkbook.Path & "\" & fileName

    CreateAModule wb
    xApp.Run "MacroToExecute"

    xApp.DisplayAlerts = False
    wb.Save
    wb.Close
    Set wb = Nothing
    xApp.Quit
    Set xApp = Nothing
    Application.DisplayAlerts = True
End Sub

Sub CreateAModule(ByRef wb As Workbook)

    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.vbComponent
    Dim CodeMod As VBIDE.CodeModule

    Set VBProj = wb.VBProject
    Set VBComp = VBProj.VBComponents.Add(vbext_ct_StdModule)
    Set CodeMod = VBComp.CodeModule

    With CodeMod
        .DeleteLines 1, .CountOfLines
        .InsertLines 1, "Public Sub MacroToExecute()"
        .InsertLines 2, "    UserForm1.Show"
        .InsertLines 3, "End Sub"
    End With
End Sub


6) 现在,运行Main宏,您将看到Userform1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在单独的实例中打开工作簿 的相关文章

  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一
  • MS Access 执行 POST Web 请求

    在我的 MS Access 应用程序中 我需要定期向我的网络服务器发送一批信息 我不需要任何花哨的东西 比如 SOAP XML RPC 或任何东西 只需一个简单的 POST 页面请求就足够了 我用谷歌搜索了一下 但找不到任何真正有用的东西
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • 如何在字符串vba中包含引号

    我想存储以下文本 Test1 Monday Test Abcdef 全部在字符串中包含引号 我知道要在字符串中包含引号 我必须包含 之前 但在这里这不是一个很好的解决方案 因为我在文本中有太多这样的解决方案 知道如何一次完成这一切吗 您有两
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保
  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • 复制一张工作表上的静态范围,然后根据单元格中的单个值粘贴到另一张工作表中的动态范围

    我对这个问题分为三个部分 我在 Sheet1 A1 中有一个带有周数的单元格 我在 Sheet1 B1 F1 中有一个需要复制的静态范围 然后 我需要将该值粘贴到 Sheet2 中的动态范围中 偏移量为行的周数 这是我正在为我经常使用的工作
  • Pandas 0.22.0:IndexError:读取 xls 时列表索引超出范围

    我正在尝试将 282Mb 65536 行 x 138 列 xls 文件加载到 pandas 数据框中 import pandas as pd import os filename r invoicing xls dir os path di
  • 文件夹.文件的相对路径

    我有一个 Excel 文件 在同一文件夹中还有一个包含我想要包含的 CSV 文件的文件夹 使用 来自文件夹 查询 第一步将给出以下查询 Folder Files D OneDrive Documents Health Concept2 现在
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • Excels COUNTIFS 函数中的数组作为条件,混合 AND 和 OR [重复]

    这个问题在这里已经有答案了 我已经在谷歌上搜索了一段时间 但似乎无法让它发挥作用 我使用 Excel 2010 希望混合使用 AND 和 OR 运算符来计算行数 我想做的是这样的 COUNTIFS A A string1 B B strin
  • 将匹配的行复制到另一张纸中

    我有两张表 sheet1 和sheet 2 我正在查看工作表 1 的 T 列 如果工作表 2 中 T 包含 1 则粘贴完整行 该代码运行良好 但它将sheet2 中的结果粘贴到sheet1 的同一行中 这会导致行之间出现空白 任何人都可以建
  • SpreadsheetML 文件扩展名被 IE 和 FF 更改 - 内容类型错误?

    我正在 PHP 中生成 SpreadsheetML 文件 当用户下载文件并保存时 默认情况下文件会另存为 Report xml 并在 Excel 中打开 但是 如果选择在 Excel 中打开文件而不是保存文件 则文件名将更改为 Report
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Excel:#CALC!使用 MAP 函数计算间隔重叠时出现错误(嵌套数组)

    我正在努力解决以下公式 它适用于某些情况 但不适用于所有情况 名字input有失败的数据集 得到一个 CALC 描述 嵌套数组 错误 LET input N1 0 0 N1 0 10 N1 10 20 names INDEX input 1

随机推荐

  • 何时使用单元测试? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 旋转呈现视图并锁定呈现视图控制器的方向

    我正在开发仅支持横向方向的iPad应用程序 我希望允许一些呈现的视图控制器支持所有方向 而不改变呈现视图控制器的方向 支持 Xcode 设置中除倒置之外的所有方向 我用来呈现视图控制器的代码 ViewController vc self s
  • 需要在 Mac 上安装 Ruby 2.7.2 的帮助

    我正在尝试在我的 Mac 具有所有更新的最新操作系统 上安装 Ruby 版本 2 7 2 并执行以下操作 brew update brew upgrade rbenv ruby build and then rbenv install 2
  • C++11 虚拟析构函数和移动特殊函数的自动生成

    C 11 中自动生成特殊移动函数 构造函数和赋值运算符 的规则指定不能声明析构函数 逻辑大概是 如果你需要在破坏方面做一些特殊的事情 那么这一举动可能不安全 然而 为了在多态性中正确调用析构函数 有必要将基类的析构函数声明为虚拟 否则通过基
  • AngularJS 的配置阶段

    引导 Angular 应用程序的配置阶段发生了什么 无法想象 现在我对提供商感到困惑 SO 可能是配置阶段的洞察力帮助我理解整个过程 因为提供程序可以在配置阶段注入 Thanks 角度应用程序使用服务 http location ETC 有
  • 申请账户信息不正确

    验证应用程序时出现此错误 重新启动 Xcode 和 Mac 机器后 苹果修复了导致问题的任何原因 问题似乎已经解决 在 OS 10 9 5 上通过 iTunes Producer 3 1 成功交付包
  • hql 中分区的 row_number()

    hql 中分区上的 row number 相当于什么 我在 hql 中有以下查询 select s Companyname p Productname sum od Unitprice od Quantity od Discount as
  • 恢复到 nvm 默认版本

    每当我使用 cd 时 我总是得到 Reverting to nvm default version N A version default gt N A is not yet installed You need to run nvm in
  • 使用 Bash 脚本进行日志轮换

    我有以下问题 我有一个应用程序 它不断地向 stderr 和 stdout 生成输出 该应用程序的输出被捕获在日志文件中 该应用程序被重定向为 gt log txt 我没有任何选项来为此生成适当的日志记录 现在 我有一个 cron 作业 它
  • 音频处理和删除音频的某些部分

    我是语音编码新手 现在我成功地在文件中录制麦克风 并将每 10 秒保存在一个文件中SaveRecordtoFile功能 这样做没有问题 现在我想从记录的数据中删除例如 2 秒 这样我的输出将是 8 秒而不是 10 秒 在randomTime
  • 如何获取当前运行的hadoop作业的名称?

    我需要获取当前正在运行的作业名称列表 但是hadoop job list给我一份 jobID 列表 有没有办法获取正在运行的作业的名称 有没有办法从 jobID 中获取作业名称 我不得不多次执行此操作 因此我想出了以下命令行 您可以将其放入
  • 如何从 Entity Framework 4.3 代码优先模型生成 DDL 脚本?

    我有一个正在尝试部署的项目 并且我正在使用廉价的主机来开始 作为托管包的一部分 我有一个 SQL Server 数据库 但我没有删除或创建权限 我只能使用他们为我创建的数据库 既然如此 我想获取 DDL 以便我可以手动运行它 我知道我可以从
  • 如何使用 JavaScript 函数式编程从对象列表中找到具有最低属性的对象?

    老方法 let min Number MAX VALUE for let item of food let current Problem manhattan distance player item if current gt min m
  • Webpacker/Typescript 无法解析 Rails 资产管道文件

    我正在尝试导入 Rails 资产管道中的文件 但由于某种原因 webpack 找不到它 这是我的 tsconfig json compilerOptions declaration false emitDecoratorMetadata t
  • 使用Spring Data JPA调用存储过程时如何传入数组

    我正在关注这个example https dzone com articles calling stored procedures from spring data jpa使用 Spring Data JPA 调用存储过程 这个想法是创建一
  • setNavigationItemSelectedListener 不工作

    My NavigationView onClick活动不起作用 以下是我一一尝试过的代码片段 但没有任何效果 实施NavigationView OnNavigationItemSelectedListener using OnClick M
  • Angular Ivy 在手动变更检测方面具体允许我们做什么?

    本文 https blog ninja squad com 2019 05 07 what is angular ivy 提到 不过 常春藤为未来开启了一些可能性 现在应该可以在没有 zone js 的情况下运行应用程序 并半手动处理更改检
  • 列表子列表优化

    问题是从给定列表中查找不包含大于指定上限数字的子列表总数right并且子列表的最大数量应该大于下限left假设我的清单是 x 2 0 11 3 0 子列表元素的上限是10下界是1那么我的子列表可以是 2 2 0 3 3 0 因为子列表始终是
  • Interlocked.Exchange 可空小数

    我想交换两个可为空的十进制值 如下所示 o2 Interlocked Exchange ref o1 o2 类型 十进制 必须是引用类型才能将其用作泛型类型或方法 System Threading Interlocked Exchange
  • 尝试在单独的实例中打开工作簿

    不确定我做得是否正确 请建议我 我正在尝试在新实例中打开一本工作簿 但有些地方效果不太好 下面是代码供您参考 我正在尝试在新实例中打开名为 Loginfrm 的表单 假设如果另一个工作簿已打开 则当前代码也会冻结该工作簿 理想情况下 这不应