BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗
Calc-Makro Bastelhilfe
Re: Calc-Makro Bastelhilfe
Es geht um eine relativ umfangreiche Tabelle mit mehreren Blättern, die ich halbwegs regelmäßig überarbeite.
Um alte Versionen in die neue zu übertragen möchte ich das Makro nutzen, indem es aus der alten Datei die Werte in die neue Version kopiert.
Daher sind die Felder (so gut wie) immer an der selben Stelle, verteilt über mehrere Blätter, nur eben in einer anderen Datei.
Da mehrere Bekannte die Tabelle verwenden und ich sie auch mehrfach im Einsatz habe, ist eine neue Version bislang ein nerviger Akt. Das will ich ändern.
Um alte Versionen in die neue zu übertragen möchte ich das Makro nutzen, indem es aus der alten Datei die Werte in die neue Version kopiert.
Daher sind die Felder (so gut wie) immer an der selben Stelle, verteilt über mehrere Blätter, nur eben in einer anderen Datei.
Da mehrere Bekannte die Tabelle verwenden und ich sie auch mehrfach im Einsatz habe, ist eine neue Version bislang ein nerviger Akt. Das will ich ändern.
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
du kannst natürlich auch eine andere Datei als Quelle nehmen (geklaut von hier: http://www.dannenhoefer.de/faqstarbasic ... ffnen.html)
du kannst natürlich auch eine andere Datei als Quelle nehmen (geklaut von hier: http://www.dannenhoefer.de/faqstarbasic ... ffnen.html)
Code: Alles auswählen
url=convertToUrl("Pfad zu deiner Quelldatei")
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=False 'für die praktische Arbeit kann später True gesetzt werden, um die Datei versteckt zu öffnen
oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
'...
'Daten auslesen etc.
'...
oQuellDocument.close
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Ich nehme an, "Daten auslesen etc..." meint das vorherige Makro? Das bleibt unverändert, abgesehen vom Namen des Blattes?
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
probier' es einfach mal an Kopien deiner Dateien aus.
probier' es einfach mal an Kopien deiner Dateien aus.
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Ich habe es eben ausprobiert und bekomme einen Fehler. Die folgende Zeile streikt:
Ich habe es in der 1. Zeile sowohl mit dem Feld versucht (s.u.), so wie ich das gern hätte, als auch mit der Dateiadresse direkt.
Ich vermute, dass ich auch danach noch etwas falsch mache. Habe es wie folgt geändert:
Gedacht ist, dass nur der Dateipfad in die Tabelle eingetragen wird, den Rest soll das Makro erledigen.
Danke schonmal für deine Hilfe.
Gruß, Xaiorn
Code: Alles auswählen
oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
Ich vermute, dass ich auch danach noch etwas falsch mache. Habe es wie folgt geändert:
Code: Alles auswählen
Sub Main
url=convertToUrl("Tabelle1.FA8")'hier wird der Dateipfad ausgegeben mit 'file://D:/.../Dateiname.ods
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=False 'für die praktische Arbeit kann später True gesetzt werden, um die Datei versteckt zu öffnen
oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
aZellen=Array("EL3:EL51", "AE3:AE15", "AH1", "B17")
oDoc=ThisComponent
oZiel=oDoc.Sheets.getByName("Blattname")
oQuelle=oDoc.Sheets.getByName(oZiel.getCellRangeByName("Blattname").String)
For i=0 to ubound(aZellen)
oZiel.getCellRangeByName(aZellen(i)).setDataArray(oQuelle.getCellRangeByName(aZellen(i)).getDataArray)
Next
oQuellDocument.close
End Sub
Danke schonmal für deine Hilfe.
Gruß, Xaiorn
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
wenn der Dateiname und -pfad aus der Tabelle1, Zelle FA8 ausgelesen werden soll, dann musst du natürlich
nutzen und später auch auf oQuellDocument zugreifen
wenn der Dateiname und -pfad aus der Tabelle1, Zelle FA8 ausgelesen werden soll, dann musst du natürlich
Code: Alles auswählen
url=convertToUrl(ThisComponent.Sheets.geByName("Tabelle1").getCellRangeByName("FA8").String)
nutzen und später auch auf oQuellDocument zugreifen
Code: Alles auswählen
oQuelle=oQuellDocument.Sheets.getByName(oZiel.getCellRangeByName("Blattname").String)
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Hallo,
ja, wie gesagt habe ich sehr wenig Ahnung von OO-Makros...
Änderungen habe ich übernommen (Rechtschreibfehler beim 1. "get" gefunden und behoben) und komme wieder nur bis zu oben genannter Zeile mit folgendem Fehler:
Die Adresse stimmt, da bin ich sehr sicher.
Sicherheitshalber hier noch einmal das geänderte Makro:
Gruß Xaiorn
ja, wie gesagt habe ich sehr wenig Ahnung von OO-Makros...
Änderungen habe ich übernommen (Rechtschreibfehler beim 1. "get" gefunden und behoben) und komme wieder nur bis zu oben genannter Zeile mit folgendem Fehler:
Code: Alles auswählen
BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.lang.IllegalArgumentException
Message: URL seems to be an unsupported one..
Sicherheitshalber hier noch einmal das geänderte Makro:
Code: Alles auswählen
Sub Main
url=convertToUrl(ThisComponent.Sheets.getByName("Blatt1").getCellRangeByName("FA8").String)
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=False
oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
aZellen=Array("EL3:EL51", "AE3:AE15", "AH1", "B17")
oDoc=ThisComponent
oZiel=oDoc.Sheets.getByName("Blatt1")
oQuelle=oQuellDocument.Sheets.getByName(oZiel.getCellRangeByName("Blatt1").String)
For i=0 to ubound(aZellen)
oZiel.getCellRangeByName(aZellen(i)).setDataArray(oQuelle.getCellRangeByName(aZellen(i)).getDataArray)
Next
oQuellDocument.close
End Sub
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Der komplette Dateipfad, inkl. Anfangs- und Endapostroph also:
'file:///D:/..../Dateiname.ods'
...Und während ich es schreibe, fällt mir der Fehler auf. Ohne 'file:/// und ' am Ende klappt's.
ABER:
Jetzt bekomme ich in der Zeile
folgende Fehlermeldung:
Daraus werde ich nicht schlau.
'file:///D:/..../Dateiname.ods'
...Und während ich es schreibe, fällt mir der Fehler auf. Ohne 'file:/// und ' am Ende klappt's.
ABER:
Jetzt bekomme ich in der Zeile
Code: Alles auswählen
oQuelle=oQuellDocument.Sheets.getByName(oZiel.getCellRangeByName("Blatt1").String)
Code: Alles auswählen
BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.uno.RuntimeException
Message: .
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
die Apostrophs waren der Fehler (die gehören da nicht hin). file:// stört hingegen nicht, würde aber den Anwender sicher verwirren.
Was macht dieser Codeteil? Auf dem Tabellenblatt, dass der Variablen oZiel zugewiesen wurde, soll per .getCellRangeByName ein Zellbereich gewählt werden und dann dessen String ausgelesen werden. "Blatt1" ist aber kein gültiger Zellbereich und daher bricht das Makro mit Fehlermeldung ab.
die Apostrophs waren der Fehler (die gehören da nicht hin). file:// stört hingegen nicht, würde aber den Anwender sicher verwirren.
Code: Alles auswählen
oZiel.getCellRangeByName("Blatt1").String
Gruß,
mikele
mikele