Variablen Dateinamen übergeben
Moderator: Moderatoren
Variablen Dateinamen übergeben
Hallo zusammen,
ich habe eine wahrscheinlich sehr triviale Frage.
Mit
='file:///C:/Auftrag/2012/00370 - 2012.ods'#$Daten.B31
kann ich aus der angewählten Datei die Zelle auslesen. Nun ist aber der Dateiname variabel und steht in Zelle A5.
Was muss ich ändern damit immer die entsprechende Zelle der ausgewählten Datei ausgelesen wird.
Vielen Dank für Eure Hilfe
TorSo
ich habe eine wahrscheinlich sehr triviale Frage.
Mit
='file:///C:/Auftrag/2012/00370 - 2012.ods'#$Daten.B31
kann ich aus der angewählten Datei die Zelle auslesen. Nun ist aber der Dateiname variabel und steht in Zelle A5.
Was muss ich ändern damit immer die entsprechende Zelle der ausgewählten Datei ausgelesen wird.
Vielen Dank für Eure Hilfe
TorSo
Re: Variablen Dateinamen übergeben
Hallo
Karo
Code: Alles auswählen
=DDE("soffice"; A5 ; "Daten.B31" )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Variablen Dateinamen übergeben
Hallo Karolus,
und danke für die Antwort. Aber kann es sein, dass ich jetzt noch irgendwo den Pfad angeben muss?
Denn wenn ich es so übernehme, wie Du es beschreibst, findet OO nix.
Gruß TorSo
und danke für die Antwort. Aber kann es sein, dass ich jetzt noch irgendwo den Pfad angeben muss?
Denn wenn ich es so übernehme, wie Du es beschreibst, findet OO nix.
Gruß TorSo
Re: Variablen Dateinamen übergeben
Hallo
In A5 steht nur der Dateiname ohne den Rest des Pfads ? →
Karo
In A5 steht nur der Dateiname ohne den Rest des Pfads ? →
Code: Alles auswählen
=DDE("soffice"; "C:/Auftrag/2012/" & A5 ; "Daten.B31" )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Variablen Dateinamen übergeben
Danke nochmals, Karolus,
Deine Vorschlag macht was er soll.
Vielleicht darf ich aber nochmals auf Hilfe hoffen.
Die Jahreszahl in der Pfadangabe ist natürlich nicht immer 2012. Nun habe ich in Zelle A3 das Jahr über die Funktion jetzt() eingefügt, die Zelle mit JJJJ Formatiert und möchte nun den Pfad + A3 + A5 in der Formel unterbringen. Habe nun schon wieder hin- und herprobiert. Bekomme immer wieder Fehlermeldungen.
Ich vermute, dass ich mit den " oder & noch etwas falsch mache.
Oder muss ich nun evtl. in der Formel noch das Format für das Jahr mitgeben und wenn ja, wie?
Gruß TorSo
Deine Vorschlag macht was er soll.
Vielleicht darf ich aber nochmals auf Hilfe hoffen.
Die Jahreszahl in der Pfadangabe ist natürlich nicht immer 2012. Nun habe ich in Zelle A3 das Jahr über die Funktion jetzt() eingefügt, die Zelle mit JJJJ Formatiert und möchte nun den Pfad + A3 + A5 in der Formel unterbringen. Habe nun schon wieder hin- und herprobiert. Bekomme immer wieder Fehlermeldungen.
Ich vermute, dass ich mit den " oder & noch etwas falsch mache.
Oder muss ich nun evtl. in der Formel noch das Format für das Jahr mitgeben und wenn ja, wie?
Gruß TorSo
-
- *****
- Beiträge: 355
- Registriert: So, 09.05.2010 12:37
Re: Variablen Dateinamen übergeben
Hallo,
das Datum wird im Hintergrund vollständig als Zahl gespeichert, auch wenn du die Formatierung JJJJ verwendest.
Versuchs mal mit
in Zelle A3
und der Formel
theindless
das Datum wird im Hintergrund vollständig als Zahl gespeichert, auch wenn du die Formatierung JJJJ verwendest.
Versuchs mal mit
Code: Alles auswählen
=Jahr(jetzt())
und der Formel
Code: Alles auswählen
=DDE("soffice"; "C:/Auftrag/" & A3 & "/" & A5 ; "Daten.B31" )
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Re: Variablen Dateinamen übergeben
hmm... versuche grad es bei mir mit einzubinden, nur irgendwie geht es nicht. kommt nur immer err:510.
ist daran was falsch? wenn ja was und wieso
ich dank euch
Code: Alles auswählen
=DDE("soffice"; d:/die firma/firmamaler umsatzübersicht.ods'#$zahlungseingänge.j3)
ich dank euch
Windows 7 Pro / 64bit
Apache OpenOffice™ 4.0.1
Apache OpenOffice™ 4.0.1
Re: Variablen Dateinamen übergeben
Hallo
DDE möchte ...
a) zwei getrennte Argumente für Dateipfad und Zelladdresse
und
b) möchte es diese Argumente im Gegensatz zu den üblichen Zellverweisen in Textform.
angenommen der Pfad und die Adresse sind in den Zellen B1 und C1 eingetragen, geht dann:
Karo
DDE möchte ...
a) zwei getrennte Argumente für Dateipfad und Zelladdresse
und
b) möchte es diese Argumente im Gegensatz zu den üblichen Zellverweisen in Textform.
Code: Alles auswählen
=DDE("soffice"; "d:/die firma/firmamaler umsatzübersicht.ods" ; "zahlungseingänge.J3" )
Code: Alles auswählen
=DDE("soffice"; B1 ; C1 )
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Variablen Dateinamen übergeben
ah gut, jetzt komme ich klar damit.
dank dir karo.
nur wieso öffnet er jetzt immer die datei schreibgeschützt seitdem ich die daten so abrufe?
habe eben mit dem entwurfsmodus getestet, dachte der wäre es gewesen. ist er aber nicht.
muss dazu sagen das ich über ein button die umsatz-datei aus von einer anderen datei aus aufrufe. und da wird mir jetzt der aktuelle wert immer angezeigt. so brauch ich nicht immer die umsatz-datei aufrufen.
dank dir karo.
nur wieso öffnet er jetzt immer die datei schreibgeschützt seitdem ich die daten so abrufe?
habe eben mit dem entwurfsmodus getestet, dachte der wäre es gewesen. ist er aber nicht.
muss dazu sagen das ich über ein button die umsatz-datei aus von einer anderen datei aus aufrufe. und da wird mir jetzt der aktuelle wert immer angezeigt. so brauch ich nicht immer die umsatz-datei aufrufen.
Windows 7 Pro / 64bit
Apache OpenOffice™ 4.0.1
Apache OpenOffice™ 4.0.1
Re: Variablen Dateinamen übergeben
Erstmal wünsche ich allen hier einen guten Start in die neue Woche.
Dann wiedermal vielen Dank für die gute Hilfe von Euch.
Der Vorschlag von theindless funktioniert fast. Ich habe die Formel der Länge entsprechend meiner Dateiliste runterkopiert. Wenn ich aber nun per Makro die Dateiliste aktualisiere steigt OO komplett aus. Trage ich die Formel für jede Zeile per Hand ein, dann geht´s.
Wo ist der Haken an der Sache.
Vielleicht in diesem Zusammenhang noch wichtig.
Die Liste ist max. 25 Einträge lang.
Es läuft OO 3.4.0 ( noch ) auf Win XP.
Gruß TorSo
Dann wiedermal vielen Dank für die gute Hilfe von Euch.
Der Vorschlag von theindless funktioniert fast. Ich habe die Formel der Länge entsprechend meiner Dateiliste runterkopiert. Wenn ich aber nun per Makro die Dateiliste aktualisiere steigt OO komplett aus. Trage ich die Formel für jede Zeile per Hand ein, dann geht´s.
Wo ist der Haken an der Sache.
Vielleicht in diesem Zusammenhang noch wichtig.
Die Liste ist max. 25 Einträge lang.
Es läuft OO 3.4.0 ( noch ) auf Win XP.
Gruß TorSo
-
- *****
- Beiträge: 355
- Registriert: So, 09.05.2010 12:37
Re: Variablen Dateinamen übergeben
Hallo,
torso ich vermute hier kann dir nur mit einer Beispieldatei geholfen werden.
Zumindest dein Macro müsstest mal zur Verfügung stellen.
theindless
torso ich vermute hier kann dir nur mit einer Beispieldatei geholfen werden.
Zumindest dein Macro müsstest mal zur Verfügung stellen.
theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Re: Variablen Dateinamen übergeben
Guten Morgen, Ihr fleissigen Helfer,
Das Makro stell ich Euch gern zur Verfügung. Vielleicht kennt Ihr´s ja auch schon. Hab ich schliesslich hier gefunden.
Lasse ich das Makro in einem leeren Tabellenblatt laufen, listet es mir eins, zwei, fix alle Dateien des Ordners auf. Habe ich aber in den Zellen daneben die Formel zum auslesen der Zelle drin, dann kommen die Komplikationen. Zu Testzwecken habe ich auch schon die Dateinamen händisch eingefügt und dabei gab´s keine Probleme. Aber das ist ja nicht das Ziel meiner Übung.
Gruß und Dankeschön für Eure offnenen Ohren / Augen
Das Makro stell ich Euch gern zur Verfügung. Vielleicht kennt Ihr´s ja auch schon. Hab ich schliesslich hier gefunden.
Code: Alles auswählen
REM listet alle Dateien eines Verezeichnisses in einem
REM Calc-Sheet auf
Sub Dateien_auflisten
dim sPfad as string
dim oSheet as Object
dim iSp as integer, iZe as Long
oSheet = thisComponent.sheets.getByName("Tabelle1")
iSp = 0 : iZe = 4 'Startzeile der Auflistung B3
sPfad = ConvertToUrL("C:\Auftrag\" & year(now()) & "\")
nextFile = dir(sPfad, 0) 'die erste Datei
Do while nextFile <> ""
oSheet.getCellByPosition(iSp, iZe).string = nextFile
iZe = iZe + 1
nextFile = Dir
loop
End Sub
Gruß und Dankeschön für Eure offnenen Ohren / Augen
Re: Variablen Dateinamen übergeben
Ich nochmal kurz,
die Auflistung startet natürlich in A5 und nicht wie im Kommentar geschrieben in B3.
die Auflistung startet natürlich in A5 und nicht wie im Kommentar geschrieben in B3.
Re: Variablen Dateinamen übergeben
Hallo
Schreib die Dateinamen nicht einzeln nacheinander sondern alle auf einmal mit ...setDataArray()
oder nimm gleich ...setFormulaArray() und pack dort die fertigen Formeln rein:
Mit Python:
Die Angehängte Datei ist noch mit fixen Pfadangaben im Quellcode, das kann man aber noch ändern in Pfadangaben aus anderen Zellen oder per Auswahldialog.
Karo
Schreib die Dateinamen nicht einzeln nacheinander sondern alle auf einmal mit ...setDataArray()
oder nimm gleich ...setFormulaArray() und pack dort die fertigen Formeln rein:
Mit Python:
Code: Alles auswählen
# -*- coding: utf-8 -*-
from glob import glob
context = XSCRIPTCONTEXT
def set_formulas(dummy=None):
doc = context.getDocument()
sel = doc.getCurrentSelection()
template = """='file://%s'#Daten.B31"""
sheet = sel.getSpreadsheet()
icol = sel.RangeAddress.StartColumn
irow = sel.RangeAddress.StartRow
formulas = [( template % f,) for f in glob(r'C:/Auftrag/2012/*.ods')]
endrow = len( formulas ) + irow -1
outrange = sheet.getCellRangeByPosition(icol, irow, icol, endrow)
outrange.setFormulaArray( tuple( formulas ))
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Variablen Dateinamen übergeben
Du kannst dir auch den gesamten Pfad inklusive des Ankers in der Zelle zunächst als Text in einer Zelle des Tabellenblatts zusammenbauen und dann mit der Funktion INDIREKT arbeiten.
Wenn beispielsweise B1 den Text "'file:///C:/Auftrag/2012/00370 - 2012.ods'#$Daten.B31" enthält (ohne die äußeren Anführungszeichen), dann erhältst du den tatsächlichen Zugriff auf die Zelle mit der Formel =INDIREKT(B1)
In B1 brauchst du das ganze natürlich nicht als Konstante anzulegen, sondern kannst es dir zusammenbauen, beispielsweise
="'file:///" & A1 & "'#" & A2
wobei A1 den Text "C:/Auftrag/2012/00370 - 2012.ods" enthält und A2 den Text "$Daten.B31" (ohne die aüßeren Anführungszeichen).
Du kannst den Ausdruck "'file:///" & A1 & "'#" & A2 auch direkt bei INDIREKT hineinschreiben, also
=INDIREKT("'file:///" & A1 & "'#" & A2)
Aber das macht die Anpassung und Fehlersuche etwas mühsamer.
Wenn beispielsweise B1 den Text "'file:///C:/Auftrag/2012/00370 - 2012.ods'#$Daten.B31" enthält (ohne die äußeren Anführungszeichen), dann erhältst du den tatsächlichen Zugriff auf die Zelle mit der Formel =INDIREKT(B1)
In B1 brauchst du das ganze natürlich nicht als Konstante anzulegen, sondern kannst es dir zusammenbauen, beispielsweise
="'file:///" & A1 & "'#" & A2
wobei A1 den Text "C:/Auftrag/2012/00370 - 2012.ods" enthält und A2 den Text "$Daten.B31" (ohne die aüßeren Anführungszeichen).
Du kannst den Ausdruck "'file:///" & A1 & "'#" & A2 auch direkt bei INDIREKT hineinschreiben, also
=INDIREKT("'file:///" & A1 & "'#" & A2)
Aber das macht die Anpassung und Fehlersuche etwas mühsamer.