Word mit JScript öffnen und Grafik einfügen

Dann lese die Beiträge demnächst konzentrierter durch:
Du kannst in Graph bei Bedarf auch eine komplette Excel-Datei als Datenquelle importieren....
die ensprechende Methode des Graph-Application.Objektes heisst FileImport()
Code:
with (oGraph.Application) { FileImport("c:\\excel.xls"); }

... es ist schön, was du alles willst... nur dann mache auch etwas.
Ich jedenfalls werd dir hier nicht weiterhin jeden einzelnen Codeschnipsel vorkauen.... Infos sollten hier mittlerweile ausreichend verfügbar sein ;-]
 
Danke vielmals,
jetzt habe ich es endlich geschaft.

Nur eine letzte Frage: Muss ich die Legende selbst ausfüllen geht das auch automatisch ?

Hier mein fertiges Code:

<html>
<head>
<title>Graph to Bookmark</title>

<script type="text/javascript">

function launch_word() {
var wd_Application=new ActiveXObject('Word.Application');
wd_Application.Visible=true;

//Word-Dokument öffnen
wd_Application.documents.open('D:/doc.doc');


//Zeiger auf aktuelles Dokument
oDoc=wd_Application.ActiveDocument;

//MSGraph-Object bei Textmarke namens "graph2" einfügen
oShape=oDoc.Bookmarks("graph2").Range.InlineShapes.AddOLEObject('MSGraph.Chart');


//Zeiger auf MSGraph-Object
oGraph=oShape.OLEFormat.Object;


//Excelobjekt erstellen
objExcel = new ActiveXObject ('Excel.Application');


//Exceldatei an Graph übergeben
with (oGraph.Application) { FileImport("d:\\h.xls"); }


//Exel schließen
objExcel.Quit();


//Diagrammgrösse bestimmen
oGraph.width = 500;
oGraph.height = 400;

//Diagrammtyp bestimmen
oGraph.charttype = 51;

//Position der Legende bestimmen
oGraph.Legend.Position = 3;

//Titel festlegen
oGraph.HasTitle = true;
oGraph.HasTitle.Text = 'Daten1';
oGraph.ChartTitle.Text = 'Testgruppen';

//Diagrammdaten übernehmen
oGraph.Application.Update();

//MSGraph beenden
oGraph.Application.Quit();

//Word-Dokument speichern
oDoc.Save();

//MSWord beenden
wd_Application.Application.Quit();



}

</script>
</head>
<body bgcolor="#EEEEEE" text="#000000" link="#AA5522" vlink="#772200" alink="#000000">
<a style="font-size:15pt" href="javascript:launch_word()">Start</a>


</body>
</html>


Vielen Dank nochmals für deine Hilfe !
Gruß Nici
 
Hallo Sven,
kannst du mir bitte sgane wie ich z.B die Hintergrundfarbe oder Achsenbeschriftung einstellen kann ?
Habe folgendes ausprobiert, aber es bleibt immer beim Zugriff auf Excel stehen:

Im Makroeditor bekomme ich folgendes gezeigt um die Gitternetze auszuschalten:

With ActiveChart.Axes(xlValue)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With

Wenn ich nun im Code
oGraph.HasMajorGridlines = False;

eingebe, tut sich nichts. Warum
Dasselbe auch bei Hintergrundfarbe und x,y-Achsenbeschriftung.

Aber
oGraph.ChartTitle.Text = 'Testgruppen'; funktioniert

Bitte nur um einen Hinnweis !

Vielen Dank und Gruß,
Nici
 
Wenn du dir den VBA-Code genau anschaust, wirst du entdecken, dass dort eine bestimmte Achse angesprochen wird(diese Methoden sind dem Axis-Objekt zugeordnet, nicht dem Chart-Objekt):
Code:
With ActiveChart.Axes(xlValue)
Selbiges muss auch in JScript passieren.

Die Hintergrundfarbe ist eine Eigenschaft des ChartFillFormat-Objektes.

Wenn du eine Eigenschaft ermitteln/ändern willst... musst du wissen, die Eigenschaft welchen Objektes es ist.
 
Danke für den Hinnweis,
habe folgenden Code hinzugefügt:
oGraph.ChartArea.Fill.Visible = True;
oGraph.ChartArea.Fill.ForeColor.SchemeColor = 15 KLAPPT
oGraph.ChartArea.Fill.BackColor.SchemeColor = 17 KLAPPT NICHT

Ich möchte das Gitternetz weghaben und Innenfarbe weiß....
Habe wirklich schon alles ausprobiert.

