从 Word 中提取嵌入的 Excel 工作表数据

2024-01-17

我有一批嵌入了 Excel 工作表的 Word 文档。用户通过双击工作表图像并打开嵌入的 Excel 对象在 Excel 工作表中输入数据。我需要获取用户输入的数据。

下面是 WORD VBA,其中引用了 Microsoft Excel 15 库。 (Word 和 Excel 对象是在 Office 2010 下创建的。)

我可以找到 OLE 对象,但无法用它做任何事情。在下面的代码中,我尝试将对象分配给工作表对象,但出现类型不匹配错误。

使事情进一步复杂化的是嵌入的 Excel 工作表具有宏。在解决该问题的某些过程中,会打开一个 Excel 窗口,并提示启用宏安全提示。我很可能可以暂时禁用宏检查来解决这个问题。

我所需要做的就是获取工作表中的数据,然后将其复制到其他地方。如果可能的话,我很乐意将工作表复制到外部文件。

我手头有 Office 2010 和 2013,以及 Visual Studio 2010 Pro 和 2014 Express。

如何获取嵌入的工作表数据?

    Sub x()
        Dim oWS As Excel.Worksheet
        Dim oIShape As InlineShape
        For Each oIShape In ActiveDocument.InlineShapes
            If Not oIShape.OLEFormat Is Nothing Then
                 If InStr(1, oIShape.OLEFormat.ProgID, "Excel") Then
                    oIShape.OLEFormat.ActivateAs (oIShape.OLEFormat.ClassType) 'Excel.Sheet.8
                    Set oWS = oIShape  '** type mismatch
                    Debug.Print oWS.Cells(1, 1)
                End If
            End If
        Next oIShape
    End Sub

我使用建议开始之前的尝试:通过VBA修改Word文档中嵌入的Excel工作簿 https://stackoverflow.com/questions/483813/modify-embedded-excel-workbook-in-word-document-via-vba

在正确的引用方面存在一些问题,并且代码弄乱了文档。

下面是另一遍,工作正常,但有一些问题和我不明白的代码。

1)我不想使用编辑模式,但其他模式不起作用 2)完美的引用 Set xlApp = GetObject(, "Excel.Application") 很奇怪。某种未记录的功能?

    Sub TestMacro2()
        Dim lNumShapes As Long
        Dim lShapeCnt As Long
        Dim xlApp As Object
        Dim wrdActDoc As Document
        Dim iRow As Integer
        Dim iCol As Integer

        Set wrdActDoc = ActiveDocument
        For lShapeCnt = 1 To wrdActDoc.InlineShapes.Count
            If wrdActDoc.InlineShapes(lShapeCnt).Type = wdInlineShapeEmbeddedOLEObject Then
                If wrdActDoc.InlineShapes(lShapeCnt).OLEFormat.ProgID = "Excel.Sheet.8" Then
                    wrdActDoc.InlineShapes(lShapeCnt).OLEFormat.Edit
                    Set xlApp = GetObject(, "Excel.Application")
                    With xlApp.Workbooks(1).Worksheets(2) ' can be multiple sheets, #2 is needed in this case
                        For iCol = 3 To .UsedRange.Columns.Count
                            If .Cells(1, iCol) = "" Then Exit For
                           For iRow = 1 To .UsedRange.Rows.Count
                                    Debug.Print .Cells(iRow, iCol) & "; ";
                            Next iRow
                            Debug.Print 'line feed
                        Next iCol
                    End With
                    xlApp.Workbooks(1).Close
                    xlApp.Quit
                    Set xlApp = Nothing
                End If
            End If
        Next lShapeCnt
    End Sub

代码运行良好,足以完成我的提取任务 - 谢谢!


None

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

