Announcement

Collapse
No announcement yet.

EXCEL : Problem mit RANGE in zwei 'Bereichen'

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • EXCEL : Problem mit RANGE in zwei 'Bereichen'

    Ich will ein Diagramm erstellen, das Excelmakro sieht so aus

    ActiveChart.SetSourceData Source:=Sheets('ueb').Range("A2:B10,O2:Q10"), PlotBy:=xlColumns

    leider bekomme ich den zweiten Bereich nicht übergeben in Delphi

    Ich hab

    app_Excel.ActiveChart.SetSourceData(app_Excel.work books[1].sheets[4].Range['A2:B10,O2:Q10'],xlColumns);

    leider verschluckt er sich am Range['A2:B10,O2:Q10']

    wenn ich einfach Range['A2:Q10']nehme geht es, leider hab ich dann auch die ganzen Zwischenspalten im Diagramm drin, was ich nicht will !

    Wie übergeb ich dass mit der Range richtig ?

  • #2
    Du musst 2 einzelne Rangebereiche definieren. Dann kannst Du mittels der Funktion Union des Excel Applikationsobjektes beide Rangebereiche zu einem Rangebereich zusammenfügen.
    <PRE>
    a,b,c: Range;
    excel: tExcleApplication
    ws: tExcelworksheet
    begin
    a:=ws.range['A2','B10'];
    b:=ws.range['O2','Q10'];
    c:=excel.union(a,b);

    end;
    </PRE>

    Natürlich muß vorher Application , workbook und worksheet ordentlich aufgebaut sein.

    Ich hoffe es klappt

    Dir

    Comment


    • #3
      Kann imir jemand helfen wie ich dieses stück quelltext richtig hinbekomme ???

      ==========================================<br>

      procedure delphiTest<br>
      var Excel : Variant;<br>
      begin<br>
      try<br>
      Excel:=CreateOleObject('Excel.Application');<br>
      except<br>
      ShowMessage('Fehler');<br>
      end;<br>
      Excel.Visible:=False;<br>
      Excel.Workbooks.Add;<br>

      //////////////////////////////////////////<br>
      // hier werden Daten reingeschrieben<br>
      //////////////////////////////////////////<br>
      <br>
      Excel.Range['A1:A6','C1:C6'].Select;<br>
      Excel.Charts.Add;<br>
      Excel.ActiveChart.Name:= 'Dia';<br>
      <br>
      end;<br>

      =============================================<br>

      ich kann mit der angegebenen Lösung leider keine Erfolge erzielen, da ich die Variable "a" vom Typ "Range" nicht konfiguriert bekomme. In meiner "Uses" Zeile stehen keine zusätzlichen Bibliotheken drin. Welche fehlt mir da? Und geht es vielleicht auch ohne Zusätzliche Bibliotheken?

      Ich dachte an diese Lösung:<br>
      ===========================================<br>
      Excel.Range[Excel.Union(Excel.Range<br>['A1:A6'].Select,Excel.Range['C1:C6'].Select)];<br>
      ===========================================<br>
      Excel.Range[Excel.Union(Excel.Range<br>['A1:A6'],Excel.Range['C1:C6'])];<br>
      ===========================================<br>
      <br>
      Leider wird beides mit einem Fehler quittiert.
      Hat jemand einen Vorschlag???<br>

      Danke RumTob

      Comment

      Working...
      X