首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从外部工作簿自动更新值

从外部工作簿自动更新值
EN

Stack Overflow用户
提问于 2013-04-15 01:25:28
回答 3查看 4.3K关注 0票数 7

我有以下工作簿设置:

工作簿A有一个指向工作簿B的x数量的链接,并从它们获取数据。工作簿B有指向其他工作簿的链接,并从它们获取数据。

工作簿A是所有其他工作簿所包含内容的一种“摘要”。现在,我必须打开所有的工作簿B,刷新它们并在打开工作簿A之前保存它们。如果我不这样做,工作簿B的B就不会用工作簿C中的数据更新。

是否可以使用.bat或vbs脚本更新所有工作簿B?或者可以在工作簿A中更新它们吗?

我可能补充说,我在这台计算机上使用了excel启动器,所以更好的解决方案将与此兼容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-15 04:51:53

附加是一个潜在的解决方案,作为一个vbs,可以从vba运行,如果可用的话。

感谢Sid Rout的建议编辑到RecursiveFile(objWB)

警告:太多同时打开的书籍(我在vbs递归地狱中访问了512 )可能会导致内存问题--在这种情况下,每个主要分支都应该依次更新,然后这些工作簿在进入下一个分支之前关闭。

它做什么

  1. 打开由strFilePath持有的工作簿
  2. 检查1中是否有链接的工作簿,如果有,则打开它们(B、B1、B2等)
  3. 然后,代码从(2)中查找每个工作簿中的任何链接,然后依次打开所有这些链接(C1和C2表示B等)
  4. 每个打开的图书名都存储在一个数组Arr中。
  5. 当打开所有书籍时,初始工作簿将被更新,递归代码结束,除了strFilePath以外,所有打开的书籍都将关闭而不保存。
  6. 然后保存并关闭strFilePath
  7. 代码整理好了

编辑:修复vbs递归问题的更新代码

代码语言:javascript
运行
AI代码解释
复制
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

Working ScreenShots

票数 5
EN

Stack Overflow用户

发布于 2013-04-15 01:41:10

是的,您可以循环遍历所有源B工作簿,在后台打开它们并将UpdateLinks标志设置为True .

代码语言:javascript
运行
AI代码解释
复制
strFiles=Dir(*path & \.xls*)

do
    workbooks.open strfiles, UpdateLinks:=true
    workbooks(strfiles).close savechanges:=true
    strFiles=Dir
loop while strfiles<>""

这应该给你一个开始

票数 2
EN

Stack Overflow用户

发布于 2013-04-15 02:03:52

因此,由于VBA不是一个选项,让我们尝试一个VB脚本解决方案:

代码语言:javascript
运行
AI代码解释
复制
dim objFSO, objExcel, objWorkbook, objFile
'
set objExcel= CreateObject("Excel.application")
'
objExcel.visible=false
objExcel.displayalerts=false
'
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = path
'
Set objFolder = objFSO.GetFolder(objStartFolder)
' get collection of files from folder
Set colFiles = objFolder.Files
' begin loop through all files returned by Files collection of Folder object
For Each objFile in colFiles
    ' sanity check, is the file an XLS file?
    if instr(objfile.name,"xls")<>0 then ' could also use right(objfile.name,4)=...
        Wscript.Echo "Opening '" objFile.Name & "' ..."
        set objWorkbook=objexcel.workbooks.open objfile.name, updatelinks:=true
        objexcel.workbooks(objfile.name).close savechanges:=true
    end if
Next
' close Excel
objexcel.quit
' kill the instance and release the memory
set objExcel=nothing

试试,看看你相处得怎么样。

下面是VB脚本:MSDN库- VB脚本

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16011744