从 Word 中提取嵌入的 Excel 工作表数据 的相关文章

  • 在组合框中显示可见工作表

    您好 我有以下代码来在组合框中显示工作表 创建工作表后 工作表会自动添加到列表中 我不希望隐藏的工作表在保管箱中可见 我怎么做 Option Explicit Private Sub ComboBox1 Change If ComboBox
  • 将ADODB二进制流转换为字符串vba

    我有以下问题 我有一个存储在服务器上的 CSV 文件 但它有 3 个字符作为分隔符 我想从 URL 加载数据并使用 作为分隔符将数据填充到 Excel 页面的列中 到目前为止 我找到了使用 ADODB 记录集从网站加载文件的代码 但我无法进
  • Pandas 0.22.0:IndexError:读取 xls 时列表索引超出范围

    我正在尝试将 282Mb 65536 行 x 138 列 xls 文件加载到 pandas 数据框中 import pandas as pd import os filename r invoicing xls dir os path di
  • 与 OLE 服务器或 ActiveX 控件通信

    MS Access 2010 Win 7 常规形式我没有故意放置任何 ActiveX 或 OLE 东西 甚至不确定它们是什么 但无论如何 每当我在特定形式的代码中放入某些内容时 它都会说 您作为事件属性设置输入的表达式 XXXXX 产生了以
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 将匹配的行复制到另一张纸中

    我有两张表 sheet1 和sheet 2 我正在查看工作表 1 的 T 列 如果工作表 2 中 T 包含 1 则粘贴完整行 该代码运行良好 但它将sheet2 中的结果粘贴到sheet1 的同一行中 这会导致行之间出现空白 任何人都可以建
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • Excel工作簿关闭后反复打开

    我使用了 Application ontime 方法来调度一些宏 关闭工作簿后 它会一次又一次地打开 为了解决这个问题 我在工作簿上设置了另一个事件 BeforeClosed 现在它显示运行时错误 1004 Object Applicati
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • 在新实例中打开 SAS 程序

    我正在尝试找出一种在单击时默认在增强编辑器的新实例中打开 SAS 程序的方法 问题是asked https stackoverflow com questions 4654876 open sas program in new window
  • numpy NPV 和 Excel NPV 有区别吗?

    我的 Excel 中有一行包含 11 个值 TotalSavings 0 8000 8000 8000 8000 8000 8000 8000 8000 8000 8000 贴现率为 0 08 我在 Excel 中使用 计算 NPVNPV
  • 使用自定义功能区时是否可以阻止 MS Access 自动更改选定的功能区选项卡?

    当使用自定义 UI XML 文件在 Access 中添加多个自定义功能区选项卡时 每当关闭窗体时 选定的功能区选项卡都会变回第一个自定义选项卡 我们从 VBA 以编程方式加载自定义功能区 我已经创建了重现问题的 accdb http sdr
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • 如何通过电子邮件发送 Excel 文件?

    我有一个 excel 文件 Excel 2003 xls 格式 我想用 c 通过电子邮件发送它 我的代码成功发送它 但是当我尝试打开响应文件时 它似乎编码错误 例如 这里是响应文件名 utf 8 B RWxzesOhbW9sw6FzXzIw
  • 通过 Excel / VBA 调用 DLL 中的 C++ 函数在传递双参数时生成异常

    我试图通过 DLL 在 Excel VBA 中使用 C C 静态函数 我在 VS17 中调试时遇到异常 我怀疑这是参数传递方式的问题 它是双精度 EXCEL EXE 中 0x00007FFA28BBA14F kernel32 dll 处抛出
  • Excel - 在一列中查找重复项,然后将数量求和到另一列中?

    查找一列中的重复项 然后将数量求和到另一列中 https i stack imgur com AADjd png DATA RESULT A 1 A 11 A 1 B 7 A 9 C 5 B 2 D 4 B 2 E 8 B 3 C 5 D
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如果 Excel 中的表格包含单元格引用,如何对其进行排序?

    我在工作表 1 中有一个 Excel 数据表 它引用了许多其他工作表中的各种不同单元格 当我尝试对工作表进行排序或过滤时 引用会随着单元格的移动而发生变化 但是 我不想手动进入每个单元格并在各处插入 符号 因为有些引用是连续的 我可能想稍后
  • 在 powershell 中打开 Excel 时出错

    我需要用以下命令打开 Excel 文件CorruptLoad来自 powershell 脚本的参数 但是当我尝试做到这一点时 出现错误Exception calling Open with 15 argument s open method

