2014-05-12 95 views
-1

我有在Excel电子表格中包含了数据库计算机生成的文档。我已经写了一些VBA来提取一些列的和我自己的手类型的描述一起把它折叠,产生一个新的工作表。格式自动创建的Word文档

结果是唯一的“半成品”可读因为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

http://stackoverflow.com/q/2006077可能让你开始。 –

+0

这工作正常1:1置换 - 在一个页面,一个页面了。但我有1:n的替代品。 –

回答

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的数字开始和结束的方式,样式是一种痛苦。无论如何,这是行不通的。