让 PowerShell 等待 Excel 完成刷新数据透视表

2023-12-06

所以我开发了一个Powershell脚本来刷新大约40个大的excel文件并保存它们,在这个脚本中我运行一个excel宏来传递excel(ODBC)连接参数,然后在刷新完成后从excel文件中删除它们。我唯一的问题是(对于这 40 个文件中的 5 个文件)启动 RefreshAll 命令时,Powershell 不会等待 Excel 完成刷新,而是传递到下一个命令,该命令是使连接无效的宏,从而导致错误宏中的“1004”(文件仍在刷新时无法访问 Excel 连接。)

经过一番研究,我知道在Powershell v2中,有后台作业的概念,但就我而言,这不是一个旁白进程,它属于Excel进程,所以我的Powershell不应该等待Excel退出要继续执行,相反,我需要excel保持打开状态才能继续执行Powershell。

我还知道 start-sleep 命令并不适合我的情况,因为刷新结束没有固定的时间值,每个文件都有它的时间,而且每月的每个周期都有它的时间(数据量)每天都会增加,直到月底)。

所以我的问题是:是否可以进行 Powershell 测试 Excel 文件是否已刷新其数据,如果是,则继续,否则会等待更长时间?


霰弹枪方法:

  1. Excel 有应用程序准备就绪财产。它should表明何时 Excel 已准备好进行自动化通信,但是详细信息是 不清楚。尝试这样的事情:

    $Excel = New-Object -ComObject Excel.Application
    
    # Do your stuff here
    
    # Wait for Excel to became ready
    while (!$Excel.Ready)
    {
        Start-Sleep -Seconds 1
    }
    
     # Do other stuff
    
  2. 查询表有清爽财产。尝试这个:

    $Excel = New-Object -ComObject Excel.Application
    $Workbook = $Excel.Workbooks.Open('C:\Path\To\Workbook\Data.xlsx')
    
    # Are any of the QueryTables refreshing?
    # Don't have Excel right now, so expression below might need some tweaking
    While (($Workbook.Sheets | ForEach-Object {$_.QueryTables | ForEach-Object {if($_.QueryTable.Refreshing){$true}}}))
    {
        Start-Sleep -Seconds 1
    }
    
  3. ODBC连接有清爽属性。试试这个:

    $Excel = New-Object -ComObject Excel.Application
    $Workbook = $Excel.Workbooks.Open('C:\Path\To\Workbook\Data.xlsx')
    
    # Is ODBCConnection refreshing?
    # Don't have Excel right now, so expression below might need some tweaking
    While ($Workbook.ODBCConnection.Refreshing)
    {
        Start-Sleep -Seconds 1
    }
    
  4. 也许这 5 个文件有PivotCache.BackgroundQuery, ODBCConnection.BackgroundQuery or QueryTable.BackgroundQuery属性设置为true?

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

让 PowerShell 等待 Excel 完成刷新数据透视表 的相关文章

