vba - 如何将Word 2013中格式化的段落复制到Excel?

标签 vba excel ms-word

我想打开一个 Word 文档,并将每个格式化的段落复制到 Excel 工作表中其自己的单元格中,保留格式以供进一步处理。 我已经能够将每个段落复制到其自己的单元格中,甚至将项目符号/列表保留在相邻的单元格中。

但是,我可以将段落复制为对象(而不是格式化文本)或纯文本。我无法复制格式化文本。

这是我执行复制的子例程代码:

Private Sub Load_Schedule()
    Dim ParaCount As Integer
    Sheets(FileName).Activate
    Sheets(FileName).Columns(1).AutoFit
    For ParaCount = 1 To wDoc.Paragraphs.Count
        wDoc.Paragraphs(ParaCount).Range.FormattedText.Copy
        Sheets(FileName).Cells(ParaCount, 1).PasteSpecial Paste:=xlPasteFormats
    Next ParaCount
End Sub

我在wDoc端尝试了Range.Copy,并且在Sheets端尝试了各种Paste:=和Cells(ParaCount, 1).Paste。似乎没有什么可以将格式带入单元格。

最佳答案

这有一些技巧和一些需要记住的事情。一、代码:

Option Explicit

Sub ParaCopy()
    Dim wApp As Word.Application
    Dim wDoc As Word.Document
    Set wApp = CreateObject("Word.Application")
    Set wDoc = wApp.Documents.Open("C:\Temp\testdoc.docx", ReadOnly:=True)

    Dim i As Long
    i = 0
    Dim wPara As Word.Paragraph
    For Each wPara In wDoc.Paragraphs
        If wPara.Range.Words.Count > 1 Then
            wPara.Range.Copy
            Sheet1.Range("A1").Offset(i, 0).Activate
            Sheet1.Paste
            i = i + 1
        End If
    Next wPara

    wDoc.Close
    wApp.Quit
End Sub

所以这从两个方面起作用:

  1. 我们使用 Word ParagraphRange.Copy 方法。这会捕获段落的所有属性,包括格式。
  2. 要复制到特定单元格,这是需要使用 Activate 的极少数情况之一。这向 Excel 发出信号,表明即将进行的复制操作将应用传入对象(在本例中为 Word 段落对象)的所有属性。

确保检查该段落中至少有一个单词。否则粘贴操作将会失败。

这是我的测试 Word 文档:

enter image description here

这是粘贴后的工作簿 Sheet1:

enter image description here

关于vba - 如何将Word 2013中格式化的段落复制到Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50607961/

相关文章:

sql - 如何在带有 ADO 的 excel 中使用 sql/VBA 创建表

vba - 检查后台打印程序状态(运行与否)

php - Codeigniter从Excel上传数据并定义列

excel - 具有该名称的查询已存在

url - MS Word 2010 邮件合并 : dynamic url, 相同文本

arrays - 如何更改数组vba中的现有数据

Excel VBA 将项目添加到组合框而不重复项目

excel - 为什么在 Excel/VBA 错误处理中 Err.Description 保持为空?

hyperlink - 如何创建强制MS Word在webdav服务器上编辑文档的HTML链接

用于读取Word文档的Java库