ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 156|回复: 8

[求助] 双击打开不同的EXCEL文件,如何在第1个EXCEL文件的VBA里获取其他的EXCEL文件名并操作

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-27 15:35 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 透彻丶 于 2024-4-27 18:17 编辑

  双击打开不同的EXCEL文件,如何在第1个EXCEL文件的VBA里获取其他的EXCEL文件名并操作?

  查了很多资料,都是说要在第1个EXCEL文件里用“打开”选项打开的文件或者用vba命令打开的文件才能操作。

   Workbooks的方法都必须是满足上面这个条件才能运行成功。

  我就想知道:双击打开不同的EXCEL文件后,是没办法相互操作的是么?
  因为工作中,一般都是双击文档打开,大家很少习惯去点击“打开”命令去打开新文件啊。


补充内容 (2024-5-4 15:00):
  最后的处理方法:老老实实地在表格中建立了一个[打开文件]按钮,强制在第一个表格中用VBA方法打开需要操作的文件。

TA的精华主题

TA的得分主题

发表于 2024-4-27 16:16 | 显示全部楼层
最好上传附件,模拟想要的效果说明

TA的精华主题

TA的得分主题

发表于 2024-4-27 16:18 | 显示全部楼层
在VBA中,你可以使用Application.Workbooks集合来访问当前Excel实例中打开的所有工作簿。如果你想从第一个Excel文件的VBA中获取并打开其他Excel文件,你可以遍历Workbooks集合,查找并操作其他工作簿。
以下是一个简单的示例,说明如何在第一个Excel文件的VBA中获取其他打开的工作簿的文件名,并进行一些基本操作:
vba复制代码

Sub OperateOnOtherWorkbooks()  

    Dim wb As Workbook  

    Dim wbName As String  

      

    ' 遍历当前Excel实例中的所有工作簿  

    For Each wb In Application.Workbooks  

        ' 排除自身工作簿  

        If wb.Name <> ThisWorkbook.Name Then  

            wbName = wb.Name  

            ' 在这里你可以对其他工作簿进行你需要的操作  

            ' 例如,我们在这里简单打印其他工作簿的文件名  

            Debug.Print "其他打开的工作簿名称: " & wbName  

              

            ' 如果你想对其他工作簿进行更具体的操作,可以在这里添加代码  

            ' 例如,激活第一个工作表并更改A1单元格的值  

            wb.Worksheets(1).Activate  

            wb.Worksheets(1).Range("A1").Value = "已被修改"  

        End If  

    Next wb  

End Sub

这个VBA宏会遍历当前Excel实例中的所有打开的工作簿,并打印出除了当前工作簿之外的所有其他工作簿的文件名。同时,它还演示了如何激活其他工作簿的第一个工作表并修改A1单元格的值。
请注意,根据你的具体需求,你可能需要添加更多的错误处理和检查来确保代码的稳定性和可靠性。例如,你可能需要检查工作簿是否已被保护或是否为只读,以避免在尝试进行修改时出错。

成长作文网:http://www.sjzwndj.cn

成长作文网:http://www.sjzwndj.cn

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-27 17:00 | 显示全部楼层
sqxzgg 发表于 2024-4-27 16:18
在VBA中,你可以使用Application.Workbooks集合来访问当前Excel实例中打开的所有工作簿。如果你想从第一个E ...

  你的代码只能用在这个情况:在第1个EXCEL文件里用“打开”选项打开的文件或者用vba命令打开的文件才能操作。
  不能用在我说的双击文件打开

TA的精华主题

TA的得分主题

发表于 2024-4-27 17:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1. 使用 Workbooks 集合
如果其他Excel文件已经打开,无论它们是如何打开的,你都可以通过VBA的 Workbooks 集合来引用它们。Workbooks 集合包含了所有打开的Excel工作簿,包括由其他用户打开的,或者通过其他应用程序打开的。

Sub ReferenceAnotherWorkbook()
    Dim otherWb As Workbook
    Set otherWb = Workbooks("其他工作簿的名字.xlsx") ' 替换为实际的工作簿名称
    ' 接下来可以操作otherWb
    ' 例如,引用第一个工作表的第一个单元格:
    MsgBox otherWb.Sheets(1).Cells(1, 1).Value
End Sub
2. 使用 Windows 集合
如果你知道工作簿的窗口标题(即工作簿的名称),你可以使用 Windows 集合来引用它:

Sub ReferenceByWindowName()
    Dim otherWb As Workbook
    Set otherWb = Windows("其他工作簿的名字.xlsx").Workbook ' 替换为实际的工作簿窗口标题
    ' 接下来可以操作otherWb
End Sub
3. 使用 Application.Workbooks.Open 方法
如果你想通过VBA打开一个新的工作簿,然后对其进行操作,可以使用 Workbooks.Open 方法:

Sub OpenAndReferenceWorkbook()
    Dim otherWb As Workbook
    Set otherWb = Workbooks.Open("C:\路径\其他工作簿的名字.xlsx") ' 替换为实际的文件路径
    ' 接下来可以操作otherWb
End Sub
4. 使用 Application.Run 方法
如果你想要从一个打开的工作簿中调用另一个工作簿中的宏,可以使用 Application.Run 方法:

Sub CallMacroInAnotherWorkbook()
    Application.Run "其他工作簿的名字.xlsx!宏的名字"
End Sub
请确保宏的名字是正确的,并且该宏存在于目标工作簿中。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-27 17:55 | 显示全部楼层
红太阳的天 发表于 2024-4-27 17:17
1. 使用 Workbooks 集合
如果其他Excel文件已经打开,无论它们是如何打开的,你都可以通过VBA的 Workbooks ...

  你的代码只能用在这个情况:在第1个EXCEL文件里用“打开”选项打开的文件或者用vba命令打开的文件才能操作。
  不能用在我说的双击打开文件后,引用双击打开的文件。

  直接提示:下标越界。

TA的精华主题

TA的得分主题

发表于 2024-4-27 18:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 baofa2 于 2024-4-27 18:29 编辑

image.png

补充,怪了,我这里测试可以……

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-27 18:12 | 显示全部楼层

  WORKBOOKS.COUNT 这个代码只能用在这个情况:
  在第1个EXCEL文件里用“打开”选项打开的文件或者用vba命令打开的文件才能操作。

  不能用在我说的双击打开文件后,引用双击打开的文件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-27 18:46 来自手机 | 显示全部楼层
baofa2 发表于 2024-4-27 18:07
补充,怪了,我这里测试可以……

  你是双击一个Excel文件打开,然后又双击另一个Excel文件打开的么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-9 09:26 , Processed in 0.046752 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表