随机推荐

  • rlang:在 NSE 函数中使用冒号快捷方式从...获取名称

    我正在编写一个用于制作人口统计数据表的函数包 我有一个函数 缩写如下 我需要在其中获取几列 我会gather一个数据框 诀窍是我想保持这些列的名称按顺序排列 因为我需要在收集后按该顺序放置一列 在这种情况下 这些列是estimate moe
  • 我应该如何从 Scala 列表中删除第一次出现的对象?

    从 Scala 列表中删除第一次出现的对象的最佳方法是什么 来自 Java 我习惯了List remove Object o 方法从列表中删除第一次出现的元素 现在我在 Scala 中工作 我希望该方法返回一个新的不可变的List而不是改变
  • 如何通过套接字InputStream发送XML数据

    我正在尝试使用基于 XML 的协议用 Java 编写客户端 服务器应用程序 但我有一个很大的问题 看这部分客户端代码 InputStream incoming skt getInputStream I get Stream from Soc
  • XCode 4 控制台不会接受用户输入

    在 XCode 4 中 当我运行这样的代码时 string input cout lt lt Enter command lt lt endl getline cin input cout lt lt You entered lt lt i
  • 具有前向声明错误的循环依赖

    在 A hpp 文件中 我有一个结构 其中有一个 B 类的指针 struct state B b 在 A hpp 文件中 我添加了前向声明 并将 B hpp 文件包含在 A cpp 文件中 A hpp class B 在 B hpp 文件中
  • 无法使用 IdHttp 解码响应内容

    我使用 TIdHttp 来获取网页内容 响应头指示内容编码为utf8 我想在控制台中打印内容为CP936 简体中文 但实际内容不可读 Result TEncoding Utf8 GetString ResponseBuffer 我在 pyt
  • 我如何知道空指针异常源自何处?

    我在制作黑莓应用程序时遇到问题 我发现有人制作了一个教程 它做了我尝试过的事情 我复制了教程应用程序的代码来尝试重新创建它 只是为了看看它的实际效果 结果 空指针异常 我想知道是什么触发了这个 我怎么能够 如果您捕获 Throwable 而
  • 如何在 Google Apps 脚本下的 Browser.msgBox 中将文本加粗

    我将以下 Google 脚本链接到一个工作表 function onOpen var text aux texto bold Browser msgBox AVISOS n n1 Prazo impreter vel text aux pa
  • JSP 如何缩放图像?

    有没有办法缩放图像然后在jsp页面中显示 当检索和显示图像时 我想以相同的尺寸显示所有照片 有什么API可以做到吗 我从谷歌搜索过 我发现那些是关于使用 Takeit 缩放图像的 但不能在网络应用程序中工作 您可以使用内置的Java 2D
  • 链接GLEW和其他,_glViewport是唯一未解决的

    我正在使用 G 将我的项目链接到 glew32 glfw opengl32 glu32 等 一切都编译得很好 但是在链接阶段 除了 glViewport 之外的所有内容都链接 我收到此错误 对 glViewport 的未定义引用 我觉得这
  • 如何在流数据集中加载 tar.gz 文件?

    我想从 tar gzip 文件 tgz 进行流式处理 其中包括我实际的 CSV 存储数据 当我的数据以 CSV 文件形式出现时 我已经成功地使用 Spark 2 2 进行结构化流处理 但实际上 数据以 gzipped csv 文件形式出现
  • MySQL GROUP BY 优先

    是否可以使用 GROUP BY 并优先选择记录 例如 我有一大堆联系人数据 可能包含也可能不包含所有信息 在 CSV 意义上 如果可能如下所示 Test User Address1 Address2 email protected emai
  • QML 虚拟键盘隐藏按钮不起作用

    如果我点击键盘 我会遇到问题hide按钮 以下是代码 import QtQuick 2 6 import QtQuick Window 2 2 import QtQuick Controls 2 2 import QtQuick Virtu
  • jQuery 限制显示的元素数量,例如 5

    我可以这么说 ol li Content1 li li Content2 li li Content3 li li Content4 li li Content5 li li Content6 li li Content7 li li Co
  • Matlab 用随机元素生成矩阵

    如何生成一个带有布尔元素的矩阵 但每行的总和等于某个常数 每一行都有相同的数字吗 k 5 m 10 n 10 I sort rand m n 2 M I lt k 如果您不想要相同数量的1每行都有一个 s 而是有一个向量指定每行有多少个1如
  • 麻木。将一个数组中的所有向量行与同一数组中的所有其他向量行进行比较

    我有一个 numpy 数组 如下所示 a array 2 3 0 2 并希望使用 np greater 将每行中的 向量 与其他行进行比较 因此 array False False lt 2 3 compared with 2 3 True
  • 了解 Dean Edwards 的 addevent JavaScript

    我需要帮助理解这段代码 重点是什么handler guid 为什么需要哈希表 重点是什么 if element on type handlers 0 element on type 文中的 这个 指的是什么handleEvent 元素还是a
  • 在 PHP 中分割文本文件

    如何使用 PHP 按字符数将大型文本文件拆分为单独的文件 因此 一个 10 000 个字符的文件每 1000 个字符就会被拆分为 10 个文件 此外 只有在找到句号后才可以拆分吗 Thanks 更新 1 我喜欢 zombats 代码 我删除
  • 单元测试适配器抛出异常:不支持 URI 格式

    在 Visual Studio 2010 中 当我使用以下基本代码创建默认测试项目时
  • 让 PowerShell 等待 Excel 完成刷新数据透视表

    所以我开发了一个Powershell脚本来刷新大约40个大的excel文件并保存它们 在这个脚本中我运行一个excel宏来传递excel ODBC 连接参数 然后在刷新完成后从excel文件中删除它们 我唯一的问题是 对于这 40 个文件中