2017-08-03 3 views
1

Mon code fonctionne lorsqu'il est exécuté à partir du modèle "ouvert" (par exemple Template.dotm) mais pas lorsque j'utilise "new" à partir du modèle "(par exemple, Document1.docx).VBA: erreur d'exécution '91' (code fonctionnant dans le modèle mais pas "nouveau à partir du modèle")

Lorsqu'il est exécuté à partir du code d'erreur "Document1" invites:

"Erreur d'exécution '91' Variable objet ou variable bloc fixe pas"

Debugger souligne:

Unité Selection.MoveDown: = wdLine, nombre: = 129

Mon code dans Microsoft Word Obejcts/Ce document:

Ouvre UserForm1 lors de nouveau document à partir du modèle:

Private Sub Document_New() 
    Userform1.Show 
End Sub 

code dans UserForm1

ÉDITÉE Maintenant "erreur d'exécution '438' Objet ne supp. propriété ou méthode. »

Si CheckBox1 = True il ouvre text.docx et colle son contenu dans la ligne 129 de ce document

Private Sub CommandButton1_Click() 
Dim Newdocument As Document 
Set NewDocument = ThisDocument    
Dim myDoc As Document 
      Set myDoc = Documents.Open(FileName:="C:\Users\Stack\Documents\Text.docx", ReadOnly:=False) 

     ' do some stuff 
     'Opens text document and pastes it in line 129 of this document 
      If CheckBox1 = True Then 



      myDoc.WholeStory 
      myDoc.Copy 

      Newdocument.Activate 

      Selection.MoveDown Unit:=wdLine, Count:=129 
      Selection.PasteAndFormat (wdFormatOriginalFormatting) 

      Application.DisplayAlerts = False 
      myDoc.Close 

     End If 

     Unload Me 
     Exit Sub 

     End Sub 



I probably seem clueless in your eyes, but i am new to VBA and still learning. Debugger now highlights the "mydoc.wholestory" with error '438' 
+0

n'utilisez pas 'Selection'. selon @braX, définissez un objet et utilisez 'myDoc.WholeStory'. ... définit également un objet pour ThisDocument, définissez-le avant myDoc. ... n'utilisez pas non plus copier/coller pour insérer le texte – jsotola

+0

Le problème est que je ne sais pas comment définir ce document car il n'a pas encore été enregistré lors de sa création à partir d'un modèle. J'ai modifié mon post original avec le vôtre et les commentaires @brax pris en considération. :) – OverflowNoob

Répondre

0

Cela a fonctionné:

Selection.InsertFile FileName: = "chemin du fichier"

0

Vous devez utiliser un objet document.

Dim myDoc as Document 
Set myDoc = Documents.Open(FileName:="C:\Users\Stack\Documents\Text.docx", ReadOnly:=False) 

' do some stuff 

myDoc.Close 
+0

Merci de prendre votre temps pour m'aider :) J'ai posté ma tentative d'appliquer l'objet en haut! – OverflowNoob

+0

Je ne peux pas le faire fonctionner à la fois pour le modèle ouvert et nouveau à partir du modèle maintenant :( – OverflowNoob