Dateiname an Variable übergeben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Dateiname an Variable übergeben

Beitrag von mecki_45 »

Hallo zusammen,
gibt es eine Möglichkeit, den Dateinamen einer geöffneten Datei an eine Variable zu übergeben?

Wie kann der Name eines Sheets eines Calc-Dokuments an eine Variable übergeben werden?

Danke

Gruß
Alex
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

gibt es eine Möglichkeit, den Dateinamen einer geöffneten Datei an eine Variable zu übergeben?

Code: Alles auswählen

Sub Main
i = 1
Do
	datei_name = Right(ConvertToURL(ThisComponent.URL), i)
	i = i + 1
Loop While Left(datei_name, 1) <> "/"
msgbox Right(datei_name,LEN(datei_name) - 1)
End Sub
Wie kann der Name eines Sheets eines Calc-Dokuments an eine Variable übergeben werden?
Der Name ist in der name-Eigenschaft des Blattes, also wenn das Sheet-Objekt definiert ist als "ein_bestimmtes_Blatt" dann ist der Name:

Code: Alles auswählen

ein_bestimmtes_Blatt.name
und Übergabe an Variable:

Code: Alles auswählen

a = ein_bestimmtes_Blatt.name

Gruß
Stephan
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,
irgendwie klappt es mit dem Sheet-Namen nicht.

Hab's so probiert:

Sub Sheet_to_Name
DIM Sheet As Object
DIM Document As Object

Document = ThisComponent

blatt = Sheet.name

msgBox "Blatt: " + blatt
End Sub

Es erscheint immer die Fehlermeldung "Objektvariable nicht definiert".

Was ist falsch?

Gruß und Danke
Alex
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Du hast doch 'Sheet' gar kein Objekt zugewiesen darum kommt die Fehlermeldung.

Ich verstehe ja das Du den Namen des Tabellenblattes willst, bloß von welchem? In der Arbeitsmappe sind üblicherweise mehrere und da müßtest Du Dich dann zunächst entscheiden für welches Du den Namen brauchst, kommt ebend drauf an. Z.B.: das linke, das gerade aktive, das wo in einer Zelle ein bestimmter Wert steht usw.

Dieses Makro liefert die Namen aller Tabellenblätter hintereinander:

Code: Alles auswählen

Sub Main
For i = 0 To ThisComponent.Sheets().Count - 1
	msgbox ThisComponent.Sheets(i).Name
Next
End Sub

Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Alex,

Code: Alles auswählen

Sub Main
Dim a as String
a = ThisComponent.currentcontroller.activesheet.name
msgbox a
End Sub
Wenn es hiermit:
denn das möchte ich dann mit dem Sheet-Namen speichern
noch Probleme gibt, melde Dich nochmal.

Gruß
Stephan
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,
hab's umgesetzt, aber es gibt noch ein kleines Problem.

Hier das Makro:
-----------------------------------
Sub File_to_PDF
DIM Datei_Pfad As String
DIM Doc_Name As String
DIM File_Name As String
DIM PDF_Pfad As String
DIM Document As Object
DIM ExportEigenschaften(1) As New com.sun.star.beans.PropertyValue

PDF_Pfad = "file:///D:/transfer/"
I = 1
Do
Doc_Name = Right(ConvertToURL(ThisComponent.URL), I)
I = I + 1
Loop While Left(Doc_Name, 1) <> "/"
File_Name = right(Doc_Name, Len(Doc_Name) -1)
' --- Dateiname ohne EXTENSION erzeugen
File_Name = left (File_Name, Len(File_Name) -4)
msgBox "Datei: "+ File_Name
' --- Pfad und Dateiname zusammensetzen
Datei_Pfad = PDF_Pfad + File_Name + ".pdf"
msgbox "Name: " + Datei_Pfad
Datei_Pfad = ConvertToUrl (Datei_Pfad)
' --- Alles zum speichern zusammensetzen
FilterName = "calc_pdf_Export"
ExportEigenschaften(0).Name = "FilterName"
ExportEigenschaften(0).Value = FilterName
ExportEigenschaften(1).Name = "CompressMode"
ExportEigenschaften(1).Value = 0
Document.storeToUrL (Datei_Pfad, ExportEigenschaften())
End Sub

Und in der letzten Zeile bei "document.storetourl..." kommt eine Fehlermeldung >>Objektvariable nicht belegt<<

Ich frag mich welche?
Hast Du 'ne Idee?

Grüßle
Alex
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hast Du 'ne Idee?


-->Document !

mußt Du entweder noch einfügen:

Code: Alles auswählen

Document = ThisComponent
oder:

Code: Alles auswählen

Document = StarDesktop.CurrentComponent
oder gleich:

Code: Alles auswählen

ThisComponent.storeToUrL (Datei_Pfad, ExportEigenschaften())
ich habs nicht getestet aber das sollte der Fehler sein.

Gruß
Stephan
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,

leider bringt keine deiner 3 Anregungen eine Besserung.
Es erscheint jedesmal die Meldung:

"Basic-Laufzeitfehler: Es ist eine Exception aufgetreten - com.sun.star.io.IOException message"

Ich hab bereits ein Makro zum speichern der Datei als PDF am laufen, das klappt. nur jetzt, wenn ich die Datei nachträglich als PDF speichern will, so wie das Makro es ausweist, dann kommt der Fehler.
Eigenartig.

Ich hoffe, die Meldung hilft Dir etwas weiter.

Grüßle
Alex
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,

Fehler gefunden!

Die Fehlermeldung tritt auf, wenn eine leere Datei abgespeichert werden soll.

Und genau das hab ich gemacht. Nachdem ich etwas eingetragen habe, klappte es problemlos.

Danke für Deine Mühe und einen schönen Sonntag
Alex
Antworten