使用VBA将多个RTF文本合并为一个RTF文件

时间:2009-10-16 09:35:41

标签: vba ms-word rtf

我正在使用VBA从MS Project中提取“任务备注”,并希望创建一个MS Word .DOC文件,并将这些文本复制到EXCEL中。

如果使用Task对象的Notes属性,则只能获得255个字符,并且不会保留格式。 为了保持格式化,您可以将.MPP文件转换为.MPD并提取注释。这些注释已使用rtf存储(请参阅PJDB.HTM查找'sub getRtf')。 这样我就可以提取所有笔记并将它们写入.rtf文件。 如果我使用MS Word打开该文件(包含多个笔记[我已验证])我只能看到第一个笔记(并且格式已经很好)。 我从其他网站收集的信息只能处理文件中的一个rtf文本,加入多个rtf文本并不容易。

所以我的问题是: 有没有人知道如何将几个rtf线组合成一个rtf文本。

我更喜欢使用VBA的答案。

当然,如果有人知道如何从MS Project中提取笔记并创建一个保留格式的.DOC文件,那么也可以

2 个答案:

答案 0 :(得分:0)

这可能不是正确答案,但您可以在VBA中执行此操作:

对于每个RTF文件,打开并以富文本格式(通过API)保存到剪贴板,然后粘贴到单词中。

这很难看,但确实有效。

答案 1 :(得分:0)

我有类似的任务从数据库中读取RTF并为保留Word文档中的RTF格式的所有记录创建报告。代码从DB获取RTF,将其写入扩展名为.rtf的文件,然后将文件插入表格单元格。我猜你的确不完全正确,但报告确实显示了N条记录中的所有格式化文本。

所以“文件”并没有真正“合并”。

Word表格手动粘贴到Excel中并保留了格式。我不知道在Excel中等效于InsertFile。

    RS.Open SQL, con
    Do Until RS.EOF
        Set ts = fso.CreateTextFile("c:\temp\temp.rtf", True)
        ts.Write RS(0)
        ts.Close
        If iRow > 1 Then tbl.Rows.Add
        tbl.Cell(iRow, 1).Range.InsertFile "C:\temp\temp.rtf", , False
        .....
        iRow = iRow + 1
        RS.MoveNext
    Loop

需要对Microsoft Scripting Runtime的引用,并且:

    Dim ts As TextStream
    Dim fso As New FileSystemObject