Récupérer la valeur d'un GetOpenFilename pour la réutiliser

Fermé
Enshuk - 13 mars 2020 à 15:04
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 - 14 mars 2020 à 12:12
Bonjour,

J'ai plusieurs fichiers que j'aimerais concaténer pour les mettre dans un seul fichier.

J'ai écris ce code, ou l'utilisateur peut sélectionner les fichiers qu'ils souhaitent concaténer, mais je bloque sur la dernière partie pour réutiliser la valeur des MsgBox stockés.


Sub CombinerDeuxDocsEnUn()

Dim QuelFichier1
Dim QuelFichier2
  QuelFichier = Application.GetOpenFilename()
    MsgBox QuelFichier
QuelFichier2 = Application.GetOpenFilename()

Dim wrdApp As Object
Dim wrdDoc1 As Object
Dim wrdDoc2 As Object
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc1 = QuelFichier  'Je ne suis pas sûr de la syntaxe pour ces deux lignes
Set wrdDoc2 = QuelFichier2
wrdDoc1.Content.InsertAfter wrdDoc2.Content
wrdDoc1.SaveAs "c:\temp\doc3.doc"
wrdApp.Quit
End Sub




Merci d'avance


Configuration: Windows / Chrome 78.0.3904.97
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
13 mars 2020 à 19:58
Bonjour,

Il faut ouvrir les documents :
Option Explicit
Sub CombinerDeuxDocsEnUn()
Dim wrdApp As Object
Dim wrdDoc1 As Object
Dim wrdDoc2 As Object
Dim QuelFichier1
Dim QuelFichier2
  
  QuelFichier1 = Application.GetOpenFilename()
  If QuelFichier1 = False Then Exit Sub
  QuelFichier2 = Application.GetOpenFilename()
  If QuelFichier2 = False Then Exit Sub
  Set wrdApp = CreateObject("Word.Application")
  wrdApp.Visible = True
  Set wrdDoc1 = wrdApp.Documents.Open(QuelFichier1)
  Set wrdDoc2 = wrdApp.Documents.Open(QuelFichier2)
  wrdDoc1.Content.InsertAfter wrdDoc2.Content
  wrdDoc2.Close False
  wrdDoc1.SaveAs "c:\temp\doc3.doc"
  wrdDoc1.Close False
  wrdApp.Quit
End Sub
1
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 7 226
Modifié le 14 mars 2020 à 12:13
Bonjour,

s'ils sont dans un même répertoire tu peux faire une sélection multiple avec Ctrl+clic et n'appeler qu'une seule fois la boite de dialogue.
Et tant qu'à faire, utiliser un filtre pour n'afficher que les fichiers intéressants :
    QuelsFichiers = Application.GetOpenFilename(filefilter:=" Fichiers Word,*.doc*", MultiSelect:=True)
    If VarType(QuelsFichiers) <> vbBoolean Then
        For i = 1 To UBound(QuelsFichiers)
            MsgBox QuelsFichiers(i)
        Next i
    End If

eric

0