2009-10-16 12 views
1

Je suis en train d'extraire des 'notes de tâches' de MS Project en utilisant VBA et je veux créer un fichier MS Word .DOC et aussi copier ces textes dans EXCEL.Combiner plusieurs textes RTF dans un fichier RTF en utilisant VBA

Si vous utilisez la propriété Notes des objets Tâche, vous obtenez seulement 255 caractères et la mise en forme ne sera pas conservée. Afin de conserver la mise en forme, vous pouvez convertir le fichier .MPP en .MPD et extraire les notes. Ces notes ont été stockées en utilisant rtf (voir PJDB.HTM pour 'sub getRtf'). De cette façon, je peux extraire toutes les notes et les écrire dans un fichier .rtf. Si j'ouvre ce fichier (contenant plusieurs notes [vérifié]) en utilisant MS Word, je ne vois que la première note (et il a bien été formaté). Les informations que j'ai recueillies sur d'autres sites apprennent qu'un seul texte rtf dans un fichier sera traité et il n'est PAS trivial de joindre plusieurs textes rtf.

Donc, ma question est: est-ce que quelqu'un sait comment combiner plusieurs lignes rtf dans un texte rtf.

Je préfère les réponses utilisant VBA.

Bien sûr, si quelqu'un sait comment extraire les notes de MS Project et de créer un format préservant fichier .DOC, il est bien aussi

Répondre

0

Ceci est probablement pas la bonne réponse, mais vous pouvez le faire en VBA:

Pour chaque fichier RTF, ouvrez et enregistrez dans le Presse-papiers sous forme de texte enrichi (via l'API) et collez-le dans Word.

C'est moche mais ça marche.

+0

est-il un exemple fonctionnel? – Oneide

0

J'avais une tâche similaire à lire RTF à partir d'une base de données et créer un rapport pour tous les enregistrements en préservant le formatage RTF dans un document Word. Le code extrait le fichier RTF de la base de données, l'écrit dans un fichier avec l'extension .rtf, puis insère le fichier dans une cellule de tableau. Je ne pense pas exactement à ce que vous faites, mais le rapport affiche tout le texte formaté de N enregistrements. Par conséquent, les «fichiers» ne sont pas vraiment «combinés».

La table Word a été collée dans Excel manuellement et la mise en forme a été conservée. Je ne connais pas l'équivalent d'InsertFile dans Excel.

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 

Une référence à Microsoft Scripting Runtime est nécessaire et ceci:

Dim ts As TextStream 
    Dim fso As New FileSystemObject