Word mit JScript öffnen und Grafik einfügen

Ich hab gefunden, wie es geht... hatte wohl Tomaten auf den Augen :)

Mann muss das Object der InlineShapes-Collection des Bookmark-Ranges hinzufügen, dann erscheint es auch dort.

Hier mal nen Beispiel mit den US-Wahlergebnissen
Code:
 	  //Die Daten fürs Diagramm...
      aData=[
               ['Bush',62027782],
               ['Kerry',59026023],
               ['Nader',464211],
               ['Sonstige',1207562]
            ];
      
           //MSWord-Application-Objekt erzeugen   
      oWord = new ActiveXObject('Word.Application');
         
           //Word-Dokument öffnen
      oWord.documents.open('c:/doc.doc');
      
           //Zeiger auf aktuelles Dokument
      oDoc=oWord.ActiveDocument;
      
           //MSGraph-Object bei Textmarke namens "marke" einfügen
      oShape=oDoc.Bookmarks("marke").Range.InlineShapes.AddOLEObject('MSGraph.Chart');
      
           //Zeiger auf MSGraph-Object
      oGraph=oShape.OLEFormat.Object;
         
           //Daten in Diagramm eintragen
      with (oGraph.Application.DataSheet)
           {
           Cells.Delete();
           for(i=0;i<aData.length;++i)
               {
                   Cells(1, i+2).value = aData[i][0];
                   Cells(2, i+2).value = aData[i][1]; 
               }
           }
      
           //Diagrammgrösse bestimmen
      oGraph.width = 500;
      oGraph.height = 400;
      
           //Diagrammtyp bestimmen
      oGraph.charttype = 55;
      
           //Position der Legende bestimmen
      oGraph.Legend.Position = 3;
           
           //Titel festlegen
      oGraph.HasTitle = true;
      oGraph.ChartTitle.Text = 'Ergebnis US-Wahlen';
      
           //Diagrammdaten übernehmen
      oGraph.Application.Update();
       
           //MSGraph beenden
      oGraph.Application.Quit();
      
           //Word-Dokument speichern
      oDoc.Save();
      
           //MSWord beenden
      oWord.Application.Quit();
 
Hallo Sven,

erstmal vielen Dank für die Hilfe.
Habe deinen Quellcode eingebaut aber irgendwie will er nicht so richtig.

Was mach ich falsch
Code:
<html>
<head>
<title>Graph to Bookmark</title>
<script type="text/javascript">
<!--
function graph_to_bookmark {

  //Die Daten fürs Diagramm...
      aData=[
               ['Bush',62027782],
               ['Kerry',59026023],
               ['Nader',464211],
               ['Sonstige',1207562]
            ];
      
           //MSWord-Application-Objekt erzeugen   
      oWord = new ActiveXObject('Word.Application');
         
           //Word-Dokument öffnen
      oWord.documents.open('c:/doc.doc');
      
           //Zeiger auf aktuelles Dokument
      oDoc=oWord.ActiveDocument;
      
           //MSGraph-Object bei Textmarke namens "marke" einfügen
      oShape=oDoc.Bookmarks("marke").Range.InlineShapes.AddOLEObject('MSGraph.Chart');
      
           //Zeiger auf MSGraph-Object
      oGraph=oShape.OLEFormat.Object;
         
           //Daten in Diagramm eintragen
      with (oGraph.Application.DataSheet)
           {
           Cells.Delete();
           for(i=0;i<aData.length;++i)
               {
                   Cells(1, i+2).value = aData[i][0];
                   Cells(2, i+2).value = aData[i][1]; 
               }
           }
      
           //Diagrammgrösse bestimmen
      oGraph.width = 500;
      oGraph.height = 400;
      
           //Diagrammtyp bestimmen
      oGraph.charttype = 55;
      
           //Position der Legende bestimmen
      oGraph.Legend.Position = 3;
           
           //Titel festlegen
      oGraph.HasTitle = true;
      oGraph.ChartTitle.Text = 'Ergebnis US-Wahlen';
      
           //Diagrammdaten übernehmen
      oGraph.Application.Update();
       
           //MSGraph beenden
      oGraph.Application.Quit();
      
           //Word-Dokument speichern
      oDoc.Save();
      
           //MSWord beenden
      oWord.Application.Quit();
      
}
//-->
</script>
</head>
<body bgcolor="#EEEEEE" text="#000000" link="#AA5522" vlink="#772200" alink="#000000">


