如何使用 excel 数据生成自定义 word 文档

如何使用 excel 数据生成自定义 word 文档

基本上,我们必须为我们的会议(许多公司参加)制定会议议程,这是一个圆桌讨论,每次只讨论一家公司。一般布局如下:

1.) Firm 1 - Representative
bullet point
bullet point
bullet point
2.) Firm 2 - Representative
bullet point
bullet point
bullet point
3.) Firm 3 - Representative
etc. etc.

我的公司经常需要制作这些文件,公司和代表的资料都保存在 excel 文件中。有没有办法快速生成此文档?

答案1

是的,您可以使用邮件合并来实现这一点。

打开议程模板并转到邮件功能区。转到“选择收件人”,然后从下拉菜单中选择“使用现有列表”。链接后,您可以在文档中插入字段。转到“插入合并字段”以选择要插入的字段。完成后,转到“预览结果”以查看文档。此时您需要选择正确的记录,您可以使用箭头跳过记录来找到它,也可以转到“编辑收件人列表”以查看自定义列表。之后,转到“完成并合并”并选择“编辑单个文档”并选择“当前记录”选项(如果您有多个,我不建议将它们一起执行,因为您仍然必须将它们分成单个文件)。这将创建文档,您需要做的就是保存它。

答案2

我想提出两种可能的解决方案,第一种是非 VBA,另一种是 VBA(宏)。

方法 1(非 VBA):

  • 创建单个工作表工作簿或最好在 Excel 中以表格形式输入会议数据。
  • 在 Word 中打开空白文件。
  • 插入标签,选择目的从下拉按钮。
  • 然后点击从文件创建选项卡,然后浏览到您想要插入的工作簿。
  • 接下来,选择您是否希望链接该对象。
  • 完成好的

方法 2 VBA(宏):

笔记:

  • 这需要 Excel 中的表格(最好使用单个 Sheet 文件)。
  • 在 VB 编辑器中单击工具然后参考并添加此Microsoft Word 12.0 对象库,最后好的。
  • 创造命令按钮在 Excel 工作表中和复制粘贴这个代码就是它。

     Sub CommandButton1_click()
    
    
       Dim tbl As Excel.Range
       Dim WordApp As Word.Application
       Dim myDoc As Word.Document
       Dim WordTable As Word.Table
    
    
       Application.ScreenUpdating = False
       Application.EnableEvents = False
    
    
        Set tbl = ThisWorkbook.Worksheets(Sheet1.Name).ListObjects("Table1").Range
    
    
        On Error Resume Next
    
    
         Set WordApp = GetObject(class:="Word.Application")
    
    
          Err.Clear
    
           If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
    
    
           If Err.Number = 429 Then
    MsgBox "MS-Word not found, aborting now !!."
           GoTo EndRoutine
           End If
    
           On Error GoTo 0
    
    
           WordApp.Visible = True
           WordApp.Activate
    
    
           Set myDoc = WordApp.Documents.Add
    
    
           tbl.Copy
    
    
    
      myDoc.Paragraphs(1).Range.PasteExcelTable _
            LinkedToExcel:=False, _
            WordFormatting:=False, _
            RTF:=False
    
    
            Set WordTable = myDoc.Tables(1)
             WordTable.AutoFitBehavior (wdAutoFitWindow)
    
            EndRoutine:
    
            Application.ScreenUpdating = True
            Application.EnableEvents = True
    
    
            Application.CutCopyMode = False
    
            End Sub
    

注意:在此代码中工作表和表格名称是可编辑的。

答案3

我发现python-docx-模板很有趣:

示例.docx文档:

My house is located
{%- if living_in_town -%}
 in urban area
{%- else -%}
 in countryside
{%- endif -%}
 and I love it.
from docxtpl import DocxTemplate

doc = DocxTemplate("my_word_template.docx")
context = { 'company_name' : "World company" }
doc.render(context)
doc.save("generated_doc.docx")

要从 Excel 读取数据,请参阅https://stackoverflow.com/q/22169325/873282

其他选择:

答案4

我已经创建了这个免费工具来从 excel 数据生成 word 文档,word 模板必须具有带有列名的占位符,如下所示 ${col_name} 可能会有用! https://it-tun.com/exceltoword/

相关内容