/ / Excel VBA pour ouvrir un modèle Word, le peupler, puis l’enregistrer en tant que fichier .docx ailleurs - excel, vba, excel-vba

Excel VBA pour ouvrir un modèle de mot, le peupler, puis l'enregistrer en tant que fichier .docx ailleurs - excel, vba, excel-vba

J'ai créé un modèle de mot avec des espaces réservés telscomme <>, je suis alors en mesure de remplacer automatiquement par ma macro Excel. Lorsque j'ai réessayé ce processus, le mot document s'ouvre à présent en indiquant qu'il s'agit d'un document en lecture seule. Comment suis-je censé enregistrer mon modèle Word afin qu'il puisse être modifié? En outre, lorsque j'ouvre le modèle de mot via ma macro Excel, comment savoir de l'enregistrer en tant que nouveau document Word et de ne pas l'enregistrer en tant que modèle mis à jour?

Voici mon code:

Sub ReplaceText()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Set wApp = CreateObject("Word.Application")
wApp.Visible = True

Set wDoc = wApp.Documents.Open("file name here")

With wDoc
.Application.Selection.Find.Text = "<<name>>"
.Application.Selection.Find.Execute
.Application.Selection = Range("A5")
.Application.Selection.EndOf

.Application.Selection.Find.Text = "<<dob>>"
.Application.Selection.Find.Execute
.Application.Selection = Range("A6")

.SaveAs2 Filename:=("file name goes here"), _
FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
End With

End Sub

Réponses:

2 pour la réponse № 1

Bien que l’approche de @wahwahwah fonctionne, c’est toujoursouvrir le modèle en tant que document à modifier, puis l'enregistrer dans un autre format tout en supprimant les alertes. Je suppose que vous souhaitez obtenir le comportement lors de l'ouverture d'un modèle à partir du shell, ce qui génère un "nouveau" document basé sur le modèle. Vous pouvez y arriver avec le "Ajouter"méthode ainsi;

Set wDoc = wApp.Documents.Add(Template:="file path here", NewTemplate:=False, DocumentType:=0)

5 pour la réponse № 2

Si vous indiquez que le fichier est en lecture seule lors de la définition du nom de fichier et que vous désactivez les alertes, cela devrait résoudre le problème de l'invite:

Set wApp = CreateObject("Word.Application")
wApp.DisplayAlerts = False
Set wDoc = wApp.Documents.Open Filename:="C:DocumentsSomeWordTemplate.dot", ReadOnly:=True

Et quand vous allez sauvegarder le fichier, sauvegardez-leavec l’extension de fichier ".doc" au lieu de ".dot" afin qu’elle soit enregistrée sous un type de fichier Word. Vous pouvez également modifier le nom du fichier et le chemin du répertoire de sortie si vous le souhaitez. (Rappelez-vous également de réactiver les alertes)

With wDoc

.ActiveDocument.SaveAs Filename:="C:DocumentsNewWordDocumentFromTemplate.doc"

End With

wApp.DisplayAlerts = True

J'espère que cela t'aides!