![]() |
Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Liste der Anhänge anzeigen (Anzahl: 2)
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:
Das Result ist im Screenshot dargestellt:
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; Hat sich etwas in Office365 geändert? Weitere Zuweisungen habe ich in den Zeilen 1089 ff probiert:
Delphi-Quellcode:
Keine Variante funktioniert. Die .tlb habe ich nicht verändert. Die komplette .pas ist im Anhang.
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 Hat jemand eine Idee?? Liebe Grüße und Danke Tom |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
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?
|
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Hallo,
zumindestens hier steht ein Unterschied ![]() 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. |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
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 |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Hallo,
wo setzt du deine Variable ser? PS: Ich habe auch keine Lust, die 1.000 Zeilen zu durchgehen. |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
Delphi-Quellcode:
Danke für eure Mühe
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); |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
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). |
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
|
AW: Excel Series.Value Zuweisung funktioniert mit Office 365 nicht
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 :/ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz