Verknüpfungen zu verschiedenen Dateien

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Verknüpfungen zu verschiedenen Dateien

von Stephan » Fr, 23.07.2004 22:36

Das Problem konnte mittels Email-Kontakt festgestellt werden:

(a) der Quellcode hat keinen Syntaxfehler
(b) der Syntaxfehler entsteht durch das Kopieren des Codes

Näheres unter:

viewtopic.php?p=5125#5125


Gruß
Stephan

von SK » Do, 22.07.2004 14:07

Falls noch nicht geschehen, würde ich nun mal die OpenOffice Installation reparieren.
Da ich von Linux nicht so den Plan habe, muß ich etwas warten, bis OO repariert wird, bzw. aktualisiert wird.

Mail an Dich ist raus. Sofern das Makro bei Dir rennt, liegt es hier am System.

Danke

Gruß

S.

von Stephan » Mi, 21.07.2004 23:01

Wie oben schon vermutet, vielleicht liegt es ja an der "alten" Version von OO?
das glaube ich nicht. Ich habe das jetzt NOCHMAL getestet, das Makro funktioniert bei mir korrekt bei:

(1)Knoppix 3.1 und OpenOffice 1.0.1 (Deutsch)
(2)Knoppix 3.4 und OpenOffice 1.1.0 (Deutsch)
(3)SuSE 8.2 Personal und OpenOffice 1.1 (Deutsch)(*)
(4)W2k SP4 und Openoffice 1.1.1. (Deutsch)
(5)W2k SP4 und StarOffice 6.0 PP2 (Deutsch)
(6)W2k SP4 und StarOffice 7.0 PP2 (Deutsch)

(*)die Version ist unter Hilfe von OpenOffice mit 1.1 angegeben, sollte also noch eine andere Version als 1.1.0 sein ?!

Falls noch nicht geschehen, würde ich nun mal die OpenOffice Installation reparieren.

Gruß
Stephan

von SK » Mi, 21.07.2004 20:35

So, ich habe mal daheim getestet. OO 1.1.2 installiert, allerdings in englisch. Geplant war eigentlich deutsch. Naja, nicht ganz so tragisch.

Ich habe das Makro kopiert, eingefügt, zugewiesen und es tat wie ihm geheißen - also den letzten Eintrag an die entsprechende Stelle geschrieben.

Nun stellt sich die Frage, warum das in der Firma nicht geht. Hier arbeite ich mit WinXP Pro, in der Firma mit Suse uff.. Version weiß ich nicht und halt OO 1.1.0 in deutsch.

Wie oben schon vermutet, vielleicht liegt es ja an der "alten" Version von OO?

Gruß

S.

von Stephan » Di, 20.07.2004 13:34

Wenn das ganze in Spalte H stattfindet mußt Du statt:

zellenwert = mySheet.getCellByPosition(3, x).value

zellenwert = mySheet.getCellByPosition(7, x).value

verwenden.
Hinweis: ich gehe davon aus das der "aktuelle" Wert in H5 steht, in dem Sinne das wenn Du einen Weiteren ergänzt dieser dann in H6 stünde usw. . Natürlich müssen alle Zellen von H1 bis H5 irgendeinen Inhalt haben damit es funktioniert und ab H6 müssen alle leer sein.
Ich schreibe mal vorsichtshalber: vielleicht kannst Du mal probieren
loop While zellenwert <> EMPTY
durch:
loop While zellenwert <> "" oder loop While zellenwert <> 0
zu ersetzen, ich weiß aber nicht warum das nötig sein sollte.

Und nun brauchst Du noch eine feste Zelle auf dem Blatt die Du dann referenzieren kannst, dafür mußt Du diese Zeile anpassen:

mySheet.getCellByPosition(4, 0).value = wert

so wie es hier steht wäre die Zelle E1 ändere das nach Bedarf (die entsprechende Zelle darf natürlich nicht schreibgeschützt sein).

Ich habe auch den kompletten Code geprüft, ich bekomme keinen Syntaxfehler.