随机推荐

  • 为什么实际的 Switch 图像/动画没有显示?

    我在 XML 中声明了一个 Switch 它是使用特定主题的 Activity 的一部分
  • 如何正确安装msvcr71.dll

    我如何在 Windows Server 2003 上安装我的软件需要的 msvcr71 dll 我真的不想将此 dll 复制到 system32 文件夹 因为它可能会破坏此目标系统 只需将其复制到程序的所有可执行文件所在的文件夹中即可 这是
  • sprite-kit 游戏中是否可以有 Twitter / Facebook 分享按钮?

    我完全迷失了 我找到的所有教程都是针对带有故事板的 iOS 6 应用程序 我的问题是你是否可以在精灵套件游戏中拥有 Twitter 或 Facebook 共享功能 如果是这样 添加它的最佳方法是什么 我读过的很多教程都使用视图控制器 但 s
  • 内存不足错误图像视图

    我对 imageview 有问题 我有 77 张图片 jpg 和 126 个引用文本 我想要的只是简单的应用程序 我想显示带有背景图片的所有引用 并且我使用 viewflipper 所以当我向左 向右滑动时进入下一个引用 我给你我现在使用的
  • Qt Designer如何更改背景

    这是转帖 我是 Qt Designer 的新手 想要对一些按钮的丑陋做一些事情 我昨天所做的就是在互联网上查找如何在 Qt Designer 中更改屏幕的背景颜色 如何更改按钮的颜色以及如何使其侧面变成另一种颜色 你猜怎么了 我什么也没找到
  • RubyMine 文件夹树不刷新

    今天首次在 Mac OSX Leopard 上使用 RubyMine 2 0 2 如果我在文件系统中创建文件 例如 使用脚本 生成 这些新文件不会出现在 ruby mine 中 我在重新启动程序时取得了有限的成功 因为 db 文件夹中的文件
  • 如何在 pandas DataFrame 中允许重复的列名

    我有一个数据框 我想更新该数据框的列名称 列名有重复的条目 下面的代码给出错误 无法从重复的轴重新索引 list alpha beta gamma alpha df pd DataFrame datframe columns list No
  • Spotify 最新更新:Autohotkeys 脚本损坏

    我曾经使用 AutoHotKey 脚本作为 Spotify 快捷方式 内置快捷方式有限 只有在应用程序处于焦点状态时才有效 我通常在工作时将其保留在后台 不管怎样 它之前已经更新了一百万次了 没有任何问题 但是我下载了最新的 Spotify
  • AVAssetExportSession 卡住(未启动)导出

    我尝试从照片库导出视频 但导出回调从未执行 我定期检查导出进度 进度始终为零 下面的代码在 99 9 的情况下都有效 但有时在某些设备上 绝对随机 它会停止工作 只有重新启动 iPhone 才有帮助 AVAssetExportSession
  • 为什么这封邮件会直接进入垃圾邮件箱?

    我正在使用以下脚本发送邮件 但这总是最终进入垃圾邮件文件夹 为什么 您在发送邮件时必须使用标头 以证明邮件是来自真实来源而不是机器人 尝试这个
  • 使用 CQRS 在 DDD 中进行命令验证

    我正在学习 DDD 并利用 CQRS 模式 我不明白如何在不从数据存储中读取的情况下验证命令处理程序中的业务规则 例如 克里斯想给阿什利一件礼物 该命令可能是 GiveGiftCommand 我什么时候才能验证克里斯确实拥有他想要赠送的礼物
  • PHP 购物车中买一送半价总计

    我正在用 PHP 创建一个购物车 其中一个特定的商品是买一送一半价 当用户购买该商品时 我希望从总数中扣除报价 但我坚持如何从数学上做到这一点 到目前为止 我在 if 循环中从数据库获取数据有类似的内容 total total arrayc
  • 内嵌显示单选按钮列表

    我的页面上有一些广播列表 我面临的问题是单选按钮的文本没有显示在单选按钮的内联中 我已将重复布局放入表和流中 但两者都不起作用 我尝试添加一种显示样式 内联 但这也不起作用 尽管它在复选框上起作用 并且我认为也许它在这里也起作用 这只是一个
  • 增强 Jquery 拖放演示

    我有一个非常匹配的要求这个 Jquery 演示 http jqueryui com demos droppable shopping cart 这是一个简单的购物车演示 基本上我需要对该演示进行两项增强 我需要文本输入以及可用的 产品 因此
  • BizTalk 内部和外部架构

    我在网上读到 您将 外部模式 与 内部模 式 分开 并且永远不要将 内部模式 暴露给任何外部参与者 如果我的解决方案仅充当消息总线来在两个现有系统之间创建松散耦合 我真的需要任何内部模式吗 System A makes a Request
  • 无法验证 Google 访问令牌(段数错误)

    我有非常简单的代码直接来自 Google 网站 https developers google com identity sign in web backend auth using a google api client library
  • 将执行动态查询的结果插入表中

    我有一个动态查询 strQuery执行时会产生包含很多列的结果 我想将此动态查询的结果插入到临时表中 我这样做是因为我想对临时表执行一些过滤并获得所需的结果 之前的帖子也问过类似的问题HERE https stackoverflow com
  • FileSystemWatcher 一段时间后停止引发事件

    我们构建了一个窗口服务来监听文件夹FileSystemWatcher 创建后我们处理文件等等 但几天后该活动停止工作 它有可能被垃圾收集器 GC 收集吗 GC 是否收集它的持有类 这是一个单例 我应该使用弱事件吗 我是否存在导致事件未注册的
  • 如何检测grails中渲染了哪个视图文件

    我必须知道grails 渲染时的视图文件 一种方法是过滤器中的 grails afterView 操作 在这里 我找不到一种方法来知道哪个视图文件已被渲染 那么 有没有什么方法可以让我知道哪个视图文件已被渲染方法渲染 这不太漂亮 但在大多数
  • 从 Word 中提取嵌入的 Excel 工作表数据

    我有一批嵌入了 Excel 工作表的 Word 文档 用户通过双击工作表图像并打开嵌入的 Excel 对象在 Excel 工作表中输入数据 我需要获取用户输入的数据 下面是 WORD VBA 其中引用了 Microsoft Excel 15