作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下工作簿设置:
工作簿 A 具有指向 x 个工作簿 B 的链接并从中获取数据。工作簿 B 具有指向其他一些工作簿的链接并从中获取数据。
工作簿 A 是所有其他工作簿所包含内容的“摘要”。就像现在一样,我必须在打开工作簿 A 之前打开所有工作簿 B、刷新它们并保存。如果我不这样做,工作簿 B 将不会使用工作簿 C 中的数据进行更新。
是否可以使用 .bat 或 vbs 脚本更新所有工作簿 B?或者是否可以从工作簿 A 中更新它们?
我可能会补充一点,我在这台计算机上使用 excel starter,因此解决方案最好与其兼容。
最佳答案
附件是一个潜在的解决方案,如 vbs如果可用,可以从 vba
运行
感谢 Sid Rout 对 RecursiveFile(objWB)
的建议编辑
警告:同时打开的书籍过多(我在 vbs
递归 hell 期间达到 512 本书)可能会导致内存问题 - 在这种情况下,每个主要分支都应该更新反过来,这些工作簿在进入下一个分支之前关闭。
它的作用
strFilePath
保存的工作簿Arr
strFilePath
之外的所有打开的书籍都将关闭而不保存strFilePath
然后保存并关闭编辑:更新代码以修复 vbs 递归问题
Public objExcel, objWB2, lngCnt, Arr()
Dim strFilePath, vLinks
`credit to Sid Rout for updating `RecursiveFileRecursiveFile(objWB)`
Erase Arr
lngCnt = 0
Set objExcel = CreateObject("Excel.Application")
strFilePath = "C:\temp\main.xlsx"
With objExcel
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
End With
Set objWB = objExcel.Workbooks.Open(strFilePath, False)
Call RecursiveFile(objWB)
For Each vArr In Arr
objExcel.Workbooks(vArr).Close False
Next
objWB.Save
objWB.Close
Set objWB2 = Nothing
With objExcel
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
.Quit
End With
Set objExcel = Nothing
MsgBox "Complete"
Sub RecursiveFile(objWB)
If Not IsEmpty(objWB.LinkSources()) Then
For Each vL In objWB.LinkSources()
ReDim Preserve Arr(lngCnt)
'MsgBox "Processing File " & vL
Set objWB2 = objExcel.Workbooks.Open(vL, False)
Arr(lngCnt) = objWB2.Name
lngCnt = lngCnt + 1
RecursiveFile objWB2
Next
End If
End Sub
工作屏幕截图
关于excel - 自动更新外部工作簿中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011744/
我是一名优秀的程序员,十分优秀!