Hallo Günter,

g.wall...@web.de schrieb:
> ich hatte ja schon geschrieben, daß mit diese Variante am
> sympathischsten ist ...
> aber wie wende ich diese Funktion an?
>
> Wie gesagt: Ich wollte *automatisch* ermitteln, wie der absolute Pfad
> auf meinem Rechner für *diese* Datei lautet ...
> und das Ganze soll auch noch korrekt funktionieren, wenn die Datei
> verschoben wird!
>
> Mein Stöbern in Deinem Buch "Tabellenkalkulation ... 3" hat mir auch
> nicht viel weiter geholfen. Insbesondere gibt es dort kein
> Beispiel für
> 'ThisComponent.Location'

Ein Beispiel findet sich dort auf Seite 261 in Form der
benutzerdefinierten Funktion DATEINAME, in dieser wird
ThisComponent.Location verwendet.

> Ich habe die Funktion einmal (lokal) in eine CALC-Datei (über die
> Macro-IDE) eingefügt, weiß aber nicht, wie ich die dann im
> Tabellenblatt
> anwende.
>
> Das habe ich gemacht:
>
> in irgendeiner Zelle im Calc-Dokument habe ich geschrieben
>
> =NurPfad()
>
> Die Funktion startet, aber es kommt die Fehlermeldung "Objektvariable
> nicht belegt"

Das Vorgehen iost korrekt, die Fehlermeldung deutet jedoch für mich
darauf hin das Du etwas anders getan hast als Du beschreibst, denn ich
würde diese Fehlermeldung erwarten wenn die benutzerdefinierte Funktion
nicht im Dokument sondern lokal bei z.B. den persönlichen Makros ('Meine
Makros') gespeichert wäre und dann im Dokument aufgerufen wird.

> Was ist eigentlich mit 'Main' ...

Ein 'Platzhalter', ein Beispiel für einen Makronamen, ...

> das habe ich (in der IDE) durch die
> angegebene Funktion ersetzt. War das falsch?

Nein, das ist in Ordnung

> Ist die Schreibweise (Groß-Klein) eigentlich relevant?

Im Konkreten ist diese hier nicht relevant, es gibt aber Stellen wo sie
eine Rolle spielt und auch Stellen wo das Verhalten nicht sofort
offensichtlich scheint, jedoch durch falsche Schreibung Fehler
entstehen, z.B.:

Sub Main
If
ThisComponent.SupportsService("com.sun.star.sheet.SpreadsheetDocument")
Then
   Msgbox "Tabellendokument"
End If
End Sub

Hier muß der Teil "com.sun.star.sheet.SpreadsheetDocument" genauso
lauten, schon eine geringe Änderung in
"com.sun.star.Sheet.SpreadsheetDocument" oder
"com.sun.star.sheet.SpreadSheetDocument" oder
"com.sun.star.sheet.spreadsheetDocument" oder ... führt dazu das es
nicht mehr funktioniert.

Ebenso ist Groß-/KLeinschreibung wichtig bei z.B. Namen von
Steuerelementen oder auch teils bei Variablennamen in Makros wlche
multiplattformfähig sein sollen.

Ich würde also raten im Zweifelsfall immer Groß- und Kleinschreibung zu
benutzen.

> Vielleicht kannst Du mir einmal ein vollständiges
> Mini-Beispiel zukommen
> lassen?

Da Du das Buch hast kannst Du das dort vorhandene Beispiel benutzen, in
der Datei FunktionDATEINAMEKap67.xls zeige ich ein Beispiel wie man
mittels Code eine benutzerdefinierte Funktion schreibt, welche sowohl
unter MS Excel (VBA) als auch unter OOo Calc (StarBasic) direkt, ohne
Änderungen funktioniert:

Function DATEINAME()
On Error Goto xls
pfad = ThisComponent.Location
teilen = split(pfad,"/")
DATEINAME = teilen(UBound(teilen))
Exit Function
xls:
DATEINAME = ThisWorkbook.Name
End Function

Das Ganze ist auch in Form der Datei FunktionDATEINAMEKap67.ods
verfügbar, und es reicht dann für Deine angefragten Zwecke aus die
Funktion z.B. so zu kürzen:

Function DATEINAME()
pfad = ThisComponent.Location
teilen = split(pfad,"/")
DATEINAME = teilen(UBound(teilen))
End Function


Beide Dateien befinden sich auf der Buch-DVD im Ordner:

../Buchdateien/Kapitel_06/




Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Reply via email to