Insérer un document Word dans son application
Bonjour,
Malgré mes nombreuses recherches en vain, j e me permet de demander de l'aide pour obtenir une réponse à ma question.
Voici, dans mon projet Visual Basic avec Visual Studio 2017 :
J’automatise Word pour créer une opération de publipostage avec des signets.
Le traitement de mon fichier (.doc), étant « WordApp.Visible = False », comme ça à la fin de ma procédure j’ouvre directement en PDF.
Mon fichier Word et les fichiers TXT se situent dans le répertoire principal…
Je suis tenté de dire que Tout fonctionne bien quand je démarre ma solution…. ! :yaisse2: enfin, Sauf que :
Une fois publié :arf:, mon document Word n’est plus dans mon répertoire alors que pour les fichiers TXT, pas de soucis, car je retrouve bien : « de (.txt) j’ai (.txt.deploy) »
Je précise que j’ai essayé manuellement d’insérer le (.doc) dans le même répertoire que les fichiers (.txt), mais sans résultat.
Code:
1 2 3
|
chemin pour les fichiers txt
My.Computer.FileSystem.ReadAllText("monfichier.txt", System.Text.Encoding.Default) |
Hors publication voici la ligne de commande pour rechercher le (.doc), j’ai même essayé avec (.odt) au cas où.
Code:
1 2 3
|
chemin pour le fichier word
WordDoc = WordApp.Documents.Open(My.Application.Info.DirectoryPath & "\Modèle_Vierge.doc", ReadOnly:=True) |
J’ai essayé également en mettant mon (.doc) dans le répertoire (Resources) car il y a déjà des images, et là, même souci une fois publié, le chemin est introuvable….
Si je réalise un click droit sur le fichier, il me semble qu’il est bien inclus dan le projet…ET POURTANT.
Voici ma question :
Comment intégrer un (.doc) directement dans son application de telle façon qu’une fois publié, le document word (.doc) soit dans le projet ?
Où se trouve mon erreur ?
Par avance, merci.
pour inclure un fichier ressource ni texte, son ou image
Bonjour,
Pour insérer une ressources quelconque en publication :
1°) Ajouter le fichier au projet via le menu Projet/Ajouter un élément existant …. (ou click droit sur l'explorateur et de projet et toujours Ajouter un élément existant ..) (un glisser-poser marche aussi)
Choisir alors le fichier à ajouter (se trouvant de préférence dans votre répertoire de l'application mais pas obligatoire).
2°) dans l'explorateur de solution , faire click droit et 'propriété' sur le fichier qui est apparu et modifier la propriété 'Action de génération' choisir l'option 'Contenu'.
Le fichier est alors considéré comme contenu dans votre application et sera :
- copier dans le répertoire debug lors d'un démarrage sous VS (répertoire que vous utilisez 'My.Application.Info.DirectoryPath').
- distribué avec votre publication quelle qu'en soit la forme de distribution (cd, web, réseau…).
nb utilisez plutôt les nouveaux objets 'Environment.GetFolderPath' et pointer sur un répertoire appdata (local ou user selon vos désidérata) sinon vous risquez d'avoir des problèmes de permission d'accès des utilisateurs non administrateur (ou de contrôle UAC).
Vous devrez gérer manuellement le multi-langue avec cette solution.
Pour inclure un fichier son, texte ou image , utilisez plutôt my.ressources (ou menu projet/propriété de ...monprojet..\ressources) qui gère alors le multi- langue en natif.
acces base de données locale
Bonjour,
Si j'ai bien compris ton problème, dans une autre partie (dans la partie fusion /word de ton code tu accède à une base de type non identifiée via OLEDB) de ton appli, tu accède à une base de données SQL server.
Tu voudrais y accéder non plus via ta connection habituelle (au bureau) mais via une connection 'locale' sur un fichier local.
Pour accéder à une base de données MSSQL (ou toute base de type client/serveur) , il faut un serveur SQL et un client SQL :
- le client SQL est inclut dans ton code via ta connection 'sql connection' qui est une émulation d'un client SQL.
- mais où est le serveur SQL sur ton poste en local ?
Pour que cela marche, il faudrait installer un serveur SQL (express c'est gratuit) sur ton poste pour que tu dispose en local de la partie 'écouteur' du serveur et que tu puisse y attacher (comme ton code tente de la faire) une base de données 'externe' (ton fichier mbf).
Peut être est-ce cela qui manque ?
Sinon un peu plus de précisions (message d'erreur, log sql,..) seraient nécessaires.
Cordialement.
1 pièce(s) jointe(s)
ressources externes vb (ou c#) sous VS
Bonjour,
Pour moi la seule chose à faire une fois le fichier incorporé au projet est de modifier sa propriété de diffusion (action de génération) comme expliqué au 2°).
Pièce jointe 417286
Il est plus simple d'ajouter ce fichier au projet (et éventuellement de le copier dans le dossier projet : propriété 'copier dans le répertoire de sortie' à toujours) car dans ce cas le chemin de l'application en mode debug (le répertoire debug) aura le même contenu que le 'futur' répertoire de l'application.
Le fonctionnement de la publication/diffusion dépend fortement (même si les principes sont les mêmes) de la version de VS aussi je n'inclus pas des fichiers ou autres lors de la publication (c'est également possible ?) mais avec le projet. (soit sous forme de dépendances (dll, …) , des ressources (txt, image, son..) ou des fichiers de l'application = idem le word en cause).
Par contre, en fonction de la publication/diffusion choisie (cd, web, unc , avec ou sans utilisation local , pour tous les utilisateurs ou un seul) , les répertoires d'installations de l'application (sur le poste considéré) ne seront pas les mêmes, ceux-ci allant d'un répertoire dans programme (à l'ancienne) à un répertoire temporaire par utilisateur pour chaque version et/ou appel du logiciel.
Aussi je me débrouille pour que l'application n'utilise pas les fichiers joints (dans notre cas word) directement dans le répertoire de l'application mais en copiant ceux-ci dans un des répertoires AppData prévus à cet effet par Ms Windows (et .net) (soit permanent , soit temporaire, soit celui de l'utilisateur , soit un commun à tous les utilisateurs) en fonction du degré de personnalisation désiré du fichier une fois utilisé.
Cela a le mérite en outre comme je l'expliquais dans le message initial de régler les problèmes de droits d'accès en écriture dans le répertoire de l'application.
J'espère avoir répondu et compléter.
Cordialement.
Bonjour, pourrais-tu me dire comment tu as fait pour ouvrir tes fichiers word. Je rencontre le même problème
Citation:
Envoyé par
BRUNO71
Bonjour à vous,
Merci Phil Rob pour ton implication et p.a.t.c.h. pour ton message clair.
J’ai accès maintenant à mes fichiers après déploiement (fichier Word qu’il soit .dot ou .doc).
Cependant, j’aimerais obtenir de l’aide de la part de p.a.t.c.h. car je n’arrive pas à obtenir de connexion sur mon lieu de travail.
J’ai remplacé mes lignes de code comme ceci :
Code:
1 2 3 4 5
| AVANT
Dim Connexion As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|BDD_essai.mdf;Integrated Security=True")
APRES
Dim Connexion As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" & My.Application.Info.DirectoryPath & "\BDD_ essai.mdf; Integrated Security=True") |
Ces deux lignes fonctionnent bien lorsque je démarre l’appli depuis VisualStudio2017, mais je n’arrive pas à avoir de connexion hors VS2017.
Pour ma part, mes fichiers avant et après déploiement ne sont pas dans le fichier debug.
Si tu as une idée je suis preneur.
Je me demande si je ne vais pas recommencer mon application pour corriger les défauts.
Merci à vous.
Mon doc Word se trouve dans le "Resources" de mon application
Merci beaucoup. Le problème que je rencontre est celui de l’automatisation de Word. Mon doc Word se trouve dans le "Resources" de mon application. Là où je rencontre le même problème que la question posée au début de se post c'est sur l'ouverture de mon fichier Word se trouvant dans le "Resources" de l'application. J'arrive à ouvrir Word et un fichier Word qui se trouve sous le C: Je peux automatiser ce fichier avec les bookmarkers. Mais malgré de très nombreuses recherches je ne trouve pas le moyen d'ouvrir ce fichier. tous les tutos que je trouve montre comment ouvrir un fichier HTML ou un fichier image mais pas le fichier Word de l'application.
D'après ce que je peux lire, il a réussit à le faire.
Merci beaucoup