AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

Ein Thema von Nekromus · begonnen am 3. Jun 2019 · letzter Beitrag vom 14. Jun 2019
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Nekromus

Registriert seit: 21. Aug 2017
22 Beiträge
 
#1

Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 3. Jun 2019, 15:35
Liebe Community,

Ich habe folgendes Problem:
mit der Verwendung von Office 365 funktioniert mein Code nicht mehr. Mit Excel 2010 funktioniert alles einwandfrei.
Das Problem habe ich bereits identifiziert. Die Series mit den XValues und den Values ist leer bei Verwendung von Office365.
Delphi-Quellcode:
  pts:= ser.Points(EmptyParam) as Points;
          überwachungsvariable:=pts.Count; //= 0 Keine Werte in der Series
          pt:= pts.Item(pts.Count); // Hier knallt es


Die Zuweisung der Werte geschieht in den Zeilen 550 – 575 bei den Funktionen ExcelRangetoString.
Delphi-Quellcode:
function TDoExportForm.ExcelRangeToString(worksheet_name: WideString;
  rng: ExcelRange): WideString;
var
  s: WideString;
begin
  if worksheet_name <> 'then s:= QuotedStr(worksheet_name) + '!'
  else s:= '';

  Result:= '=' + s + rng.AddressLocal[false, false, xlA1, False, EmptyParam];
end;


function TDoExportForm.ExcelRangeToString(_ws: _Worksheet; cell1,
  cell2: OleVariant): WideString;
begin
  Result:= ExcelRangeToString(_ws.Name, _ws.Range[cell1, cell2]);
 end;
Das Result ist im Screenshot dargestellt:

Hat sich etwas in Office365 geändert?

Weitere Zuweisungen habe ich in den Zeilen 1089 ff probiert:
Delphi-Quellcode:
  ser.XValues:= '="DATA1(IGV=0°)"!D3:D62"'; // OLE Fehler
          ser.XValues:= '="DATA1(IGV=0°)"!R[-3]C[-3]:R[-62]C[-3]"'; // OLE Fehler
          ser.XValues:= '="DATA1(IGV=0°)"!R3C3:R62C3"'; // OLE Fehler

          ser.Values:=rng; //Mitglied nicht gefunden
Keine Variante funktioniert. Die .tlb habe ich nicht verändert. Die komplette .pas ist im Anhang.

Hat jemand eine Idee??

Liebe Grüße und Danke
Tom
Miniaturansicht angehängter Grafiken
screenshotexcelrangetostring.jpg  
Angehängte Dateien
Dateityp: pas frmDoExport.pas (52,4 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 3. Jun 2019, 15:50
Ich tue mich jetzt schwer mich durch eine 1700 Zeilen schwere Unit zu wühlen. Hast du kein Minimalbeispiel dass man nachstellen kann ohne Excel-Profi zu sein?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 3. Jun 2019, 16:09
Hallo,
zumindestens hier steht ein Unterschied

https://stackoverflow.com/questions/...nd-office-2013

Da musst Du dich wohl mit "try and error" durchhangeln ...
Probier das doch mal als Macro in den beiden Words und finde (hoffentlich) die Unterschiede.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 3. Jun 2019, 23:29
Hallo,

Du benutzt die „frühe Bindung“ um Excel zu steuern. Der Vorteil ist die Geschwindigkeit, dass bei der Deklaration automatisch IntelliSense zur Verfügung steht. Der Nachteil bei der frühen Bindung ist oftmals das die frühe Bindung an einer bestimmten Excel-Version gebunden ist.
Der große Vorteil bei Verwendung von der „späten Bindung“ besteht hauptsächlich darin, dass unabhängig von der Excel-Version gearbeitet werden kann, allerdings sollte man sich mit Objekten, Methoden und Eigenschaften von Excel vertraut machen.
Wenn Du also Excel – Version unabhängig arbeiten wills, solltest Du Deine Unit auf „späte Bindung“ umstellen.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Nekromus

Registriert seit: 21. Aug 2017
22 Beiträge
 
#5

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 09:06
Hallo hoika,

die Makroaufzeichnung habe ich mal als Screenshot angehängt. Da gibt es keine Unterschiede. Mein Screenshot von RangeToString stimmt ja überein (in Delphi).

@Chemiker,

hast du ein Tutorial zur späten Bindung für mich?

Lieben Dank
Miniaturansicht angehängter Grafiken
makroaufzeichnung.png  
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 09:29
Hallo,
wo setzt du deine Variable ser?

PS:
Ich habe auch keine Lust, die 1.000 Zeilen zu durchgehen.
Heiko
  Mit Zitat antworten Zitat
Nekromus

Registriert seit: 21. Aug 2017
22 Beiträge
 
#7

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 10:31
Delphi-Quellcode:
  for i:= 1 to Excel.Worksheets.Count do begin
    ws:= Excel.Worksheets[i] as _Worksheet;
    if IsDataWorksheet(ws) then begin
      spalteFlow:= FindeSpalte(ws, FlowStr);
      spalteValue:= FindeSpalte(ws, ValueStr);


      if (spalteFlow > 0) and (spalteValue > 0) then begin
        zeilen:= Min(ZaehleZeilen(ws, SpalteFlow), ZaehleZeilen(ws, SpalteValue));
        if Zeilen > 0 then begin
          ser:= sc.NewSeries; //Hier wird neue ser erzeugt
          ser.Name:= ws.Name;
          ser.AxisGroup:= xlPrimary;
          überwachungsvariablestring:=ser.Name;

          cell1:= ws.Cells.Item[3, spalteFlow];
          cell2:= ws.Cells.Item[zeilen +2, spalteFlow];

          ser.XValues:= ExcelRangeToString(ws, cell1, cell2);
Danke für eure Mühe
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 10:42
Hallo,
hm, in dem Macro steht "=', du schreibst '="

Vielleicht mal '+QuotedStr benutzen?
Das ! bei D3 kann ich nicht.


Nimm doch mal testweise genau den gleichen String wie im Macro (auch wenn die Zellen selbst nicht passen).
Heiko
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 10:42
Zum Thema Late Binding bei Excel:

http://excelmatters.com/2013/09/23/v...-late-binding/
Ralph
  Mit Zitat antworten Zitat
Nekromus

Registriert seit: 21. Aug 2017
22 Beiträge
 
#10

AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht

  Alt 4. Jun 2019, 12:23
Hallo hoika,

"/' ist doch nur zwischen VBA und Delphi getauscht. Die direkte Zuweisung mit dem gleichen String habe ich auch schon probiert. Das wirft einen OLE-Fehler.

@Jumpy: Danke

Hat sonst niemand eine Idee? Dann müsste ich ja alle Units zu Late Binding umcoden :/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz