将Excel中的数据合并到多个Word文档中

时间:2015-04-07 18:50:20

标签: excel vba excel-vba ms-word word-vba

我需要你的帮助才能完成我的VBA。如果我希望文本保持不变,就像在具有不同字体,大小和颜色的excel文件中那样,我应该怎么做呢?我应该如何编辑VBA以使其在粘贴数据之前跳出额外的行?

例如:

ITEM ID: 551555

库存: 14

而不是

ITEM ID:551555 在股票:14

Sub Copy2Word()
Const lngHeaderRow = 1
Const lngFirstRow = 2
Dim lngLastRow As Long
Dim lngRow As Long
Const lngFirstCol = 1
Dim lngLastCol As Long
Dim lngCol As Long
Dim objWord As Object
Dim objDoc As Object
Dim objRng As Object
On Error Resume Next
Set objWord = GetObject(Class:="Word.Application")
If objWord Is Nothing Then
    Set objWord = CreateObject(Class:="Word.Application")
    If objWord Is Nothing Then
        MsgBox "Cannot start Word!", vbExclamation
        Exit Sub
    End If
End If
On Error GoTo 0
objWord.ScreenUpdating = False
Set objDoc = objWord.Documents.Add
lngLastRow = Cells(Rows.Count, lngFirstCol).End(xlUp).Row
lngLastCol = Cells(lngHeaderRow, Columns.Count).End(xlToLeft).Column
For lngRow = lngFirstRow To lngLastRow
    Application.StatusBar = "Processing row " & lngRow & " of " & lngLastRow
    For lngCol = lngFirstCol To lngLastCol
        objDoc.Content.InsertAfter Cells(lngHeaderRow, lngCol) & ": " & Cells(lngRow, lngCol)
        If lngCol < lngLastCol Then
            objDoc.Content.InsertParagraphAfter
        End If
    Next lngCol
    If lngRow < lngLastRow Then
        Set objRng = objDoc.Content
        objRng.Collapse Direction:=0 ' wdCollapseEnd
        objRng.InsertBreak 7 ' wdPageBreak
    End If
Next lngRow
Application.StatusBar = False
objWord.ScreenUpdating = True
objWord.Visible = True
End Sub

1 个答案:

答案 0 :(得分:0)

使用Excel宏录制器将一些示例文本更改为您感兴趣的不同字体,大小,前景色和背景色。代码在MS Word文档中的工作方式相同,只是文字与Excel中的语法不同。 (Google MS Word VBA更改字体颜色以获取示例)

可以使用format命令设置日期和数字格式。阅读它。

Google MS Word VBA,用于向右/向下移动关于如何强制换行的字符,单词或段落。

如果您不了解MS Word对象模型,则难以使用它。我花了很多时间通过立即窗口测试不同的代码。由于Word文档的自由格式性质与Excel单元格中的内容相比,需要进行大量的反复试验才能使一切正常。

祝你好运!