@toxitom
Mit Sicherheit. Da der erste Schleifendurchgang einer Do ...while Schleife immer ausgeführt wird, wenn die Bedingung erst im While -Teil steht, bekommst du immer dann eine Fehlermeldung, wenn das Objekt (Zelle) die Eigenschaft nicht aufweist (in diesem Fall Value = ...eben nichts!)
das hatte ich auch vermutet, aber ein test ergibt das das beim Lesen des Wertes nicht so ist:
zellenwert = mySheet.getCellByPosition(3, x).value
liefert tatsächlich numerischen Wert (das Ergebnis der vorhandenen Formel), wenn Formel in der Zelle ist. Formel wird dann logischerweise geliefert bei:
zellenwert = mySheet.getCellByPosition(3, x).formula
und zwar als "String" ...
(!?)

Gruß
Stephan

von Toxitom » Di, 20.07.2004 12:52

Hey,
Errechnet wird es mit einer Formel. Es ist also kein Wert in der Zelle eingetragen, sonern eine Formel. Liegt da vielleicht der Fehler?
Mit Sicherheit. Da der erste Schleifendurchgang einer Do ...while Schleife immer ausgeführt wird, wenn die Bedingung erst im While -Teil steht, bekommst du immer dann eine Fehlermeldung, wenn das Objekt (Zelle) die Eigenschaft nicht aufweist (in diesem Fall Value = ...eben nichts!)
Kannst du aber mit einer Prüfung vorher abfangen.

Gruss
Thomas

von SK » Di, 20.07.2004 11:28

Moin Moin
Wenn es nicht funktioniert melde Dich, falls Du es selber lösen kannst poste bitte warum es nicht funktioniert hat.
Hiermit melde ich mich. Es hat nicht funktioniert. Es kommt tatsächlich ein "BASIC-Syntaxfehler. Syntaxfehler"

Ich habe das Makro dem Dokument zugeordnet. Es wird auch beim Speicher ausgeführt.

In der Spalte H5 steht das akutelle Ergebnis. Errechnet wird es mit einer Formel. Es ist also kein Wert in der Zelle eingetragen, sonern eine Formel. Liegt da vielleicht der Fehler?

Gruß

S.

von Stephan » Mo, 19.07.2004 12:29

Allerdings bekomme ich bei der Ausführung einen BASIC-Syntaxfehler angezeigt in der folgenden Zeile.
Niemand ist perfekt, auch ich nicht aber ich habe den Code gestestet und aus der IDE herauskopiert, einen Syntaxfehler schließe ich aus und kann jetzt hier beim Lesen keinen erkennen. Ich kann mir andere Fehler denken, aber keinen Syntaxfehler, vielleicht ist die Fehlermeldung (der Text der Meldung) falsch, steht da wirklich Syntaxfehler?
Die Zeile gilt so nur falls in der betreffenden Zelle ein numerischer Wert steht, steht dort kein numerischer Wert funktioniert der Code so nicht vielleicht wird das als Syntaxfehler interpretiert. Ich kann das ändern, wenn Du mir sagst was dort für ein Wert steht Formel, Text, Zahl, (Datum) . Sollte die Art des Wertes vorher nicht bekannt sein, muß man den Code so ändern das eine Prüfung stattfindet.
Ansonsten:
Ist das entsprechende Tabellendokument zum Zeitpunkt des Makrolaufs das einzige geöffnete Dokument? Ist der automatische Start des Makros dem entsprechenden Dokument zugeordnet und nicht OpenOffice? Ist das Tabellenblatt auch definitiv Blatt 0? (Sind irgendwelche Zellen geschützt etc.?)

Hier findest Du zunächst etwas mehr:

http://docs.sun.com/db/doc/817-3924?l=de


Wenn es nicht funktioniert melde Dich, falls Du es selber lösen kannst poste bitte warum es nicht funktioniert hat.

Gruß
Stephan

von pmoegenb » Mo, 19.07.2004 12:08

von SK » Mo, 19.07.2004 10:38

Ahoi,

gesagt getan ;) Allerdings bekomme ich bei der Ausführung einen BASIC-Syntaxfehler angezeigt in der folgenden Zeile.
Stephan hat geschrieben:
zellenwert = mySheet.getCellByPosition(3, x).value
Wo kann ich die Basic-Befehle nachlesen? In der Hilfe konnte ich leider nichts finden.

