2010-03-03 5 views
3

Nous avons une feuille de calcul Excel qui génère actuellement un rapport à l'aide d'un modèle Word stocké sur le réseau local de l'entreprise. Cela fonctionne bien pour les utilisateurs internes, mais pas pour ceux qui ne sont pas connectés au LAN, par exemple. utilisateurs d'ordinateurs portables.Enregistrer un document Word incorporé dans une feuille de calcul Excel sur disque à l'aide de VBA

La gestion ne souhaite pas distribuer le modèle en tant que fichier séparé à des utilisateurs externes, mais préférerait l'intégrer dans la feuille de calcul sur une feuille de calcul masquée. Il est ensuite proposé que lors de la génération d'un rapport, le modèle incorporé soit enregistré dans le chemin temporaire de l'utilisateur et le rapport généré à partir de là.

Ma question alors, est de savoir comment puis-je enregistrer le modèle Word incorporé sur disque en utilisant VBA. Cela semblerait être une tâche simple mais je n'ai trouvé aucune solution sur google. Toute aide serait appréciée.

+0

Pourriez-vous montrer un code par lequel je peux comprendre comment vous êtes en mesure d'accéder à l'objet de modèle de mot intégré ? Est-ce un OleObject? – shahkalpesh

+0

Il ne s'agit pas d'un logiciel embarqué et ne devrait pas être étiqueté comme tel. - Ian –

Répondre

2

D'accord, je pense que je pourrais avoir une réponse, mais il est testé uniquement dans Excel 2010.

Sub SaveEmbedded() 
Dim sh As Shape 
Dim objWord As Object ''Word.Document 
Dim objOLE As OLEObject 

    ''The shape holding the object from 'Create from file' 
    ''Object 2 is the name of the shape 
    Set sh = ActiveSheet.Shapes("Object 2") 

    ''Activate the contents of the object 
    sh.OLEFormat.Activate 

    ''The OLE Object contained 
    Set objOLE = sh.OLEFormat.Object 

    ''This is the bit that took time 
    Set objWord = objOLE.Object 

    ''Easy enough 
    objWord.SaveAs2 Filename:="c:\docs\template.dot", FileFormat:= _ 
    wdFormatTemplate ''1=wdFormatTemplate 
End Sub 
+0

Salut, merci pour les réponses. Le modèle est un OleObject. Actuellement, il s'agit d'un fichier séparé qui se trouve sur un partage réseau. Nous avons seulement décidé de l'incorporer dans une feuille séparée parce que les utilisateurs d'ordinateur portable ne peuvent pas accéder au partage de réseau, ainsi je n'ai aucun code cet accès est encore l'objet. Nous utilisons Excel 2003 et le code ci-dessus ne fonctionne pas. Il échoue sur la ligne saveas2 avec une erreur 'l'objet ne supporte pas cette propriété ou méthode'. J'ai essayé de changer ceci en saveas mais ensuite j'obtiens 'l'erreur définie par l'application ou par l'objet'. J'ai également essayé de déclarer objWord comme Word.Document. – Paul

+0

SaveAs2 est la version 2010, essayez SaveAs. J'ai une version antérieure mais je ne peux pas tester pour le moment. Déclarer objWord comme Word.Document ne vous aidera à trouver des propriétés grâce à intellisense. – Fionnuala

+0

J'ai le code pour travailler. Par accident, j'ai converti l'objet en une image. Cliquer sur l'objet affiche maintenant = EMBED ("Image", "") au lieu de = EMBED ("Document", "") dans la barre de formule. Utiliser SaveAs maintenant fonctionne et le fichier enregistré est un modèle Word. Merci encore pour votre aide. – Paul

Questions connexes