我需要你的帮助才能完成我的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
答案 0 :(得分:0)
使用Excel宏录制器将一些示例文本更改为您感兴趣的不同字体,大小,前景色和背景色。代码在MS Word文档中的工作方式相同,只是文字与Excel中的语法不同。 (Google MS Word VBA更改字体颜色以获取示例)
可以使用format命令设置日期和数字格式。阅读它。
Google MS Word VBA,用于向右/向下移动关于如何强制换行的字符,单词或段落。
如果您不了解MS Word对象模型,则难以使用它。我花了很多时间通过立即窗口测试不同的代码。由于Word文档的自由格式性质与Excel单元格中的内容相比,需要进行大量的反复试验才能使一切正常。
祝你好运!