Weißt du was ich falsch mache
 
:( Ich komme einfach nicht weiter....

Habe schon folgende Sachen ausprobiert, ohne Erfolg:

//Farbeinstellungen
oGraph.ChartArea.Fill.visible=true;
oGraph.ChartArea.Fill.ForeColor.SchemeColor=2;
oGraph.ChartArea.Fill.BackColor.SchemeColor=2; KLAPPT NICHT ! GITTERNETZ im Graph bleibt !

//oGraph.ChartArea.Fill.TwoColorGradient msoGradientHorizontal,1 ;
//oGraph.ChartArea.Border.ColorIndex=2;
//BackColor.SchemeColor=17;
//oGraph.BackColor.SchemeColor='17';
//oGraph.HasMinorGridlines = False;
//oGraph.ColorIndex = 2;



//Achsenbeschriftung
WEDER X noch Y-Achse kann beschriftet werden...

//oGraph.Axes(xlSeries).HasTitle=true;
//oGraph.Axes(xlValue).AxisTitle.Text = 'X-Werte';
//oGraph.Axes(xlCategory).AxisTitle.Text='x-Achse';
//oGraph.HasAxis(xlValue, xlPrimary) = true;
//oGraph.AxisTitle.Text='Werte';
//oGraph.Axes.HasTitle = True;
//oGraph.HasLegend = true;
//oGraph.HasLegend.Text = 'x-Achse';
//oGraph.ChartTitle.Characters.Text = "Text..."
//oGraph.Axes(xlCategory, xlPrimary).HasTitle = True
//oGraph.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Gruppen-x"
//oGraph.Axes(xlValue, xlPrimary).HasTitle = True
//oGraph.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "x-Werte"

Danke und Gruß,
Nici
 
Bei den ganzen Achsen.. da müssen die Namen der Achsen(in Anführungszeichen) hinein, oder hast du irgendwo Variablen xlSeries,xlValue,xlCategory deklariert?

Alternativ kannst du die Achsen auch über ihren Index in der Achsen-Auflistung ansprechen(1, 2 ....)
 
Hallo Sven,
die Hintergrundfarbe des Graphen ändert man mit
"oGraph.PlotArea.Interior.ColorIndex = 2;"
nur weiß ich immernoch nicht wie ich die Gitternetze (Gridlines) ausblenden kann. Im MSDN steht:

This example turns off major gridlines for the category axis in Chart1:
Charts("Chart1").Axes(xlCategory).HasMajorGridlines = False

Also:
oGraph.Axes(1,2).HasMajorGridlines = False;
und erhalte als Fehlermeldung:
"Unable to get the Axes Property of the Chart Class"

Habe es auch mit Anführungszeichen versucht.

Und über die Achsenbeschriftung steht in MSDN:
With Charts("Chart1").Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "July Sales"
End With

Also für die x-Achse:
oGraph.Axes(1).HasTitle = true;
oGraph.AxisTitle.Text = 'July Sales';

wobei ich nicht genau weiß, was für (xlCategory) gesetzt werden muß.

Auch darüber habe ich im MSDN gesucht und:

Type Optional Variant. Specifies the axis to return. Can be one of the following XlAxisType constants: xlValue, xlCategory, or xlSeriesAxis (xlSeriesAxis is valid only for 3-D charts).

AxisGroup Optional Variant. Specifies the axis group. Can be one of the following XlAxisGroup constants: xlPrimary or xlSecondary. If this argument is omitted, the primary group is used. 3-D charts have only one axis group.

Aslo müsste ich dafür doch (1) einsetzen können, oder

Vielen Dank und Gruß,
Nici
 
Hallo Sven,

habe jetz fast alle Probleme gelöst außer, daß ich jetzt ein Diagramm mit FEHLERINDIKATOREN dartsellen muß und nicht genau weiß wie die dazugehörige "Graphkonstante" heißt.
Das sind Balken mit "T"´s drauf.
http://www1.hs-bremerhaven.de/gmichaelis/Standardsoftware/Materialien/Excel/Excel5.pdf

Zwar hat die Exceltabelle die ich darstellen will die Formel, aber angezeigt werden die Fehlerindikatoren als neue Spalten.

Als Macro bekomme ich:

ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Tabelle 4").Range( _
"B1,G1,B3:B4,G3:G4"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle 4"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

Demnach müßte es doch der "normale" Säulentyp "51" sein, oder ?

Vielen Dank und Gruß,
Nici
 

Neue Beiträge

Zurück