# Word mit JScript öffnen und Grafik einfügen



## Nici (19. Januar 2005)

Hallo Zusammen, 

ich hatte schonmal gefragt ob jemand weiß, wie ich mit JScript Word automatisieren kann, und viele meinten das ginge nicht.
Habe unter http://www.webreference.com/js/column55/activex.html doch was gefunden, nur weiß iuch nicht so recht wie es verwenden kann.

Wäre sehr nett wenn mir jemand helfen könnte.

Gruß Nici


----------



## Sven Mintel (19. Januar 2005)

Was genau willst du denn machen.....
eine komplette Einführung in MSOffice-Scripting würde den Rahmen etwas sprengen.


----------



## Nici (25. Januar 2005)

Hallo Sven,

ich möchte gerne Diagramme am Server generieren und diese in einen Worddokument an einer bestimmten Textmarke einfügen.

Danke und Gruß, Nici


----------



## Sven Mintel (26. Januar 2005)

Mmmh, das ginge schon irgendwie.
Das Word-Objekt scheint zwar nix zu beinhalten, was den Umgang mit Grafiken erlaubt, aber rein theeoretisch könnte man:

das Diagramm in einem HTML-Dokument anzeigen lassen
die Grafik kopieren(wie, weiss ich momentan nicht, krieg ich aber bestimmt raus)
die Grafik bei der Textmarke einfügen

Das alles würde vorrausetzen:

win-IE
erlauben der unsicheren ActiveX-Objekte
Word ist auf dem Clientrechner installiert.


----------



## Nici (26. Januar 2005)

Hallo Sven,

mit VB kann ich ja Word automatisieren (s.h http://support.microsoft.com/default.aspx?scid=kb;de;316383). Kann ich en Quellcode einfach in JScript übersetzen 

Vielen Dank und Gruß,
Nici


----------



## Sven Mintel (26. Januar 2005)

Im Prinzip ja... die Methoden aus VBS gibts grösstenteils auch in JScript... schreibt sich alles nur anders.
Das Problem ist halt, dass wie gesagt... keine Methode existiert, um ein Bild einzufügen(hab zumindest keine entdeckt).

Aber da du ein Diagramm einfügen willst... da bietet sich doch geradezu an, ein MSGraph-Diagramm in die Word-Datei einzufügen... das ist kein Problem.


----------



## Nici (26. Januar 2005)

Und wie würde sowas mit MSGraph aussehen  Könntest du mir einen Beispiel geben 

Danke und Gruß Nici


----------



## Sven Mintel (28. Januar 2005)

Das Beispiel kann ich posten, wenn ich weiss, wie man das Objekt zum Bookmark hinbekommt(die Methode für Bilder hab ich jetzt auch entdeckt---da ist aber dasselbe Problem....wie kommt das Bild zum Bookmark)

Mal sehn, vielleicht kennt ja im VB-Board jemand eine Möglichkeit


----------



## Nici (4. Februar 2005)

Hallo Sven!

Wollte fragen ob du mit dem Einfügen an Bookmark weitergekommen bist 

Ich leider nicht viel.  Versuche die ganze Zeit den Code von http://support.microsoft.com/default.aspx?scid=kb;de;316383 
in JScript umzusetzen,was mir nicht so ganz gelingt. 

Vielen Dank und Gruß,
Nici


----------



## Sven Mintel (5. Februar 2005)

Bisher hab ich noch keine Möglichkeit entdeckt, bei einem Bookmark ein Diagramm oder Bild einzufügen(im VB-Board gabs leider auch kein Feedback).

Das Problem ist, dass man Diagramme, Bilder oder sonstiges...(was kein Text ist)... nur in sogenannte "Shapes" einfügen kann.... 
ein Bookmark ist kein Shape, man kann bei einem Bookmark auch keine Shapes erzeugen(nach meinem bisherigen Kenntnisstand)... somit wüsst ich nicht, wie das Bild/Diagramm dahinkommt.

Ich werd nochmal recherchieren und probieren.... nerve einfach mal ein bisschen öfter als im 10Tages-Rhythmus , sonst vergess ichs wieder


----------



## Sven Mintel (6. Februar 2005)

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

```
//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();
```


----------



## Nici (8. Februar 2005)

Hallo Sven,

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

Was mach ich falsch 

```
<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>
```


----------



## Sven Mintel (8. Februar 2005)

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.


----------



## Nici (8. Februar 2005)

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


----------



## Nici (8. Februar 2005)

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


----------



## Sven Mintel (8. Februar 2005)

Wie genau willst du es nun machen


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)