</body>
</html>
 
  • Hinter dem Funktionsnamen fehlen die Klammern
  • wo rufst du die Funktion auf?
  • welche Fehlermeldungen erhältst du sonst so?


Ansonsten..... ich hab den anderen Beitrag gelesen:
Wo genau soll sich dieses zu ändernde Word-Dokument befinden?

Auf dem Clientrechner?... wenn ja, dann bringt es nichts, dies per ASP zu machen.... ASP läuft serverseitig, die JS-Funktion muss aber auf den Clientrechner zugreifen.....damit dies funktioniert, müssen dort die bereits früher genannten Bedingungen erfüllt sein.

Auf dem Serverrechner?
Ist Office auf dem Server installiert?
Zum Aufbau des ASP-Codes fragst du vielleicht besser im ASP-Board nach.
 
Die Klammern habe ich gesetzt.
Versuche die Funktion im Browser aufzurufen (also in html eingebettet), bekomme aber KEINE Fehlermeldung.Aber die Worddatei wird auch nicht gefüllt.
Habe sogar versucht mit
<script language="JavaScript">
function startWord(strFile)
{
var myApp = new ActiveXObject("Word.Application");
if (myApp != null)
{
myApp.Visible = true;
myApp.Documents.Open(strFile);
}
}
</script>

Word zu öffnen, aber ohne Erfolg!
Was mache ich falsch

Ziel ist es, die Funktion unter ASP aufzurufen.

Gruß Nici
 
Die Funktion rufe ich im body-tag mit
<div ><a style="font-size:7pt" href="javascript:function graph_to_bookmark()">MSGraph nach Word</a></div>
auf.

Gruß Nici
 
Wie genau willst du es nun machen:confused:


In dem anderen Posting bindest du das Skript serverseitig ein... das kannst du dann natürlich nicht clientseitig aufrufen.

Wo befindet sich denn nun die *.doc-Datei... auf dem Server, oder auf dem Clientrechner?


BTW: Ich mache den anderen Thread mal zu... sonst kommen wir da durcheinander;)
(ich mach ihn natürlich auch wieder auf, wenn du drauf bestehst)
 
Es geht darum, Worddokumente mit Text und Diagrammen zu füllen.
Dies alles geschieht auf dem Server wobei die JS-Funktion gekapselt sind.
Nach Aufruf der Funktionen, werden sie mit XSLT transformiert und die Worddateien automatisch generiert.

Es geht mir also hauptsächlich darum, Diagramme aus MSGraph zu genereieren und diese an einer bestimmten Textmarke einzufügen.

Zum ausprobieren wollte ich das erstmal Lokal ausprobieren und später dann serverseitig generieren.

Hoffe ich hab dich nicht allzusehr verwirrt.

Gruß Nici
 
Wenn du es lokal probierst... speichere das Ganze mal mit der Endung *.hta ab, und rufe es dann auf... sonst verhindern die IE-Sicherheitsbeschränkungen wahrscheinlich die Ausführung.

Wenn es dann auch nicht geht, wäre die entsprechende Fehlermeldung von Interesse.
 
Ahso... bei HTA sind ein paar Sachen anders.... z.B. werden Linkziele standardmässig in einem IE-Fenster geöffnet... was bei einem Skriptaufruf wenig vorteilhaft ist.

Ersetze den Aufruf mal durch
Code:
<u onclick="graph_to_bookmark()">MSGraph nach Word</u>
 

Neue Beiträge

Zurück