解决cscript打开excel时宏互不可见的问题

探讨使用VBS脚本批量打开多个Excel文件时,如何确保后打开的文件能够访问先打开文件中的宏。提供了两种解决方案,并邀请读者分享更深层次的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个问题,用cscript打开excel文件时,后打开的文件看不到前面打开文件的宏,而手动打开时,后面打开的文件可以看到前面打开文件中定义的宏。

刚开始时脚本如下:

open_res.bat和open_res.vbs如下

CScript //B .\open_res.vbs A.xlsm

CScript //B .\open_res.vbs B.xlsm

CScript //B .\open_res.vbs C.xlsm
Function export_csv(filepath)
  Set oExcel = createobject("Excel.Application")
  oExcel.Visible = true
  Set oWorkbooks1 = oExcel.Workbooks.Open(filepath & "\Army.xlsm")
End Function  

export_csv(WScript.Arguments.Item(0))

出现的问题是  B看不到A的宏,C看不到A和B的宏

后来找到了两种解决办法:

1.在A中定义一个宏:

Sub Batch_Open()
Dim path As String
path = ThisWorkbook.path
Workbooks.Open Filename:=path & "\B.xlsm"
Workbooks.Open Filename:=path & "\C.xlsx"
End Sub

然后open_res.vbs修改为

Function export_csv(filepath)
  Set oExcel = createobject("Excel.Application")
  oExcel.Visible = true
  Set oWorkbooks1 = oExcel.Workbooks.Open(filepath & "\A.xlsm")
  oExcel.Run "Batch_Open"
End Function  

export_csv(WScript.Arguments.Item(0))

2.open_res.vbs中在一个excel object下打开三个文件

Function export_csv(filepath)
  Set oExcel = createobject("Excel.Application")
  oExcel.Visible = true
  Set oWorkbooks1 = oExcel.Workbooks.Open(filepath & "\A.xlsm")
  Set oWorkbooks2 = oExcel.Workbooks.Open(filepath & "\B.xlsm")
  Set oWorkbooks3 = oExcel.Workbooks.Open(filepath & "\C.xlsm")
End Function  

export_csv(WScript.Arguments.Item(0))

具体是什么原因造成的,有待研究,如有知道的朋友请不吝赐教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值