----------



## Nici (8. Februar 2005)

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


----------



## Sven Mintel (8. Februar 2005)

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.


----------



## Nici (8. Februar 2005)

Bekomme die Fehlermeldung: "Server oder DNS kann nicht gefunden werden
Internet Explorer" ?


----------



## Sven Mintel (9. Februar 2005)

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

```
<u onclick="graph_to_bookmark()">MSGraph nach Word</u>
```


----------



## Nici (9. Februar 2005)

Morgen Sven,

vielen Dank für deine Hilfe, es klappt jetzt !

Hatte bei der Pfadangabe backslash benutz !

Danke nochmals!

Gruß Nici


----------



## Nici (9. Februar 2005)

Kannst du mir vieleicht noch sagen, wie ich die Daten für den Graph über eine Excelldatei übergeben kann 

Vielen Dank und Gruß,
Nici


----------



## Sven Mintel (9. Februar 2005)

Der Zugriff auf Excel-Dateien erfolgt ähnlich wie bei den Daten von MSGraph.... (wie du auf einzelne Zellen  zugreifst hast du selbst schon unter http://www.tutorials.de/tutorials179807.html#post929200 gepostet).
Ermittle halt die *value*'s der gewünschten Zellen und weise sie dem Diagramm zu.


----------



## Nici (9. Februar 2005)

In VB geht das ja mit 

' excel chart data
    Set rngData = Range("A1:B4") oder 

aber wie sieht das in JScript aus 

Könntest du mir ein Beispiel geben ?

Gruß Nici


----------



## Sven Mintel (9. Februar 2005)

Du hast doch selbst im o.g. Beitrag ein Beispiel gepostet, wo du per JScript auf einzelne Zellen zugreifst


----------



## Nici (9. Februar 2005)

Also irgendwie komme ich nicht so ganz dahinter....

Mit 
      aData=[
               ['Bush',62027782],
               ['Kerry',59026023],
               ['Nader',464211],
               ['Sonstige',1207562]
            ];
bekomme ich ja statisch die Daten ins Diagramm.

MS Graph holt sich ja ein Datasheet (woher ), kann ich die Daten für den Diagramm nicht als Exceldatei übergeben 

Mit meinem geposteten Code habe ich ja nur Daten nach Excel exportiert...

Sorry wenn ich aufm Schlauch stehe.... 

Gruß Nici


----------



## Sven Mintel (10. Februar 2005)

Die Zellwerte von Exceldateien kannst du folgendermassen  auslesen:


```
//MSExcel-Application-Objekt erzeugen 
 
   objExcel = new ActiveXObject('Excel.Application');
        

       //Arbeitsmappe öffnen...beachte hierbei die doppelten Backslashes im Pfad
       //warum das bei Excel anders ist als bspw. bei Word, frag mich nicht 

   objWb=objExcel.Workbooks.Open('c:\\excel.xls');
   

       /**
         * Zellenwert ausgeben
         * Hier wird der Wert von Zelle A2 im Arbeitsblatt "Tabelle1" ermittelt
         * Also: 
         * Zugriff auf Arbeitsblatt: objArbeitsmappe.Sheets('arbeitsblattName')
         * Zugriff auf Zelle:objArbeitsblatt.cells(x,y)
         **/

   alert(objWb.Sheets('Tabelle1').cells(2,1).value);
   
       
       //Excel beenden

   objExcel.Quit();
```
Die Zuweisung an die Zellen des Graph-Objektes erfolgt dann wie in meinem Bsp. mit dem Array.


Du kannst in Graph bei Bedarf auch eine komplette Excel-Datei als Datenquelle importieren....
die ensprechende Methode des Graph-Application.Objektes heisst *FileImport()*

```
with (oGraph.Application)
        {
        FileImport("c:\\excel.xls");
        }
```


----------



## Nici (11. Februar 2005)

Hallo Sven,

die Exceldatei die ich für die Daten des Graphen verwenden möchte, hat in der ersten Zeile die Namen für die Balken und drunter zwei Werte (z.B Zeitraum1 und Zeitraum2). 
Ich muß ja dann dem aData die Werte der Zellen übergeben, so daß er die Legende auch selbst erstellt oder 
Wie fülle ich also das Array aData mit den Daten aus der Exceltablle und wie lautet mein Arbeitzblattname wenn die Datei z.B"h.xls" lautet 

Vielen Dank für deine Hilfe 
Gruß Nici


----------



## Sven Mintel (12. Februar 2005)

Du brauchst die Excel-Daten nicht erst in einen Array zu schreiben.. die kannst du direkt verwenden.

*cells(2,1)* verweist z.B. auf Zelle *A2*
*cells(1,3)* auf Zelle *C1*
*cells(4,5)* auf Zelle *E4*....usw.


Die Arbeitsblattnamen stehen unten auf den Karteireitern.


----------



## Nici (13. Februar 2005)

Aber ich möchte die Tabellen nicht einzeln auslesen, sondern es soll alles automatisch erfolgen.
Es soll mir einfach die Exceldatei öffnen, alles auslesen und an den Graphen übergeben und dabei die Überschriften und Legenden selbst erstellen.

Danke und Gruß,
Nici


----------



## Sven Mintel (13. Februar 2005)

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()
> 
> ```
> ...



... 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 ;-]


----------



## Nici (13. Februar 2005)

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


----------



## Nici (14. Februar 2005)

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


----------



## Sven Mintel (14. Februar 2005)

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): 

```
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.


----------



## Nici (14. Februar 2005)

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


----------



## Nici (14. Februar 2005)

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


----------



## Sven Mintel (15. Februar 2005)

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 ....)