复制
相关文章
Qt中实现http服务接收POST请求
总体而言,HTTP服务器适用于传统的客户端-服务器通信,每次请求都需要重新建立连接,适合请求响应式的场景。WebSocket服务器适用于需要实时双向通信的场景,适合聊天应用、实时数据更新等。
Linux兵工厂
2023/09/15
1.6K0
Qt中实现http服务接收POST请求
http请求中get和post方法的区别
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。
用户7880705
2020/11/06
4.5K0
Https网站中请求Http内容
今天遇到个问题:```Mixed Content: The page at ‘https://*****’ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘http://*****’. This request has been blocked; the content must be served over HTTPS```
DannyHoo
2020/06/15
23.2K0
HTTP协议中的GET、POST请求方法的区别
HTTP 请求方法有:HEAD、PUT、DELETE、OPTIONS、CONNECT
宣言言言
2019/12/15
4.7K0
GateWay 修改请求内容(post)
在读取body内容时不要使用exchange.getRequest().getBody().subscribe()去实现,可能本人比较菜不知道具体使用方法,如果有人指出请评论
用户10325771
2023/03/01
1.2K0
http请求get与post的区别
他们最直接的区别就是get请求将数据放在url中传输,而post请求是将数据放在request body中传输
许喜朝
2021/03/02
1.2K0
java发送http的get、post请求
转载自 http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html
qubianzhong
2019/07/01
3.2K0
Http:GET和POST请求的区别
GET和POST请求的区别 GET请求 GET /books/?sex=man&name=Professional HTTP/1.1 Host: www.wrox.com User-Ag
心跳包
2020/08/31
1.5K0
springboot发送http请求,springboot http post json
高久峰
2023/07/02
5580
Http常见请求/响应头Content-type内容类型
Content-type 用来指定不同格式的请求响应信息,俗称MIME媒体类型 常见取值: text/html:HTML格式 text/plain:纯文本格式 text/xml:XML格式 image/gif:gif图片格式 image/jpeg:jpg图片格式 - image/png:png图片格式 application/json:JSON数据格式 application/pdf:pdf格式 application/octet-stream:二进制流数据,一般是文件下载 application/x-w
高大北
2022/06/14
1.2K0
go的入门之路 http Get Post请求
   defer 关键字是总会执行,类似于java try catch finally 代码块
地球流浪猫
2018/08/02
1K0
请求类型 GET 和 POST 的区别
如果像 HTML 表单那样 POST 数据,要用 setRequestHeader() 来添加 HTTP 头,然后在 send() 方法中规定所要发送的数据
Leophen
2019/08/23
9810
ASP.NET (Core)WebApi参数传递实操演练
一、ASP.NET (Core)WebApi参数传递实操演练 1、什么是contentType和dataType? $.ajax contentType 和 dataType , contentType 主要设置你发送给服务器的格式,dataType设置你收到服务器数据的格式。 更简单的解释: contentType: 告诉服务器,我要发什么类型的数据。 dataType:告诉服务器,我要想什么类型的数据。 在http 请求中,get 和 post 是最常用的。在 jquery 的 ajax 中, c
跟着阿笨一起玩NET
2021/02/02
3.8K0
java调用HTTP接口(Get请求和Post请求)
大家好,又见面了,我是你们的朋友全栈君。 前提: 一个Http接口:http://172.83.38.209:7001/NSRTRegistration/test/add.do?id=8888888&
全栈程序员站长
2022/08/31
4.1K0
java调用HTTP接口(Get请求和Post请求)
silverlight: http请求的GET及POST示例
http请求的get/post并不是难事,只是silverlight中一切皆是异步,所以代码看起来就显得有些冗长了,下面这个HttpHelper是在总结 园友 的基础上,修改得来: 1 namespace SLAwb.Helper 2 { 3 public sealed class MediaType 4 { 5 /// <summary> 6 /// "application/xml" 7 /// </summary> 8
菩提树下的杨过
2018/01/19
1.3K0
silverlight: http请求的GET及POST示例
HTTP_POST请求的数据格式
通过上面的例子,我们可以看到在Request Headers里面以后很多字段,比如Content-type,Host这些,那么这些字段又有什么意思呢,下面通过表格来介绍一下:
全栈程序员站长
2022/07/21
1.2K0
vue中axios处理http发送请求的示例(Post和get)
axios中文文档:https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format
晓歌
2018/08/15
5.5K0
vue中axios处理http发送请求的示例(Post和get)
php socket 发送HTTP请求 POST json
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112663.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
2.4K0
点击加载更多

相似问题

内容类型为application/x-www-form-urlencoded的Post请求在Spring中不起作用

294

Http Post请求,内容类型为application/x-www-form-urlencoded,在春季不起作用

68

如何发送内容类型为"application/x-www-form-urlencoded“的POST请求

10

Http请求,内容类型为application/x form-urlencoded,在Spring中不起作用

21

无法在post请求上创建内容类型为: application/x-www-form-urlencoded的模拟

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文