Einzelnen Beitrag anzeigen

SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#1

Excel OLE - Problem nach Speichern

  Alt 4. Dez 2016, 20:22
Hallo,

ich habe ein Excelsheet (xlsx auf Excel2013; Bereiche sind Kennwortgeschützt und Mappe ist freigegeben, was aber die Bearbeitung nicht behindert), das ich in meiner Anwendung öffne, bearbeite und speichere. Klappt erstmal super

Wenn ich nun das gespeicherte Sheet wieder öffne, bekomme ich von Excel einen Namenskonflikt (Siehe Screenshot1) und ich muss 1-2 Namen eintippen.
Dieses Problem gibt es schon lange (google Suche nach "Excel Namenskonflikt Print_Area" bzw. .."Print_Title") - aber es scheint nicht klar zu sein, woher das Problem kommt (sonst hätte es MS wohl schon gefixt!?).

Ich kann wohl wenig falsch machen, wenn ich das Sheet wie folgt erfolgreich öffne:
Delphi-Quellcode:
 
//ich verwende die TExcelApplication-Komponente, die ich einfach "xls" genannt habe
//global habe ich da noch:
var
  wb: _WorkBook;
  ws: _WorkSheet;
  lcid: Integer;

//dann in einem OnClick:
 xls.Connect;
 lcid := GetUserDefaultLCID;
 wb:=xls.Workbooks.Open(
  format('%s\RMA_%s.xlsx',[le_pfad.text,le_RMAnr.text]),
  emptyParam, emptyParam, emptyParam,
  emptyParam, emptyParam, emptyParam,
  emptyParam, emptyParam, emptyParam,
  emptyParam, emptyParam, emptyParam,
  lcid);
 ws:=xls.Sheets[1] as _worksheet;
Später speichere ich meine Änderungen beim Schließen des Programms
Delphi-Quellcode:
 wb.Save(lcid);
 xls.Quit;
Alles gut, keine Fehlermeldungen.

Öffne ich nun das Sheet in Excel direkt und sehe mir mit Strg+F3 die definierten Namen an (weil ich darauf beim googlen gestoßen bin), stehen da plötzlich 2 neue definierte Namen (Siehe Screenshot), nämlich "Print_Area" und "Print_Title", während meine deutschen Namen "Druckbereich" und "Drucktitel" nach wie vor darin stehen und jeweils zeigen sie auf die gleichen Bereiche.

Während es keine Fehlermeldung gibt, wenn ich es nur mit Excel öffne, bekomme ich dieses bekannte Problem angezeigt, wenn ich es mit meinem Programm öffne

Für mich sieht das so aus, als würde beim Einlesen ein Sprachkonflikt die neuen Namen anlegen und somit in der gespeicherten Datei dann auftauchen. Beim erneuten Einlesen versucht Excel das nochmal und da ist ja dann schon dieser Name und man muss manuell einen anderen eintippen.

Wie aber kann man das Problem vermeiden? Liegt es an der Komponente? Oder an der OLE (falsche Sprachversion?), oder ein Bug im Excel beim Einlesen?

Oder - wie immer - mache ich was falsch?
Miniaturansicht angehängter Grafiken
excel_ole_bug.png   excel_ole_bug1.png  
  Mit Zitat antworten Zitat