----------



## Nici (16. Februar 2005)

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


----------



## Sven Mintel (18. Februar 2005)

Die VBA-Achsentyp-Konstanten sind in JS nicht verfügbar...wähle 1,2 oder 3....jeweils *eines* davon(3 nur bei 3D-Diagrammen)


----------



## Nici (21. Februar 2005)

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


----------



## Nici (22. Februar 2005)

Hallo Sven,

habe im MSDn folgendes gefunden um Errorbars darzustellen:

Sub AddErrorBars()

    Dim chConstants
    Dim ebCollection
    Dim ebSeries1

    Set chConstants = ChartSpace1.Constants

    ' Set a variable to the collection of error bars for
    ' the first series in the first chart of Chartspace1.
    Set ebCollection = ChartSpace1.Charts(0).SeriesCollection(0).ErrorBarsCollection

    ' Add error bars to the chart.
    ebCollection.Add

    ' Set a variable to the error bars for the data series.
    Set ebSeries1 = ebCollection.Item(0)

    ' Set the error bars so that they represent a certain
    ' percentage of the value of a data point.
    ebSeries1.Type = chConstants.chErrorBarTypePercent

    ' The error bars represent 5% of a data point.
    ebSeries1.Amount = 0.05

End Sub


Wie bekomme ich das nach Jscript übersetzt und kann ich es überhaupt anwenden 

Danke nochmals und Gruß,
Nici


----------



## Nici (22. Februar 2005)

Hallo nochmal Sven,

ich versuche vergeblich ein Fehlerkonfidenzintervall mit einer Exceldatei darzustellen.
Nach 
http://www.herber.de/index.html?http://www.herber.de/forum/archiv/340to344/t343074.htm

veruche ich es in JScript wie folgt:


oGraph.SeriesCollection(2).HasErrorBars = true;
oGraph.SeriesCollection(1).HasErrorBars = true;

das klappt schon gut und ich bekomme die "T"-Striche auch angezeigt. Nur möchte ich dem Fehlerintervall eine bestimmte Zelle in der Exceldatei übergeben und das klappt nicht...

oGraph.SeriesCollection(2).ErrorBar(1,1,-4114,objExcel.Sheets('Tabelle1').cells(2,6).value), objExcel.Sheets('Tabelle1').cells(3,6).value);

Kannst du mir BITTE ein letztes mal helfen...

Danke und Gruß, Nici


----------



## Nici (8. März 2005)

Hallo Sven,

habe die Funktion erneuert doch ich bekomme beim Code:

oGraph.SeriesCollection(1).HasErrorBars = true;
//oGraph.SeriesCollection(1).HasErrorBars = true;

alert(objExcel.Sheets('Tabelle1').cells(2,6).value);
oGraph.SeriesCollection(2).ErrorBar(1,1,-4114,objExcel.Sheets('Tabelle1').cells(2,6).value, objExcel.Sheets('Tabelle1').cells(3,6).value);

zwar die Richtige Zahle an der Stelle (2,6) ausgegeben aber die Fehlermeldung:
Die ErrorBar Methode des Series Objekts konnte nicht ausgeführt werden.

weiß du oder jemand warum 

Vielen Dank und Gruß,
Nici


----------

