我想打开一个 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
所以这从两个方面起作用:
- 我们使用 Word
Paragraph
的Range.Copy
方法。这会捕获段落的所有属性,包括格式。 - 要复制到特定单元格,这是需要使用
Activate
的极少数情况之一。这向 Excel 发出信号,表明即将进行的复制
操作将应用传入对象(在本例中为 Word 段落对象)的所有属性。
确保检查该段落中至少有一个单词。否则粘贴操作将会失败。
这是我的测试 Word 文档:
这是粘贴后的工作簿 Sheet1:
关于vba - 如何将Word 2013中格式化的段落复制到Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50607961/