Seite 1 von 1
Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 20:11
von sven-my
Hallo Experten,
Globale Variablen: Sie gelten innerhalb der gesamten Staroffice-Sitzung in allen geladenen Bibliothken, Modulen, Prozeduren und Funktionen.
In einem Makro von >Dokument1< habe ich
Code: Alles auswählen
REM ***** BASIC *****
global flag as string
sub Main
.
flag = "start"
.
end sub
und im Makro von >Dokument2< habe ich
Code: Alles auswählen
sub start
if flag <> "start" then exit sub
.
.
end sub
nun möchte ich, das ein Makro im >Dokument2< nur starten soll, wenn dies Dokument von >Dokument1< aufgerufen wird, aber nicht wenn >Dokument1< noch nicht "läuft" und ich >Dokument2< aber schon geöffnet habe.
Die Makros in >Dokument2< laufen alle wie gewollt, nur eben dieses eine verweigert sich.
Was hab ich da in den "falschen Hals" bekommen ?
gruß
sven-my
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 20:30
von DPunch
Servus
Globale Variablen in Dokumenten stehen leider auch nur in diesen zur Verfügung.
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 21:15
von sven-my
Hallo DPunch,
also muß die Variable irgenswo in "MeineMakros/Standard/.." deklarieren, und dann kann ich sie in den Makros aller geöffneten Dokumenten nutzen ?
Hilft also nicht, wenn ich die Dokumente auf einem Stick habe, und an einem Rechner nutze, bei dem ich die Variable nicht deklarieren kann ?
Odre habe ich da wieder etwas falsch verstanden ?
gruß
sven-my
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 21:20
von DPunch
Servus
Das hast Du richtig verstanden.
Wenn Du etwas präziser schildern würdest, was Du wann erreichen willst (Deine ursprüngliche Einlassung dazu fand ich nicht sonderlich erhellend), kann man Dir aber möglicherweise andere Wege aufzeigen.
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 21:49
von sven-my
Hallo Dpunch,
tja präziser kann ich mein Vorhaben nicht schildern --- nur langatmiger:
Es sind zwei Dokumente - ein calc-Doc mit Daten (als Datenbank), ein writer-Doc mit einer Etikettenvorlage (Tabelle: 5 x 13 [ Spalten x Zeilen]).
1. Fall
Öffne ich die Etikettenvorlage, ohne daß das calc-Doc geöffnet ist, sollen keine Aktionen von dem writer-Doc ausgehen.
2. Fall
Öffne ich die Etikettenvorlage vom calc-Doc aus, sollen sollen die markierten Daten zum writer-Doc übertragen werden, ohen daß ich das nochmal extra "anstoßen" muß (weil davon auszugehen ist, daß die Vorarbeiten schon geleistet sind)
Die normale Arbeit mit Etiketten, wie sie in OpenOffice vorgesehen ist, geht für meinen speziellen Fall nicht !
Ich benötige z.B. ein Etikett von Datensatz 1, fünf von Datensatz3, sechs von Datensatz3, u.s.w. - die möchte ich in einem "Rutsch" drucken, und nicht für jeden Datensatz einen eigenen Druckauftrag erteilen, oder von allen Datensätzen die gleiche Anzahl Etiketten drucken, und dann die Hälfte wegschmeißen.
gruß
sven-my
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 22:13
von DPunch
Servus
Und im Moment löst Du das wie, bzw. würdest es lösen, wenn die Sache mit den globalen Variablen nicht wäre?
Als Ereignis bei z.B. Dokument geöffnet (das meinte ich mit "präziser)?
Wenn die ganze Aktion sowieso nur laufen soll, wenn Du die Vorlage vom Calc-Doc aus öffnest, dann bring den gesamten Code doch einfach in der die andere Datei öffnenden Prozedur im Calc-Doc unter.
Re: Globale Variable: Verständnisproblem
Verfasst: So, 21.10.2012 22:55
von sven-my
Hallo DPunch,
so sehe das Makro in >etikett.ott< aus, es steht im ersten Modul (Hilfen) wenn das mit der globalen Varablen ginge.
die Variable docNam sollte auch eine Globale Variable werden.
Code: Alles auswählen
sub Doc_speichern
docNam = "Gefrier-Etikettendruck.odt" 'wenn als Global deklariert, dann auskommentiert oder gelöscht
' msgbox "dieses Dokument speichern !"
dim dummy()
oDoc = thisComponent
lw = mid(CurDir,1,2)
if lw = "C:" then lw = "E:"
pfad = Lw & "\OpenOffice\calc\Etiketten\" & docNam
URL = ConvertToUrl(Pfad)
oDoc.storeAsURL(URL ,Dummy())
oDoc.store()
if flag = "start" then
drucken.start 'zweites Modul
end if
end sub
Zerbrich Dir nicht weiter den Kopf, ich krempel das Ganze jetzt um, und schreibe anstatt das eine Makro in die Etiketten-Vorlage für 38x21 - Etiketten, jetzt je ein Makro in die calc-"Datenbanken" um die Daten in die writer-Tabelle zu bekommen.
Dann wird die jeweilige calc-"Datenbank" eben die zentrale "Steuerstelle".
Die bisherige Vorgehenweise ergab sich aus der Tatsache, daß ich zuerst versucht habe, ob, bzw. wie, es funktioniert, die Etikett-Vorlage zu nutzen, um die bedruckbaren Etiketten zu markieren, und diese Daten dann auszulesen.
Dann habe ich einfach weitergeschrieben.
Es wird bei mir nie die ganze DIN-A4 Seite (65 Etiketten) aus ein Mal gedruckt; und da mein alter Drucker die 13. Zeile nicht mehr bedrucken wollte, habe ich mir angewöhnt, wenn die zweite, dritte oder vierte Zeile kein Etikett mehr enthält, das Blatt umzudrehen.
Daher mußte ich einen Anfangs-Etikett und ein End-Etikett festlegen.
gruß
sven-my