[vb.net] Pb avec Word

Pb avec Word [vb.net] - VB/VBA/VBS - Programmation

Marsh Posté le 30-06-2005 à 10:21:55    

Soft : VB.NET 2003  
Framework : 1.1  
O.S. : WinXP Home
 
 
Salut !  
 
J'essaye de générer un document Word automatiquement depuis VB.NET mais il y a une erreur à l'ouverture du modèle que j'ai créé et je ne sais pas comment résoudre cela.  
 
Voici mon code :  
Code:  

Code :
  1. Dim app As Word.Application
  2.         Dim doc As Word.Document
  3.         app = CreateObject("Word.Application" )
  4.         app.Visible = True
  5.         If societe = 0 Then
  6.             doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis1.dot" )
  7.         Else
  8.             doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis2.dot" )
  9.         End If


 
 
Ca plante au niveau de cette instruction :  

Code :
  1. doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis1.dot" )


 
 
L'erreur est la suivante :  
Une exception non gérée du type 'System.NullReferenceException' s'est produite dans Version1Commercial.exe  
Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.
 
 
Merci pour votre aide !  
 
Alex

Reply

Marsh Posté le 30-06-2005 à 10:21:55   

Reply

Marsh Posté le 30-06-2005 à 10:28:49    

C'est quoi Normal.directory ?

Reply

Marsh Posté le 30-06-2005 à 10:29:00    

Met-y un espion histoire de voir sa valeur

Reply

Marsh Posté le 30-06-2005 à 10:38:08    

Normal c'est le nom d'un module de mon projet et directory contient le chemin de mon exécutable (bin) ! J'ai controlé que le chemin était correct !

Reply

Marsh Posté le 30-06-2005 à 11:01:53    

Essaye:

Set app = CreateObject("Word.Application" )


Message édité par AlainTech le 30-06-2005 à 11:03:03

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 30-06-2005 à 11:09:00    

J'ai essayé avec le set mais ca marche pas !
Par contre, je viens de tester en déclarant app comme ceci :
 
Dim app (et c'est tout)
 
Et ca marche...

Reply

Marsh Posté le 30-06-2005 à 12:20:15    

Par contre j'ai un autre pb :
Je génère un tableau avec 1 ligne et 2 colonnes et après avoir entré du texte dans la 2 ème colonne, j'aimerai sortir du tableau pour pouvoir écrire dans le reste du document !

Reply

Marsh Posté le 30-06-2005 à 13:21:22    

steppenwolf a écrit :

Soft : VB.NET 2003  
Framework : 1.1  
O.S. : WinXP Home
 
 
Salut !  
 
J'essaye de générer un document Word automatiquement depuis VB.NET mais il y a une erreur à l'ouverture du modèle que j'ai créé et je ne sais pas comment résoudre cela.  
 
Voici mon code :  
Code:  

Code :
  1. Dim app As Word.Application
  2.         Dim doc As Word.Document
  3.         app = CreateObject("Word.Application" )
  4.         app.Visible = True
  5.         If societe = 0 Then
  6.             doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis1.dot" )
  7.         Else
  8.             doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis2.dot" )
  9.         End If


 
 
Ca plante au niveau de cette instruction :  

Code :
  1. doc = app.Documents.Add(Template:=Normal.directory & "\edition\devis1.dot" )


 
 
L'erreur est la suivante :  
Une exception non gérée du type 'System.NullReferenceException' s'est produite dans Version1Commercial.exe  
Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.
 
 
Merci pour votre aide !  
 
Alex


 
 
Je ne travaille pas en vbnet mais a premiere vu, il parait logique que vbnet ne reconnaisse pas le ":=" qui est du langage de macro, ce que je te suggere c'est de regarder attentivement la methode "add" et regarder en quel position se trouve le parametre template. Par exemple si add conteint 4 parametres et que template est le troisieme, il faut que tu mettes les autres parametres a nul ce qui donne quelque chose du genre
.All(,,Normal.directory & "\edition\devis2.dot",) un truc du genre.
 
Enfin je garantie rien, je repete que je ne connais aps le vbnet  :pt1cable:  
 
Bon courage

Reply

Marsh Posté le 01-07-2005 à 09:56:49    

jnauche a écrit :

Je ne travaille pas en vbnet mais a premiere vu, il parait logique que vbnet ne reconnaisse pas le ":=" qui est du langage de macro, ce que je te suggere c'est de regarder attentivement la methode "add" et regarder en quel position se trouve le parametre template. Par exemple si add conteint 4 parametres et que template est le troisieme, il faut que tu mettes les autres parametres a nul ce qui donne quelque chose du genre
.All(,,Normal.directory & "\edition\devis2.dot",) un truc du genre.
 
Enfin je garantie rien, je repete que je ne connais aps le vbnet  :pt1cable:  
 
Bon courage


 
Salut !  
 
Merci pour ta réponse, mais le := fonctionne très bien. Le pb vient apparement du type des variables. Même en les instanciant (new) ca ne marche pas, donc la solution que j'ai trouvée (assez crade je le reconnais), c'est de déclarer app et doc sans type : dim app, doc
 
Pour sortir du tableau, j'ai créé un paragraphe que j'ai inséré à la fin du document (ce que je voulais faire) donc à l'extérieur du tableau :

Code :
  1. Dim para1 As Word.Paragraph
  2.      para1 = doc.Content.Paragraphs.Add(doc.Bookmarks.Item("\endofdoc" ).Range)


Ca utilise un bookmark prédéfini (endofdoc) qui permet d'insérer en fin de document.
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed