我在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页。
答案 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描述了它们开始和结束的方式,样式是一种痛苦。无论如何,这确实有用。