2017-02-27 1 views
1

J'ai créé trois objets Word dans VBA, qui sont; A, B et C.Combinaison d'objets Word dans VBA

Je veux combiner en un seul objet Word appelé, D.

J'ai essayé de acheive cela via un document de fusion en vain.

Ma source est le suivant:

Set p_appWord = p_appWordContent.Merge(p_appWordGeneral) 

p_appWord est l'objet principal et (p_appWordContent + p_appWordGeneral) sont des sous-objets.

+2

Vous feriez mieux d'inclure votre code si vous voulez avoir des réponses, s'il vous plaît modifier votre message pour l'ajouter. – R3uK

+0

J'ai ajouté mon code source ici. –

+0

Essayez-vous vraiment de "fusionner" les documents ou souhaitez-vous simplement concaténer tous les documents en un, c'est-à-dire créer un document sur trois? Parce qu'avec "fusionner" vous fusionnez des révisions. – LocEngineer

Répondre

0

Voici un exemple pour obtenir ce que vous souhaitez trois documents, fusionnés en un seul nouveau:

Dim a As String, b As String, c As String, d As Document 
Dim r As Range 

a = "path to first doc" 
b = "path to second doc" 
c = "path to third doc" 
Set d = Documents.Add 

Set r = d.Content 
r.InsertFile a, Link:=False 
Set r = d.Range(d.Content.End - 1, d.Content.End - 1) 
r.InsertFile b, Link:=False 
Set r = d.Range(d.Content.End - 1, d.Content.End - 1) 
r.InsertFile c, Link:=False 

Si vous souhaitez le faire pour un nombre variable de fichiers, vous devez faire une boucle sur eux. Voici un exemple, s'il vous plaît définir une référence à Microsoft Scripting Runtime:

Dim d As Document 
Dim r As Range 
Dim fso As FileSystemObject, fol As Folder, f As File 
Dim fc 

Set fso = New FileSystemObject 
Set fol = fso.GetFolder("path to your files") 

Set d = Documents.Add 

For Each f In fol.Files 
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1) 
    r.InsertFile f.Path, Link:=False 
Next f 

Modifier Si vous souhaitez fusionner tous les documents actuellement ouverts en un sans itérer sur les fichiers, utilisez:

Dim d As Document 
Dim r As Range 
Dim allDocs As Variant 

ReDim allDocs(Documents.Count) 

For i = 1 To Documents.Count 
    allDocs(i - 1) = Documents(i).Name 
Next i 

Set d = Documents.Add 

For i = 0 To UBound(allDocs) - 1 
    Documents(allDocs(i)).Range.Copy 
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1) 
    r.Paste 
Next i 
+0

Merci beaucoup, mais je ne veux pas créer de document Word dans un dossier, je veux créer un objet, puis combiner à 1 objet. Avez-vous une idée? –

+0

Code modifié pour fusionner tous les documents actuellement actifs. – LocEngineer

+0

Est-ce que cela fonctionne ou avez-vous besoin de cela le mois prochain seulement? – LocEngineer