Word VBA使用剪贴板替代

时间:2014-08-29 15:50:51

标签: vba ms-word word-vba

任何人都知道如何在不使用剪贴板的情况下将文本从一个文档传输到另一个文档,但保留文本中的所有格式(如粗体和斜体)?

这就是我现在正在做的事情(这些行之间有很多代码可以为我打开目录中的文档,但我现在省略了它们,所以我可以说到这一点) :

Dim rng1, rng2, rngFound as Range
Dim FSO as Scripting.FileSystemObject

For Each File1 in FSO.GetFolder(Directory).Files

'...Open first Document and get cursor to Point A to mark the start of the text
Documents.Open(File1.Path)
Set rng1 = Selection.Range

'...Move cursor to point B to mark the end of the text
Set rng2 = Selection.Range

'...Combine the 2 points and capture everything in between into Clipboard
Set rngFound = (rng1.Start, rng2.Start)
rngFound.Copy

ActiveDocument.Close

'...Open up second Document and paste it in
Documents.Open(File2.Path)
Selection.PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis)

ActiveDocument.Save
ActiveDocument.Close

Next

这样做的问题是我在运行时无法使用剪贴板(这在数百个文档的目录中循环所以需要一段时间)。

我喜欢在没有剪贴板的情况下找到一种方法,但是这样可以保持格式从一个文档到下一个(重要)。#

希望有意义,提前谢谢:)

1 个答案:

答案 0 :(得分:2)

这是使用临时文件和InsertFile的解决方案。

替换路径中的Pgr以获取计算机上实际存在的某个文件夹。

这只是一个概念证明。它打开"C:\Users\Pgr\AppData\Local\Temp\doc1.docx"作为源文档,仅获取它的第二段,将其保存为临时文件,然后返回到目标文档(运行此宏的位置)并使用{{ 1}}将内容放在那里。

InsertFile

我希望这会有所帮助(你或某人......)。