Seite 1 von 2

Verwendung von Umgebungsvariablen

Verfasst: Mi, 04.04.2007 18:20
von kappl_sim
Hallo ich möchte anstatt des normalen Pfades eine Umgebungsvariable verwenden. Ich habe bereits eine, mit dem Namen OpenOffice unter Systemsteuerung/System/Erweitert/Umgebungsvariable angelegt. Ich habe den selben Pfad wie im Makro verwendet sURL = ConvertToURL ("C:\Symbole\100\10\Vorrichtung_11_a.wmf") (siehe auch weiter unten im Makro).

Habe schon versucht einfach den Namen der Umgebungsvariable zu verwenden, das funktioniert aber leider nicht.
Die Ausgabe der Umgebungsvariable funktioniert mithilfe von msgbox environ("OpenOffice") problemlos.
Hoffe es kann mir jemand dabei helfen.

Code: Alles auswählen

Sub Main
 Dim sURL$
 sURL = ConvertToURL ("C:\Symbole\100\10\Vorrichtung_11_a.wmf")
 InsertGraphicObjectShape(ThisComponent, sURL)
End Sub

Sub InsertGraphicObjectShape(oDoc, sURL$)
 Dim oSize As New com.sun.star.awt.Size
 Dim oPos As New com.sun.star.awt.Point
 Dim oGraph

 oGraph = oDoc.createInstance(“com.sun.star.drawing.GraphicObjectShape”)

Größe und Position der Grafik wird zugewiesen
 oSize.width=200
 oSize.height=300
 oGraph.setSize(oSize)

 oPos.X = 2540
 oPos.Y = 2540
 oGraph.setposition(oPos)

 oDoc.getDrawPages().getByIndex(0).add(oGraph)

 REM Set URL to the graphic.
 oGraph.GraphicURL = sURL
End Sub

Verfasst: Do, 05.04.2007 12:52
von Toxitom
Hey kappl_sim,

verstehe dein Problem nicht. Du hast eine Umgebungsvariable gesetzt ("OpenOffice") und ihr den Wert "C:\Symbole\100\10" zugewiesen.
Mit "msgbox environ("OpenOffice")" erhälst du als Ergebnis : "C:\Symbole\100\10"?
Und jetzt möchtest du anstatt den Pfad manuell anzugeben diese Varaible verwenden?

also so:

Code: Alles auswählen

sURL = ConvertToURL (environ("OpenOffice") & "\Vorrichtung_11_a.wmf") 
und das funktioniert nicht?
Was ergibt denn "msgbox sURL" ?

Gruss
Thomas

Verfasst: Di, 17.04.2007 13:45
von kappl_sim
Hast mir meine Frage damit schon beantwortet :)
Danke.
Achja ist es irgentwie möglich, mittels makro, den Datei- Namen des Draw Dokuments auszugeben? Brauche möglichst schnell eine Antwort.

lg

Verfasst: Di, 17.04.2007 14:38
von komma4

Code: Alles auswählen

msgbox ThisComponent.URL
zeigt Dir den vollständigen Pfad/Dateinamen einer gespeicherten Datei.

War es das?

Verfasst: Di, 17.04.2007 16:07
von kappl_sim
Danke!
Aber leider brauche ich nur den Dateinamen bzw. Titel!? (also ohne Pfad)
Hättest du dafür vielleicht auch eine Idee?

lg

Verfasst: Di, 17.04.2007 16:29
von komma4
in der mitgelieferten Makro-Bibliothek TOOLS findest Du die Funktion, die Dir helfen könnte:

Code: Alles auswählen

msgbox FileNameoutofPath(ThisComponent.URL)
Zim Sicherstellen, dass die Funktion gefunden wird:

Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary("Tools")
vorher anwenden.

Nun?

Verfasst: Di, 17.04.2007 16:53
von kappl_sim
Super, genau das habe ich benötigt.
Herzlichen Dank damit hast du meinen tag gerettet :)

lg

Verfasst: Di, 17.04.2007 17:05
von kappl_sim
Achja kann es sein das diese funktion erst ab OpenOffice 2.2.0 funktionstüchtig ist?
Denn bei der alten kommt die fehlermeldung dass die Procedure/Funktion nicht definiert ist.

lg

Verfasst: Mi, 18.04.2007 08:33
von komma4
Nö, die gibt's schon länger.....

wie gesagt: Du musst die Bibliothek vorher laden !

Verfasst: Mi, 18.04.2007 12:10
von kappl_sim
Also bei einem Kollegen von mir kommt immer die Fehlermeldung NoSuchElementException.
Wir beide sind aber nach dem selben Schema vorgegangen (zuerst die Libary geladen danach die Ausgabe).
Habe leider keine Ahnung worin der Fehler liegt.

lg

Verfasst: Mi, 18.04.2007 12:26
von komma4
ThisComponent.URL funktioniert nur, wenn der Code nicht im Basic-Editor abgerufen wird....

Verfasst: Mi, 18.04.2007 13:12
von Toxitom
Hey,
ThisComponent.URL funktioniert nur, wenn der Code nicht im Basic-Editor abgerufen wird...
Nein. Das funktioniert auch im Basic-Editor. Allerdings greift es auf das letzte aktive OOo Dokument zu, das sich auf dem Bildschim befindet, das bedeutet, diese muss bereits eine URL haben (also schon mal gespeichert sein).

Die Fehlermeldung dürfte dagegen in der Zeile
GlobalScope.BasicLibraries.LoadLibrary("Tools")
auftreten. Entweder falsch geschrieben oder es gibt tatsächlich die Bibliothel "Tools" nicht. Überprüf das doch mal.

Gruss
Thomas

Verfasst: Mi, 18.04.2007 18:14
von kappl_sim
Toxitom hat geschrieben: Die Fehlermeldung dürfte dagegen in der Zeile
GlobalScope.BasicLibraries.LoadLibrary("Tools")
auftreten. Entweder falsch geschrieben oder es gibt tatsächlich die Bibliothel "Tools" nicht. Überprüf das doch mal.

Gruss
Thomas
Dumme Frage, aber wo kann ich diese Libaries einsehen?

Hätte aber noch eine weitere Frage (ich weiß schön langsam nervts):
Weiß jemand von euch wie man ein Datagrid erstellt?
Also wie man ein select in eine tabelle schreiben kann.

lg

Verfasst: Do, 19.04.2007 08:17
von Toxitom
Hey lg,
Dumme Frage, aber wo kann ich diese Libaries einsehen?
Extras - Makros - Makros verwalten - OpenOffice.org Basic -> Linke Listbox -> Position "OpenOffice.org Makros" -> darunter müsstest du den Eintrag "Tools" finden. Markiere ihn, bzw. öffne die Bibliothek (auf das Pluszeichen klicken), dann siehst du die Module. Klicke auf ein Modul - dann werden in der rechten Listbox alle Funktionen und Prozeduren angezeicht. Markiere eine, Klicke auf "Bearbeiten", die Basic IDE öffnet sich, du kannst den Code sehen.

Gruss
Thomas

PS: Ändere nix von dem du nicht sicher bist, was du da tust ;-)

Verfasst: Do, 19.04.2007 11:45
von komma4
kappl_sim hat geschrieben:Dumme Frage, aber wo kann ich diese Libaries einsehen?
ich empfehle hierzu
BTL BasicTextListe Gibt alle vorhandenen BASIC-Module aus allen installierten Bibliotheken in ein Writer-Dokument aus.

Generiert aus dem Text der hier installierten Basic-Module ein etwa 500 Seiten Writer­-Dokument in ca. 4 Sekunden.