Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excelvorlage als .xlt öffnen (https://www.delphipraxis.net/186495-excelvorlage-als-xlt-oeffnen.html)

beanbear6 7. Sep 2015 12:27

Excelvorlage als .xlt öffnen
 
Hallo zusammen,
ich versuche zum Einen eine Exceldatei als .xls/.xlsx zu öffnen, das klappt auch sehr gut mit dem Befehl: Excel.Workbooks.Add...
Aber ich bräuchte ne Möglichkeit, eine .xltx zur Bearbeitung zu öffnen. Ich hab in einem anderen Thread gelesen, dass es ein Unterschied sei, wenn man die .xltx mit dem Befehl Add oder Open öffnet. In beiden Fällen jedoch wird mir aus der .xltx eine .xls geöffnet. Seltsamer Weise (was ich schon gelöst habe) gehts mit Worddateien .doc/.dot usw. einwandfrei. Kann mir bitte jemand sagen wie ich aus D5 raus ne Excelvorlage als .xltx öffnen und bearbeiten kann?
Ich Danke Euch für jeeede Hilfe.
Gruß Beanbear

Jumpy 7. Sep 2015 13:12

AW: Excelvorlage als .xlt öffnen
 
Ich habe das gerade mal alleine in Excel-VBA versucht und glaube, dass es nicht geht. Man kann auch keine Parameter angeben, die daran was ändern wie mir scheint. Immer wenn man eine Vorlage öffnet, wird direkt eine neue .xlsx datei davon erzeugt.
Ich glaube das einzige was man machen kann ist die geänderte Vorlage (die ja jetzt wieder eine normale Mappe, keine Vorlage ist) via SaveAs wieder als Vorlage xltx zu speichern, dabei aber nicht vergessen den Parameter FileFormat richtig zu setzen (xlTemplate=17 ?).


Edit: Es geht wie folgt doch, wenn man dem Makroeditor glauben kann, mit dem Parameter Editable:
Workbooks.Open Filename:="C:\Test\Mappe1.xltm", Editable:=True

Zitat:

[...] Wenn die Datei eine Excel-Vorlage darstellt, wird durch Angabe von True die angegebene Vorlage zur Bearbeitung geöffnet. Durch Angabe von False wird eine neue Arbeitsmappe auf der Grundlage der angegebenen Vorlage geöffnet. Der Standardwert lautet False.

EarlyBird 7. Sep 2015 13:23

AW: Excelvorlage als .xlt öffnen
 
ich habe mal ein Makro in Excel aufgezeichnet.
herausgekommen ist folgendes
Delphi-Quellcode:
Workbooks.Open Filename:="G:\Test.xlt", Editable:=True
vielleicht hilft Dir das weiter
Führt man das Makro aus funktioniert es auch richtig.

beanbear6 8. Sep 2015 06:31

AW: Excelvorlage als .xlt öffnen
 
Hi,
hm... ich hab in Delphi jedoch nicht die Möglichkeit beim Befehl diesen Editable-Parameter mit zu liefern...
Hat vielleicht noch jemand eine Idee?? Trotzdem vielen Dank für die Postings..
Gruß beanbear
PS: Hat das vielleicht schon mal jemand in DXE versucht? Evtl ein Bug in D5 oder D7?

Jumpy 8. Sep 2015 08:01

AW: Excelvorlage als .xlt öffnen
 
Zitat:

Zitat von beanbear6 (Beitrag 1315051)
Hi,
hm... ich hab in Delphi jedoch nicht die Möglichkeit beim Befehl diesen Editable-Parameter mit zu liefern...

Das kann ich mir jetzt aber nicht vorstellen. Kannst du mal deinen Code zeigen, wie du auf Excel zugreifst? Im Notfall müsstest du das doch mit lauter EmptyParams hinkriegen:

Workbook.Open(Filename,EmptyParam,EmptyParam,...., EmptyParam,True)

beanbear6 8. Sep 2015 10:08

AW: Excelvorlage als .xlt öffnen
 
Hi,
also hier mal der Code... Wär echt klasse wenn Du mir da helfen könntest, ich kriegs nicht hin...
Delphi-Quellcode:
procedure TDBForm.DBGrid1DblClick(Sender: TObject);
var excel : Variant;
    datei : String;
begin
  If (Table1.FieldByName('DFExt').asstring = '.xlt') or
     (Table1.FieldByName('DFExt').asstring = '.xltx') then begin
    Excel := CreateOleObject('Excel.Application');
    Excel.Visible := True;
    Datei:=Table1.FieldByName('DFNAMEPATH').AsString;
    Excel.Workbooks.Open(Datei, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam,emptyParam, emptyParam,True);
  end;
end;
Das Ganze wird zwar Comiliert, aber dann krieg ich nen Fehler, dass Parameteranzahl nicht stimmt.

nahpets 8. Sep 2015 10:35

AW: Excelvorlage als .xlt öffnen
 
nach https://msdn.microsoft.com/de-de/lib...ice.11%29.aspx müsste der 10 Parameter auf True gesetzt werden.

ungefähr so?
Delphi-Quellcode:
procedure TDBForm.DBGrid1DblClick(Sender: TObject);
var excel : Variant;
    datei : String;
begin
  If (Table1.FieldByName('DFExt').asstring = '.xlt') or
     (Table1.FieldByName('DFExt').asstring = '.xltx') then begin
    Excel := CreateOleObject('Excel.Application');
    Excel.Visible := True;
    Datei:=Table1.FieldByName('DFNAMEPATH').AsString;
    Excel.Workbooks.Open(Datei, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam, emptyParam, true,
                        emptyParam, emptyParam, emptyParam,emptyParam, emptyParam);
  end;
end;

EarlyBird 8. Sep 2015 11:28

AW: Excelvorlage als .xlt öffnen
 
kann sein das Du die Parameter als OleVariant übergeben musst.
Ich glaube auch die Anzahl der Paramter ist je nach verwendeter Excel Versionen unterschiedlich.

Delphi-Quellcode:
procedure TDBForm.DBGrid1DblClick(Sender: TObject);
var excel : Variant;
    datei : String;
    OleString : OleVariant;
    OleBoolean : OleVariant;
begin
  OleBoolean := True;
  If (Table1.FieldByName('DFExt').asstring = '.xlt') or
     (Table1.FieldByName('DFExt').asstring = '.xltx') then begin
    Excel := CreateOleObject('Excel.Application');
    Excel.Visible := True;
    OleString :=Table1.FieldByName('DFNAMEPATH').AsString;
    Excel.Workbooks.Open(OleString , emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam, emptyParam, OleBoolean,
                        emptyParam, emptyParam, emptyParam,emptyParam, emptyParam);
  end;
end;

beanbear6 8. Sep 2015 12:51

AW: Excelvorlage als .xlt öffnen
 
Ou mann ey :-) Ihr seid die BESTEN hier!!! Was würd ich oft nur ohne Eure Hilfe machen..
Vieeelen herzlichen Dank! Habt mir sehr geholfen.
Gruß beanbear

Chemiker 8. Sep 2015 14:51

AW: Excelvorlage als .xlt öffnen
 
Hallo,

es ist auch möglich die Parameter in Workbooks.Open zu bezeichnen, das sorgt dafür das wenn sich die Parameteranzahl ändert trotzdem die richtigen Parameter angesprochen werden. Als weiteres ist es besser die Excel – Instanz mit OLEVariant zu deklarieren. Dafür ist es nicht notwendig den Dateiname und die Boolean als OLEVariant zu deklarieren.

Delphi-Quellcode:
procedure TDBForm.DBGrid1DblClick(Sender: TObject);
var excel : OLEVariant;
    DateiName : String;
begin
  OleBoolean := True;
  If (Table1.FieldByName('DFExt').asstring = '.xlt') or
     (Table1.FieldByName('DFExt').asstring = '.xltx') then begin
    Excel := CreateOleObject('Excel.Application');
    Excel.Visible := True;
    DateiName :=Table1.FieldByName('DFNAMEPATH').AsString;
    Excel.Workbooks.Open(FileName:=DateiName, Editable:=TRUE);
  end;
end;
Bis bald Chemiker


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