自动创建的Word文档的格式

时间:2014-05-12 17:10:48

标签: excel-vba ms-word vba excel

我在Excel中有一个包含计算机生成的数据库文档的电子表格。我写了一些VBA来提取一些列并将它与我自己的手工类型描述一起折叠,生成一个新的工作表。

结果只是“半”可读,因为Excel不是正确的阅读格式。我想把它翻译成Word,也许每个表一页(总共有25个表)。我的想法是制作一个文档,其最后一页只是格式化,我将根据需要为每个后续页面复制。

我看过一些关于“搜索和替换”类型解决方案的描述,一个使用书签似乎是一个有趣的解决方案,但这些解决方案都没有根据现有页面制作新页面(或其他)。有没有人做过类似的事情?

更新:我根据其他地方找到的代码略有进展:

        wApp.Selection.Goto What:=wdGoToAbsolute, Name:="3"              ' this is the template page
        wDoc.Bookmarks("\Page").Range.Copy            ' copy it
        wApp.Selection.Goto What:=wdGoToPage, Which:=wdGoToLast      ' move to the end of the document
        wApp.Selection.Paste

不幸的是,尽可能编辑,它总是复制并粘贴第一页,而不是第3页。

1 个答案:

答案 0 :(得分:0)

我忘了我发布了这个。我终于找到了一个有效的解决方案,虽然我不满意Word有多么困难。基本上你只能实际通过追加来构建文档,所以我的代码是输入电子表格的一个大循环,循环的内容如下所示:

wDoc.Characters.Last.Select
wApp.Selection.InsertBreak Type:=7  'wdPageBreak
wDoc.Characters.Last.Select
wApp.Selection.InsertAfter Tn
wApp.Selection.Style = wDoc.Styles("Heading 2")
wDoc.Characters.Last.Select
wApp.Selection.InsertAfter " (Table: " & WT.Cells(R, 2) & ")"
wApp.Selection.Style = wDoc.Styles("Heading 4")
wDoc.Characters.Last.Select
wApp.Selection.InsertAfter vbCrLf
wDoc.Characters.Last.Select
wApp.Selection.InsertAfter (WT.Cells(R, 3))
wApp.Selection.Style = wDoc.Styles("No Spacing")
wDoc.Characters.Last.Select
wApp.Selection.InsertAfter vbCrLf
wApp.Selection.InsertAfter vbCrLf

您可以看到基本逻辑,您必须在末尾插入部件,从工作表和InsertAfter中提取位。由于Word描述了它们开始和结束的方式,样式是一种痛苦。无论如何,这确实有用。