Sub test()
Dim wrdApp As Word.Application
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Dim wrdDoc As Word.Document
Set wrdDoc = wrdApp.Documents.Add
Dim wrdTbl As Word.Table
Set wrdTbl = wrdDoc.Tables.Add(Range:=wrdDoc.Range, NumRows:=6, NumColumns:=1)
With wrdTbl
.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
.Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle
.Borders(wdBorderVertical).LineStyle = wdLineStyleSingle
For r = 1 To 6
.Cell(r, 1).Range.Text = ActiveSheet.Cells(r, 1).Value
Next r
End With
' Dim temp3 As ListGalleries
For r = 1 To 6 Step 2
Set temp3 = wrdApp.ListGalleries(wdNumberGallery).ListTemplates(1).ListLevels(1)
With temp3
.NumberFormat = "%1."
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleArabic
.NumberPosition = CentimetersToPoints(0.63)
.Alignment = wdListLevelAlignLeft
.TextPosition = CentimetersToPoints(1.27)
.TabPosition = wdUndefined
.StartAt = r
End With
Dim rng As Range
Set rng = wrdDoc.Range(Start:=wrdDoc.Range.Rows(1).Range.Start, End:=wrdDoc.Range.Rows(6).Range.End)
rng.ListFormat.ApplyListTemplate ListTemplate:=temp3
Next r
End Sub
以上代码在Word VBA中运行良好,但在Excel中运行不正常。 不知道为什么Excel中的ListGalleries如此难以控制Word ... 已经在网上找到了数百万条,但很难找到。 有人可以帮忙吗?我很绝望... 在Word VBA上接近零线上报道......
答案 0 :(得分:1)
在Excel中,您需要添加对Word对象模型的引用:
在makro编辑器(Alt + F11)中,选择“工具”菜单,然后单击“参考...”。单击“Microsoft Word对象库”旁边的复选框。单击“确定”。现在尝试再次运行宏。
那应该会让你快到那里。
我遇到了一些可能是兼容性问题的错误。你在哪个版本的办公室?我正在Office 2010上测试所有这些。
我必须改变它才能使它工作(至少我是这么认为的,不知道你在最后一个循环中想要达到的目的):
Set rng = wrdDoc.Range(Start:=wrdTbl.Rows(1).Range.Start, End:=wrdTbl.Rows(6).Range.End)
^交换范围设置参数,以便正确检测整个表(不确定这是否是您想要的,因为每次循环运行时都会调用它)。
rng.ListFormat.ApplyListTemplate ListTemplate:=wrdApp.ListGalleries(wdNumberGallery).ListTemplates(1)
^参数ListTemplate应该是ListTemplate对象。您将temp3设置为ListTemplate中包含的ListLevel对象。同样,不确定这是否是您要完成的任务,但根据Office 2010文档,这应该是它应该如何。