【问题标题】:Using vba to automate a Microsoft Word document with data imported from an Excel sheet, using a variable to filter what data to actually insert使用 vba 自动化 Microsoft Word 文档,其中包含从 Excel 工作表导入的数据,使用变量过滤实际插入的数据
【发布时间】:2016-05-09 01:32:28
【问题描述】:

我正在尝试使用 Excel 中的信息填充 Word 文档。 excel上的表格看起来很简单。

  QUESTION              |YES|  DATA

 Prewritten question 1  | X | Prewritten data 1

 Prewritten question 2  | X | Prewritten data 2

 Prewritten question 3  | X | Prewritten data 3

然后我将如何使用 YES 下的变量 X 的数据自动填充新的 word 文档,只粘贴数据列中保存的预写数据?

我几乎只是使用逐步邮件合并功能在 Word 上完成了这项工作,但是当我能够填充 Word 文档时,预写数据会粘贴,但数据列中的每个粘贴选择都会占用自己的页面在 Word 上,即使它是一个简短的 3 个单词短语。

【问题讨论】:

  • 您是否尝试从 excel 导入表格数据?如果是,那么您可以使用链接粘贴表格,Excel 表格中的任何更改都会反映在 Word 文档中。 See this
  • 对不起,我有点迷路了,“链接任何更改”是一个选项吗?是的,我只是想从 Excel 导入数据,但只有在数据列旁边的 YES 列中标记为“X”的真正变量的数据

标签: excel vba ms-word automation office365


【解决方案1】:

对您来说最简单的方法是不使用代码,使用 Word 字段。

  1. 在 Excel 中,选择数据范围并为其指定名称(范围名称)
  2. 在 Word 插入/文本/快速部件/字段中
  3. 从列表中选择数据库。将出现一个插入数据库按钮,单击该按钮。
  4. 在对话框的步骤 1 中,导航到工作簿的位置并选择它。系统会提示您输入连接协议(OLEDB 很好)。从列表中选择范围名称。
  5. 在步骤 2 中选择“查询选项”。选项卡“选择字段”:在右侧的列表中,选择您不需要的字段,然后单击“删除”。选项卡“过滤记录”:选择“是”列并将比较设置为“等于”并在第三个框中键入 X。
  6. 在第 3 步中单击“插入数据”;请务必激活“将数据作为字段插入”复选框以获取返回工作簿的活动链接。

这将在 Word 文档中插入一个数据库字段,其语法类似于以下内容。按 Alt+F9 在字段结果和字段显示视图之间切换。如果您对数据连接做过任何工作,其中一些对您来说会很熟悉。在任何情况下,您都应该认出靠近开头的文件路径和结尾处的 SQL 选择语句。

{ DATABASE  \d "C:\\Test\\ExcelDataRange.xlsx" 
  \c "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;
  Data Source=C:\\Test\\ExcelDataRange.xlsx;Mode=Read;
  Extended Properties=\"HDR=YES;IMEX=1;\";
  Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";
  Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;
  Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;
  Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;
  Jet OLEDB:Encrypt Database=False;
  Jet OLEDB:Don't Copy Locale on Compact=False;
  Jet OLEDB:Compact Without Replica Repair=False;
  Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;
  Jet OLEDB:Bypass UserInfo Validation=False" 
  \s "SELECT `Data` FROM `Test` WHERE ((`Yes` = 'X'))" }

如果工作簿中的数据发生变化,请在表格中单击并按 F9 以更新字段。 (如果您将行添加到范围,请务必调整范围名称以包含所有行!)

【讨论】:

  • 感谢@cindy 解释得这么好。我希望我能做到 10。
  • 是否可以从嵌入在 word 文档中的 excel 文件中获取数据?谢谢!
  • @skdev75 (只看到这个......)不,不是没有代码。而且它不会是动态的。
猜你喜欢
  • 2011-09-15
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多