Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Unterschied zw. Excel 2010 und 2013 ? (https://www.delphipraxis.net/184439-unterschied-zw-excel-2010-und-2013-a.html)

SearchBot 26. Mär 2015 23:19

Unterschied zw. Excel 2010 und 2013 ?
 
Hallo,

ich habe meine Anwendung, mit der ich über OLE ein Excelsheet öffne (Workbook), auslese und die Daten wieder anders speichere. Das funktioniert mit dem Excel 2010 auf meinem PC (und anderen PCs mit der 2010er Version) einwandfrei.

Jetzt ist auf dem Zielsystem aber Excel 2013 installiert. Hier scheint die OLE nicht zu funktionieren, mein Programm konnektiert zwar Excel, aber das Sheet bietet keine Daten an.:pale:

Was könnte da anders sein bzw. wie könnte ich das lösen?

Perlsau 27. Mär 2015 05:49

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Die Antwort lautet wie immer: 42! Mit anderen Worten: Wie soll man dir sagen, was du anders machen müßtest, wenn man gar nicht weiß, was du überhaupt machst? Oder anders ausgedrückt: Ist dein Code so geheim, daß du ihn hier nicht samt Fehlermeldung und der Stelle, an der dieser auftritt, offenbaren kannst?

Lemmy 27. Mär 2015 06:17

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Zitat:

Zitat von SearchBot (Beitrag 1294999)
Was könnte da anders sein

* z.B. Virenscanner der OLE verhindert
* z.B. Office-Installation ohne OLE
* z.B. Office-Paket ohne OLE
* z.B. Fehler in der .NET Framework Installation

mkinzler 27. Mär 2015 06:32

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Oder die 64Bit Version von Office

Bernhard Geyer 27. Mär 2015 07:30

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Zitat:

Zitat von mkinzler (Beitrag 1295010)
Oder die 64Bit Version von Office

Sollte bei zugriff über OLE egal sein. Ist ja kein Plugin für Excel.

Zur Liste von Lemmy wäre noch folgendes zu ergänzen:
- Ist die Installation aktiviert?
- Ist es eine Updateinstallation. Also war zu vor eine älter Excelversion drauf die aktualisiert wurde ohne sie vorher vollständig zu deinstallieren.

Ansonsten: Der Fehler ist in der 42 Zeile

p80286 27. Mär 2015 10:05

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Zitat:

Zitat von SearchBot (Beitrag 1294999)
Jetzt ist auf dem Zielsystem aber Excel 2013 installiert. Hier scheint die OLE nicht zu funktionieren, mein Programm konnektiert zwar Excel, aber das Sheet bietet keine Daten an.:pale:

Was könnte da anders sein bzw. wie könnte ich das lösen?

Nach meiner Erfahrung sollte Excel2013 so wie Excel2010 und noch ältere Versionen über OLE steuerbar sein. Bei mir klappt's ohne Probleme, ohne eine Zeile Code zu ändern. Bleibt die Frage was genau Du da eigentlich machst.

Gruß
K-H

SearchBot 1. Apr 2015 11:54

AW: Unterschied zw. Excel 2010 und 2013 ?
 
Hallo und sorry, daß ich erst jetzt antworte, hatte noch was anderes zu bearbeiten :wink:
Sorry auch für keinen-Einblick, ich hatte beim Frage-stellen meinen Quelltext nicht parat :oops:

Es geht darum, die Spalten auszulesen und in ein Grid zur Weiterverwendung zu kopieren.

Delphi-Quellcode:
procedure TForm1.bt_ExcelConvertClick(Sender: TObject);
//http://www.swissdelphicenter.ch/de/showcode.php?id=156
Const
  xlCellTypeLastCell = $0000000B;
  xlUp = 3;
  xlTextWindows=20;

var
  ColumnRange: OleVariant;
  ExcelApp, Sheet: OleVariant;
  Matrix: Variant;
  ex:TSortGrid;
  x,y,i:integer;
  clip:TClipBoard;
  ExRan:boolean; //lief Excel zuvor? Dann nicht schließen!

function OpenExcel(filename:string):integer; //Rückgabe: Anzahl Zeilen
begin
  try
   ExcelApp.Workbooks.Open(Filename);

   Sheet:=ExcelApp.Workbooks[1].WorkSheets[1];
   Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
    // Get the value of the last row
   result := ExcelApp.ActiveCell.Row;
  except
   result:=0;
  end;
end;

begin
  { Start Excel }
  Memo1.Lines.Add('Kontaktiere Excel...');
  try
    ExcelApp := GetActiveOleObject('Excel.Application');
    ExRan:=true;
  except
    ExRan:=false;
    try
      ExcelApp := CreateOleObject('Excel.Application');
    except
      Memo1.Lines.Add('...gescheitert.');
      ShowMessage(ExcelNichtDa);
      ExcelStatus:=0;
      Exit;
    end;
  end;
  Memo1.Lines.Add('...erfolgreich!'#13);
   ExcelStatus:=2;

   ex:=TSortGrid.createParented(Form1.Handle);

{...}
       x:=OpenExcel(edit1.Text);

       if x>0 then begin
        ex.RowCount := x;
        ex.ColCount := 5;

        clip:=TClipBoard.Create;
        Memo1.Lines.Add('Extrahiere Daten...');
        ExcelApp.Range['A1','A1'].EntireRow.Delete(xlUp);

        for I := 1 to ex.ColCount do begin
         ExcelApp.Range[chr(ord('A')+(i-1))+inttostr(i),chr(ord('A')+(i-1))+inttostr(i)].EntireColumn.Copy(EmptyParam);
         ex.Cols[i-1].text:=Clip.asText;
         Application.ProcessMessages;
        end;
{...}
       end else showError; //also Tabelle hat keinen Inhalt, blabla
Das Problem müsste also im OpenExcel stecken, weil bei Version 2010 gehts, bei Version 2013 nicht (zumindest am Zielrechner ist das so). :?


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