AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excelvorlage als .xlt öffnen

Ein Thema von beanbear6 · begonnen am 7. Sep 2015 · letzter Beitrag vom 8. Sep 2015
Antwort Antwort
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#1

Excelvorlage als .xlt öffnen

  Alt 7. Sep 2015, 12:27
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
Reiner
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Excelvorlage als .xlt öffnen

  Alt 7. Sep 2015, 13:12
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.
Ralph

Geändert von Jumpy ( 7. Sep 2015 um 13:26 Uhr)
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#3

AW: Excelvorlage als .xlt öffnen

  Alt 7. Sep 2015, 13:23
ich habe mal ein Makro in Excel aufgezeichnet.
herausgekommen ist folgendes
Workbooks.Open Filename:="G:\Test.xlt", Editable:=True vielleicht hilft Dir das weiter
Führt man das Makro aus funktioniert es auch richtig.

Geändert von EarlyBird ( 7. Sep 2015 um 13:25 Uhr)
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 06:31
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?
Reiner
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 08:01
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)
Ralph
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 10:08
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.
Reiner
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 10:35
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;
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#8

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 11:28
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;

Geändert von EarlyBird ( 8. Sep 2015 um 11:38 Uhr)
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 12:51
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
Reiner
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Excelvorlage als .xlt öffnen

  Alt 8. Sep 2015, 14:51
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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