Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Excel_2010 öffnen -> _FilterDatabase (https://www.delphipraxis.net/180861-excel_2010-oeffnen-_filterdatabase.html)

HolgerCW 25. Jun 2014 10:50

Delphi-Version: 2006

Excel_2010 öffnen -> _FilterDatabase
 
Hallo zusammen,

ich öffne aus Delphi herraus eine Excel-Datei die mir vorgegeben ist. Das heisst ich kann diese nicht verändern.

Leider kommt folgende Meldung wenn ich diese Excel-Datei öffne:

Name darf integriertem Namen nicht gleichen:

Alter Name: _FilterDatabase
Neuer Name: "Diesen kann ich dann eintragen z.B. X und dann läuft es auch"

Wie kann ich diese Meldung abfangen oder umgehen ?

So rufe ich Excel auf:

Delphi-Quellcode:
var
 WorkBk: _WorkBook; //  ein WorkBook deklarieren
 WorkSheet: _WorkSheet; //  ein WorkSheet deklarieren

 XLApp: TExcelApplication;
 _lcid: LCID;

begin
 
 _lcid := GetUserDefaultLCID;

 XLApp := TExcelApplication.Create(XLApp);

 try

  // Zum Server TExcelApplication verbinden
  XLApp.ConnectKind := ckNewInstance;
  XLApp.Connect;

  try

   // WorkBooks zur ExcelApplication hinzufügen
   XLApp.Workbooks.Open(copy(Application.ExeName,1, length(Application.ExeName)-11) + 'Formulare\Formular.xlsm', emptyParam, FALSE,
    emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
    emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
    emptyParam, emptyParam, _lcid);

   // erstes WorkBook auswählen
   WorkBk := XLApp.WorkBooks.Item[1];
   // erstes WorkSheet definieren
   WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
   //WorkSheet := Workbk.sheets['Bestellformular'] as _WorkSheet;

...
Bei "Open" kommt dann diese Meldung.

Danke schon mal

Holger

Jumpy 26. Jun 2014 08:08

AW: Excel_2010 öffnen -> _FilterDatabase
 
Hallo,

kommt diese Meldung auch, wenn du die Excel-Datei von Hand öffnest?

HolgerCW 1. Jul 2014 13:02

AW: Excel_2010 öffnen -> _FilterDatabase
 
Nein, dann kommt die Meldung nicht.

Was kann ich tuen.

Die Excel-Datei ist vorgegeben. Kann da also auch nichts ändern ...

p80286 1. Jul 2014 13:20

AW: Excel_2010 öffnen -> _FilterDatabase
 
Hast Du Dir mal den "NamensManager" (Formeln->Definierte Namen -> Namensmanager) angeschaut?

Wenn beim Erstellen der Excel-Datei etwas schief gegangen ist, könnte man dies vllt. abstellen?

Gruß
K-H

Jumpy 2. Jul 2014 07:53

AW: Excel_2010 öffnen -> _FilterDatabase
 
Mir ist auch noch nicht ganz klar, ob das eine Excel-Meldung ist oder woher die kommt. Du öffnest ja eine .xlsm Datei. Werden da beim On_Open-Event schon irgendwelche Dinge ausgeführt?

p80286 2. Jul 2014 10:17

AW: Excel_2010 öffnen -> _FilterDatabase
 
Angeblich kommt dies bei Excel öfters vor und hat meist mit einer Überschneidung der Druckbereiche bzw. der zugehörigen Namensgebung zu tun.
(warum fällt das nicht auf wenn die Datei geschlossen wird?)

Gruß
K-H

Ostsee 8. Okt 2021 09:28

AW: Excel_2010 öffnen -> _FilterDatabase
 
Ich habe die gleichen Probleme beim Workbooks.Open.
Trotz displayalerts :=False kommt die Meldung.
Es liegt definitiv an einer Excel-Datei mit Filter.
Bei Dateien ohne Filter habe ich kein Problem.
Über den Namensmanager sieht man _FilterDatabase nicht.

Hat jemand schon eine Lösung ?

Chemiker 17. Okt 2021 12:32

AW: Excel_2010 öffnen -> _FilterDatabase
 
Hallo Ostsee,

Herzlich Willkommen in der DP.
Dieser Fehler kann leider vorkommen bei gefilterten Daten. Ich glaube es hängt mit dem Dateinamen zusammen, der für die Mappe verwendet wird. Ich habe zurzeit kein Excel 2010 zu Hand. Aber wenn man unter z.B. „Filter_Mappe_normal.xlsx.“ abspeichert, dann einige Filter aktiviert kann es vorkommen das irgendwann die Fehlermeldung kommt. Wenn diese Fehlermeldung gekommen ist, nutzt es auch nichts die Filter herauszunehmen man bekommt die Datei nicht mehr unter OLE geladen. Selbst wenn man den in Workbook.Open Parameter [CorruptLoad:= xlRepairFile] setzt bekommt man die Datei nicht geladen.
Wenn man die Daten gefiltert in einem z.B. StringGrid einlesen will müssen sie besonders behandelt werden. Die üblichen Möglichkeiten würden alle Daten (also ungefiltert) einlesen, auch wenn z.B. eine Summe gebildet worden ist von den gefilterten Daten, so wird diese Summe auch im StringGrid angezeigt.
Welchen Dateinamen hast Du verwendet?

Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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