Pilotage Word à partir d'intranet

ECVP Messages postés 3 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 9 avril 2008 - 8 avril 2008 à 18:20
ECVP Messages postés 3 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 17:46
Bonsoir,

Est-il possible de piloter word (publipostage) à partir d'un intranet si oui comment ?

Merci d'avance

ph_steph

4 réponses

zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
9 avril 2008 à 10:55
Tu peux utiliser word sur le serveur mais c'est vivement déconseillé par Microsoft.

Alors, pour ma société j'ai utilisé un activeX lancé en javascript mais pour que cela fonctionne il faut baisser la sécurité du navigateur pour l'Intranet local :

function

runword(CheminDot, FichierCSV) {

// lancement du dot avec le csv attaché
var wdApp;
wdApp =
new ActiveXObject(
"Word.Application");
wdApp.Visible =
"True";
wdApp.Activate();
wdApp.WindowState = 1;
MonDoc = wdApp.Documents.Open(CheminDot);
MonDoc.MailMerge.opendatasource(FichierCSV);
}

Mon fichier des destinataires est un fichier CSV créé dans ma page ASP.

Sinon, j'ai aussi réalisé des documents words (étiquettes) directement sur le serveur en créant mes modèles dans Word mais enregistré en html.
Je génére donc une page html mais je l'envoi ensuite comme un document Word :HttpContext.Current.Response.Clear()
HttpContext.Current.Response.Buffer =

True
HttpContext.Current.Response.Charset =
""
HttpContext.Current.Response.ContentType =
"application/msword"
HttpContext.Current.Response.Write(FichierTemp)Technique à utiliser que si tu n'as pas beaucoup de modèles .dot.
0
ECVP Messages postés 3 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 13:19
Bonjour,

Ta solution de ton activex me séduit car j'ai le même principe que toi, à savoir la fusion à partir d'un modèle et d'un fichier de données.


Par contre je ne connais pas du tout les activex. Est-ce que la fonction  runword(CheminDot, FichierCSV)
  que tu montres en exemple est un activex.


Si oui, faut-il l'installer ou le déclarer sur le poste client.


Et comment on le lance en javascript ?


merci d'avance


Philippe


 
0
zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
9 avril 2008 à 14:49
l'activeX est une technologie Microsoft qui ne fonctionne que sur IE donc uniquement utilisable dans un Intranet où tout le monde est en IE.

l'activeX c'est ça :
wdApp = new ActiveXObject("Word.Application");

Le sytème que j'utilise, c'est un bouton qui m'ouvre une page spéciale "Mailing".

Dans cette page j'ai une fonction javascript qui se lance à l'ouverture et si c'est du mailing Word, ça lance ma function runword avec CheminDot, le chemin http du fichier dot sur le serveur et FichierCSV est un chemin utilisateur du fichier CSV attaquable par un lecteur réseau.




ma page asp.net :
<%@PageLanguage="VB"AutoEventWireup="false"CodeFile="MailingFACILE.aspx.vb"Inherits="MailingFACILE" %>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"
>
<headrunat
="server">
<title>Mailing FACILE</title
>
<scriptlanguage="JavaScript"type="text/javascript"src="./Script.js"></script
>
</head
>

<formid="form1"runat="server"
>

</form
>

</html
>

mes 2 fonctions javascript dans le fichier Script.js :

function

runword(CheminDot, FichierCSV)
{

// lancement du dot avec le csv attaché
var wdApp;
wdApp = new ActiveXObject("Word.Application");
wdApp.Visible = "True";
wdApp.Activate();
wdApp.WindowState = 1;
MonDoc = wdApp.Documents.Open(CheminDot);
MonDoc.MailMerge.opendatasource(FichierCSV);
}
function

LanceMail()
{

// lancement automatique des mails à l'ouverture de la page MailingFACILE.aspx
if (document.form1.hdnMail.value != 0)
{
if (document.form1.hdnMail.value != "")
{
var PageMail;
PageMail = "mailto:&bcc=" + document.form1.hdnMail.value;
if(PageMail.length < 1000)
{
location.href = PageMail;
window.close();
}else{
document.getElementById("EMail").innerHTML = document.form1.hdnMail.value;
}
} else {

// Pas de mail donc message
}
}else {

// Word
if (lblMessage.Text != "")
{
runword(document.form1.hdnCheminDot.value, document.form1.hdnFichierCSV.value);
window.close();
}
}
}
La seule chose à développer, c'est que je lance pas automatiquement la fusion (mon .dot est vide) mais c'est possible de la faire : MonDoc.MailMerge.Execute;

Voilà,
0
ECVP Messages postés 3 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 17:46
Bonsoir et merci,

Je teste cela demain après-midi et je te tiens au courant.

Philippe
0