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
Hallo,
das Makro hat zwar nicht mehr das Problem, dass Kommentare gelöscht werden, dafür endet es vorzeitig. Einzelne Felder verschiedener Arbeitsblätter werden ausgefüllt, aber dann schließt sich die Vorlage und das war's. Keines der Arbeitsblätter ist vollständig. Bis wohin das Makro kommt, kann ich nicht genau sagen, aber bestenfalls ~50 Felder weit.
Es endet ohne Fehlermeldung o.ä.
das Makro hat zwar nicht mehr das Problem, dass Kommentare gelöscht werden, dafür endet es vorzeitig. Einzelne Felder verschiedener Arbeitsblätter werden ausgefüllt, aber dann schließt sich die Vorlage und das war's. Keines der Arbeitsblätter ist vollständig. Bis wohin das Makro kommt, kann ich nicht genau sagen, aber bestenfalls ~50 Felder weit.
Es endet ohne Fehlermeldung o.ä.
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
mit folgendem, abgewandelten Makro habe ich einen Testlauf an deiner Import-Makro.ods durchgeführt:
Dabei wird in alle relevanten Zellen ein ! gesetzt. Das Makro benötigt bei mir für die 4 Tabellen schon ein paar Minuten.
Probiere ansonsten mal, die Zeile
durch
zu ersetzen, also nur das 1. Tabellenblatt zu bearbeiten. Was passiert?
mit folgendem, abgewandelten Makro habe ich einen Testlauf an deiner Import-Makro.ods durchgeführt:
Code: Alles auswählen
Sub Main2
'Zugriff auf dieses Dokument
oDoc=ThisComponent
'Auslesen des Dateinamens für den Datenimport
url=convertToUrl(oDoc.Sheets.getByName("Held").getCellRangeByName("FA9").String)
'Öffnen der Quelldatei, versteckt
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=true 'für die praktische Arbeit kann später True gesetzt werden, um die Datei versteckt zu öffnen
' oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
'Zugriff auf die Tabelle in Zieldatei
oZiel=oDoc.Sheets(k)
' oQuelle=oQuellDocument.Sheets(k)
obereiche=oZiel.getCellFormatRanges
'Durchlauf durch alle Bereiche
For i=0 to obereiche.count-1
oBereich=obereiche.getbyindex(i)
'Prüfen, ob Hintergrund gelb und nicht gesperrt
if obereich.CellBackColor=16777113 and obereich.CellProtection.islocked=False then
for spalte=obereich.RangeAddress.StartColumn to obereich.RangeAddress.EndColumn
for zeile=obereich.RangeAddress.StartRow to obereich.RangeAddress.EndRow
ozelle=oZiel.getCellByPosition(spalte,zeile)
ozelle.string="!"
' select case ozelle.type
' Case com.sun.star.table.CellContentType.VALUE
' ozelle.Value=oQuelle.getCellByPosition(spalte,zeile).Value
' Case com.sun.star.table.CellContentType.TEXT
' ozelle.String=oQuelle.getCellByPosition(spalte,zeile).String
' Case com.sun.star.table.CellContentType.FORMULA
' ozelle.Formula=oQuelle.getCellByPosition(spalte,zeile).Formula
' end select
next
next
end if
Next
Next
'Schließen des Quelldokuments
' oQuellDocument.close (false)
End Sub
Das bedeutet, Calc stürzt ab? Die Datei aus der die Daten importiert werden wird ja im Hintergrund (unsichtbar) geöffnet. Die Zieldatei wird durch das Makro nicht geschlossen.aber dann schließt sich die Vorlage und das war's
Probiere ansonsten mal, die Zeile
Code: Alles auswählen
'Durchlauf durch alle Tabellen
For k=0 to oDoc.Sheets.Count-1
Code: Alles auswählen
'Durchlauf durch alle Tabellen
For k=0 to 0
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Hallo,
das !-Makro klappt, aber nur auf dem 1. Blatt. In allen anderen passiert nichts.
Das Abändern auf nur Blatt 1 () beschränkt das vorherige Makro auf Blatt 1, aber trotzdem werden nicht alle Felder ausgefüllt.
Kann es sein, dass das Makro abbricht, wenn das Feld mit dem Dateipfad (FA9) geändert wird? Da dies variabel ist, ist es natürlich auch ungeschützt und gelb...
Die erste Version des Makros hat das allerdings nicht gestört.
Ja, die Zeit ist mir auch aufgefallen; die erste funktionierende Version (die die Kommentare überschreibt) läuft etwa 20 min, bis die ganze Datei fertig ist. Der erste Versuch, die Kommentare zu schützen lief etwa 3 min. Die beiden Variationen jetzt < 1 min.
Nein, die Tabelle stürzt nicht ab, hab ich wohl doof formuliert. Die Quelldatei schließt sich, wie sie es ja auch soll. Das hab ich als Endpunkt des Makros gesehen.
Zum Einen sehe ich ja, wenn die temporäre Datei im Ordner anzeigt, dass es im Hintergrund geöffnet ist, verschwindet, zum Anderen habe ich die Kommandozeile angepasst, dass die Quelldatei sichtbar geöffnet wird (ich will ja sehen, dass alles klappt).
das !-Makro klappt, aber nur auf dem 1. Blatt. In allen anderen passiert nichts.
Das Abändern auf nur Blatt 1 (
Code: Alles auswählen
For k=0 to 0
Kann es sein, dass das Makro abbricht, wenn das Feld mit dem Dateipfad (FA9) geändert wird? Da dies variabel ist, ist es natürlich auch ungeschützt und gelb...
Die erste Version des Makros hat das allerdings nicht gestört.
Ja, die Zeit ist mir auch aufgefallen; die erste funktionierende Version (die die Kommentare überschreibt) läuft etwa 20 min, bis die ganze Datei fertig ist. Der erste Versuch, die Kommentare zu schützen lief etwa 3 min. Die beiden Variationen jetzt < 1 min.
Nein, die Tabelle stürzt nicht ab, hab ich wohl doof formuliert. Die Quelldatei schließt sich, wie sie es ja auch soll. Das hab ich als Endpunkt des Makros gesehen.
Zum Einen sehe ich ja, wenn die temporäre Datei im Ordner anzeigt, dass es im Hintergrund geöffnet ist, verschwindet, zum Anderen habe ich die Kommandozeile angepasst, dass die Quelldatei sichtbar geöffnet wird (ich will ja sehen, dass alles klappt).
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
ja, da habe ich beim Kopieren irgendwie zwei Zeilen des Testmakros verschwinden lassen
Warum nicht alles ausdgefüllt wird bleibt ein Rätsel. Kannst du mal eine Beispieltabelle (Quelldatei - es reicht die erste Tabelle, die ja auch nicht übernommen wird) zum Testen hochladen?
ja, da habe ich beim Kopieren irgendwie zwei Zeilen des Testmakros verschwinden lassen
Code: Alles auswählen
Sub Main2
'Zugriff auf dieses Dokument
oDoc=ThisComponent
'Auslesen des Dateinamens für den Datenimport
url=convertToUrl(oDoc.Sheets.getByName("Held").getCellRangeByName("FA9").String)
'Öffnen der Quelldatei, versteckt
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=true 'für die praktische Arbeit kann später True gesetzt werden, um die Datei versteckt zu öffnen
' oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
'Durchlauf durch alle Tabellen
For k=0 to oDoc.Sheets.Count-1
'Zugriff auf die Tabelle in Zieldatei
oZiel=oDoc.Sheets(k)
' oQuelle=oQuellDocument.Sheets(k)
obereiche=oZiel.getCellFormatRanges
'Durchlauf durch alle Bereiche
For i=0 to obereiche.count-1
oBereich=obereiche.getbyindex(i)
'Prüfen, ob Hintergrund gelb und nicht gesperrt
if obereich.CellBackColor=16777113 and obereich.CellProtection.islocked=False then
for spalte=obereich.RangeAddress.StartColumn to obereich.RangeAddress.EndColumn
for zeile=obereich.RangeAddress.StartRow to obereich.RangeAddress.EndRow
ozelle=oZiel.getCellByPosition(spalte,zeile)
ozelle.string="!"
' select case ozelle.type
' Case com.sun.star.table.CellContentType.VALUE
' ozelle.Value=oQuelle.getCellByPosition(spalte,zeile).Value
' Case com.sun.star.table.CellContentType.TEXT
' ozelle.String=oQuelle.getCellByPosition(spalte,zeile).String
' Case com.sun.star.table.CellContentType.FORMULA
' ozelle.Formula=oQuelle.getCellByPosition(spalte,zeile).Formula
' end select
next
next
end if
Next
Next
'Schließen des Quelldokuments
' oQuellDocument.close (false)
End Sub
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Hallo,
so ein Quatsch, was bin ich dusselig:
Ich muss doch die Quellzellen testen und je nach deren Inhalt schreiben. Ansonsten bleibt eine leere Zelle halt leer
so ein Quatsch, was bin ich dusselig:
Ich muss doch die Quellzellen testen und je nach deren Inhalt schreiben. Ansonsten bleibt eine leere Zelle halt leer
Code: Alles auswählen
Sub Main2
'Zugriff auf dieses Dokument
oDoc=ThisComponent
'Auslesen des Dateinamens für den Datenimport
url=convertToUrl(oDoc.Sheets.getByName("Held").getCellRangeByName("FA9").String)
'Öffnen der Quelldatei, versteckt
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=true 'für die praktische Arbeit kann später True gesetzt werden, um die Datei versteckt zu öffnen
oQuellDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
'Durchlauf durch alle Tabellen
For k=0 to oDoc.Sheets.Count-1
'Zugriff auf die Tabelle in Zieldatei
oZiel=oDoc.Sheets(k)
oQuelle=oQuellDocument.Sheets(k)
obereiche=oZiel.getCellFormatRanges
'Durchlauf durch alle Bereiche
For i=0 to obereiche.count-1
oBereich=obereiche.getbyindex(i)
'Prüfen, ob Hintergrund gelb und nicht gesperrt
if obereich.CellBackColor=16777113 and obereich.CellProtection.islocked=False then
for spalte=obereich.RangeAddress.StartColumn to obereich.RangeAddress.EndColumn
for zeile=obereich.RangeAddress.StartRow to obereich.RangeAddress.EndRow
oquellzelle=oQuelle.getCellByPosition(spalte,zeile)
ozielzelle=oZiel.getCellByPosition(spalte,zeile)
select case oquellzelle.type
Case com.sun.star.table.CellContentType.VALUE
ozielzelle.Value=oquellzelle.Value
Case com.sun.star.table.CellContentType.TEXT
ozielzelle.String=oquellzelle.String
Case com.sun.star.table.CellContentType.FORMULA
ozielzelle.Formula=oquellzelle.Formula
end select
next
next
end if
Next
Next
'Schließen des Quelldokuments
oQuellDocument.close (false)
End Sub
Gruß,
mikele
mikele
Re: Calc-Makro Bastelhilfe
Hi,
ja, das ist klasse. Es läuft und das bedeutend viel schneller als das vorherige! Statt der rund 20 min braucht das Makro nur noch 2-3.
Ganz vielen Dank!
ja, das ist klasse. Es läuft und das bedeutend viel schneller als das vorherige! Statt der rund 20 min braucht das Makro nur noch 2-3.
Ganz vielen Dank!
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo (schon wieder),
nach einigen Praxistests habe ich doch noch eine (wahrscheinlich) Kleinigkeit:
Ganz am Ende, wenn der Import fertig ist, hätte ich gern ein Info-PopUp, das eben das sagt (also "Import abgeschlossen" oder sowas), da man das ansonsten doch recht leicht verpasst, wenn die Datei im Hintergrund geöffnet wird.
Hast du/habt ihr da eine entsprechende Erweiterung für mich?
nach einigen Praxistests habe ich doch noch eine (wahrscheinlich) Kleinigkeit:
Ganz am Ende, wenn der Import fertig ist, hätte ich gern ein Info-PopUp, das eben das sagt (also "Import abgeschlossen" oder sowas), da man das ansonsten doch recht leicht verpasst, wenn die Datei im Hintergrund geöffnet wird.
Hast du/habt ihr da eine entsprechende Erweiterung für mich?
Gruß,
Xaiorn
Xaiorn
Re: Calc-Makro Bastelhilfe
Hallo,
eine Messagebox?
Dann ergänze wie folgt:
Siehe:
https://help.libreoffice.org/latest/de/ ... 10102.html
eine Messagebox?
Dann ergänze wie folgt:
Code: Alles auswählen
'Schließen des Quelldokuments
oQuellDocument.close (false)
'*****************************************************************
Msgbox "Die Hitze macht mich fix un' fätisch...:_)", 64, "Hitzewarnung!"
'*****************************************************************
End Sub
https://help.libreoffice.org/latest/de/ ... 10102.html
Gruß
Craig
Nie die Sicherungskopie vergessen!
═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)
Craig
Nie die Sicherungskopie vergessen!
═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)