Leichte Kenntnisse sind vorhanden.

Danke und Gruß

S.

von Stephan » Sa, 17.07.2004 13:42

Ich wollte Dein Problem mit einer selbstdefinierten Function lösen, ist mir bisher nicht vollkommen gelungen. Deshalb folgender Vorschlag:

Kopiere Dir in jedes der Einzeldokumente folgendes Makro und passe es an. Ordne es dem Ereignis "Dokument sichern" zu. Das Ganze funktioniert zuverlässig so Du die Änderungen in den Dokumenten nach dem Bearbeiten sicherst, aber das hast Du ja wohl ohnhin vor.

Code: Alles auswählen

sub LETZTE()
myDoc = stardesktop.currentcomponent
'oder anderes Blatt
mySheet = myDoc.sheets(0)
x = 0
'für Spalte D
Do
	zellenwert = mySheet.getCellByPosition(3, x).value
	x = x + 1
loop While zellenwert <> EMPTY
wert = mySheet.getCellByPosition(3, x-2).Value
'der interessierende Wert steht in Zelle E1 
'und kann dort referenziert werden
mySheet.getCellByPosition(4, 0).value = wert
End sub
Solltest Du Probleme bei der Realisierung haben, frage nochmal nach (ich weiß nicht wie Dein Kenntnisstand ist).

Gruß
Stephan

von Toxitom » Fr, 16.07.2004 21:10

Hey SK,

die Lösung ist - wie bei tabellen so oft - die Ergebniszeile gehört einfach an den Anfang, die Datensätze darunter.
Dann ist deine Ergebnisspalte immer fix, egal wie viele Datensätze noch folgen.
Und wenn du keine Summen oder ähnliches bildest, so gibt es so schöne Formel wie maximalwert, Minimalwert, letzer Wert und vieles mehr.

Gruss
Thomas

von SK » Fr, 16.07.2004 14:17

Huhu,

ich glaube wir haben usn mißverstanden, bzw. ich habe mich mißverständlich ausgedrückt.

Der aktuelle Wert in der Spalte Stand wandert immer nache einem neuen Eintrag eine Zeile tiefer. Erst steht er in H4, dann in H5, H6 etc. Wenn ich einen Namen vergebe, dann bliebe der bei H4 haften.

Gruß

S.

Verknüpfungen zu anderen Dateien

von mstehl » Fr, 16.07.2004 12:38

Gib der Zelle oder dem Zellbereich einen Namen -> Einfügen/Namen/Festlegen.

Dieser Name wird dann genau wie eine Zell- oder Bereichsadresse benutzt, aber egal wo die Zelle steht oder wie groß der Bereich ist.
Also z.b. A1='DateiXY.Tabelle1.Gesamt"

So bist Du unabhängig von der Position der Zelle oder der Bereichsgröße!

Gruß, Markus

von SK » Fr, 16.07.2004 11:49

Es hat sich noch ein weiteres Problem ergeben.

Ich hole mir ja aus der name.sxc eine bestimmte Zelle und schreibe den Inhalt in die Gesamtübersicht.

Nun ist meine Kartei so aufgebaut

Grund von bis Tage Stand

In Abbhängigkeit von dem Grund findet bei Stand eine entsprechende Berechnung statt.

Die Formel zur Berechnung habe ich nun bis Zeile 40 runterkopiert. Natürlich wird dann bis Zeile 40 immer der aktuelle Stand dargestellt. Rein optisch ist es daneben. Ich habe deshalb noch zusätzlich abgefragt, ob in Tage eine Zahl <>0 eingetragen ist. Sonst lasse ich da " " eintragen.

Nun zum Problem. Wie bekomme ich den aktuellen Urlaubsstand in die Gesamtübersicht? Da sich die Quellzelle ja je nach Anzahl der Einträge verschiebt.

Idee von mir war, daß ich den aktuellen Stand zusätzlich in eine Zelle schreibe, die ich mir dann holen kann. Allerdings weiß ich nicht, wie ich das berwerkstellen soll.

Für Tipps wäre ich dankbar ;)

Gruß

S.

Nach oben