Hallo,
es sieht alles so weit ganz gut aus, bis eben #NV
Ich lege mal ein Bild bei.
Mit Gruß
Werner
🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst] =INDIREKT() in BASIC realisieren wie?
Re: [gelöst] =INDIREKT() in BASIC realisieren wie?
Zuletzt geändert von wega am Di 30. Aug 2016, 14:47, insgesamt 1-mal geändert.
Re: [teilgelöst] =INDIREKT() in BASIC realisieren wie?
Hallo,
das #NV sagt, dass DDE() die Zelle nicht finden kann.
Der erste Slash im Pfad ist wichtig und muss unbedingt eingefügt werden.
Was mich wundert ist, dass der Dateiname ohne Endung daherkommt?!
das #NV sagt, dass DDE() die Zelle nicht finden kann.
Der erste Slash im Pfad ist wichtig und muss unbedingt eingefügt werden.
Was mich wundert ist, dass der Dateiname ohne Endung daherkommt?!
Gruß,
mikele
mikele
Re: [teilgelöst] =INDIREKT() in BASIC realisieren wie?
hallo mikele,
Danke für Deine Geduld.
Ja, der erste Slash im Pfad ist wichtig, habe ich auch schon gefunden, indem ich ihn
per Hand der Zelleninformation beigefügt habe. Und promt erschien der Inhalt.
Die Endung fehlt auch an den Originaldateien (wie auch immer?). LibreOffice erkennt
aber, dass es eine Calc-Datei ist.
Weshalb das Ganze trotz angefügtem Slash noch nicht funktionierte lag daran, dass sich
ein Schreibfehlerteufel eingeschlichen hatte. Mal aFormeln() , ein andermal aFormel().
Nachdem dieser Lapsus behoben war lief das Makro.
Was mich verwundert: die DDE-Lösung über Array() läuft viel langsamer als ich erwartet
hätte. Sogar langsamer als die erste Lösung.
Gibt es dazu vielleicht eine Erklärung? DDE sollte doch nach den Forumsaussagen wesentlich schneller
sein als andere Lösungen.
Aber hier die letzte Fassung des DDE-Makros ohne Fehlerteufel und mit Slash.
Nochmals vielen Dank
und Gruß
Werner
Danke für Deine Geduld.
Ja, der erste Slash im Pfad ist wichtig, habe ich auch schon gefunden, indem ich ihn
per Hand der Zelleninformation beigefügt habe. Und promt erschien der Inhalt.
Die Endung fehlt auch an den Originaldateien (wie auch immer?). LibreOffice erkennt
aber, dass es eine Calc-Datei ist.
Weshalb das Ganze trotz angefügtem Slash noch nicht funktionierte lag daran, dass sich
ein Schreibfehlerteufel eingeschlichen hatte. Mal aFormeln() , ein andermal aFormel().
Nachdem dieser Lapsus behoben war lief das Makro.
Was mich verwundert: die DDE-Lösung über Array() läuft viel langsamer als ich erwartet
hätte. Sogar langsamer als die erste Lösung.
Gibt es dazu vielleicht eine Erklärung? DDE sollte doch nach den Forumsaussagen wesentlich schneller
sein als andere Lösungen.
Aber hier die letzte Fassung des DDE-Makros ohne Fehlerteufel und mit Slash.
Code: Alles auswählen
'Zusammenfassung Version 3
'
'Zusammenfassung von Quittungen
'Einen Zellbereich aus einem anderen ods-Dokument importieren.
'
'Von der nachfolgenden Adresse habe ich dieses Makro, das ich auf
'meine Bedürfnisse angepaßt habe.
'https://sites.google.com/site/starbasicmakros/makros-1/calc/verknuepfungen-zu-externen-datenquellen-einfuegen
'
'wesentliche Impulse kommen auch von dieser Seite:
'http://www.dannenhoefer.de/faqstarbasic/contents.htm
'
'Werner Gatzweiler im August 2016
'realisiert mit LibreOffice 5.1.4.2
'unter Lubuntu (Ubuntu)
'
'nachgebessert auf Anregung von
' mikele am 28. August 2016
'
Sub Zusammenfassung_V3
dim neuDoc As Object, oBereich As Object
Dim oSheet As Object
dim Anzahl AS Integer
Dim sAns as String, sPath as String, sFileURL as String, sFileName as String, sSaveToURL as String
Dim NextFile
Dim dummy(), aFormeln(), aWerte()
'***************************
'welcher Jahrgang?
'
sAns = InputBox("welcher Jahrgang soll bearbeitet werden?" & Chr(13) & Chr(13) & "Beispiel: 2011"
if sAns <> "" and len(sAns)=4 then
sPath = ("home/gisela/Ferienwohnung/Quittungen/" & sAns & "/")
else
exit sub
endif
'***************************
'neue Datei erstellen und unter dem Jahrgangsnamen abspeichern
'
neuDoc=StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, dummy())
sFileName = "Zusammenfassung-" & sAns 'Generieren des Dateinamens
sSaveToURL = ConvertToURL(sPath & sFileName) 'Speicherort und Dateinamen zusammenfügen
neudoc.storeasurl(sSaveToURL,dummy()) 'Die Datei ist jetzt mit ihrem Namen = Zusammenfassung- & sAns im Directory abgelegt
oSheet = neuDoc.Sheets.GetByName("Tabelle1") 'das Tabellenblatt der Zieldatei definieren
'************************************
' Kopfzeile der Tabelle beschreiben
'
oSheet.getCellbyPosition(0,0).string = sPath 'Der Hauptpfad
oSheet.getCellbyPosition(0,2).string = "Lfd.Nr."
oSheet.getCellbyPosition(1,2).string = "#Nr"
oSheet.getCellbyPosition(2,2).string = "Mieter"
oSheet.getCellbyPosition(3,2).string = "Anzahl Überna./Text"
oSheet.getCellbyPosition(4,2).string = "EURO"
oSheet.getCellbyPosition(5,2).string = "CENT"
oSheet.getCellbyPosition(6,2).string = "Gesamt"
'Die Kopfzeile wird formatiert
oSheet.getCellRangeByName("A1:G3").CharFontName="Comic Sans MS"
oSheet.getCellRangeByName("A1:G3").CharHeight="12"
oSheet.getCellRangeByName("A3:G3").CharWeight=com.sun.star.awt.FontWeight.BOLD
oSheet.getCellRangeByName("A3:G3").horijustify=2 'Kopfzellen zentrieren
'***************************
'Jahrgangsverzeichnis nach Quittungen durchforsten
'
NextFile = Dir(sPath ,0) 'hier wird die erste Datei im Verzeichnis aufgezeigt
Anzahl = 0 'ist der Zähler für die Anzahl der ausgewählten Dateien
While NextFile <> ""
if left(NextFile,4)="Quit" then 'hier wird das Auswahlkriterium für die Dateien gesetzt
Anzahl = Anzahl + 1
Redim Preserve aFormeln(Anzahl-1)
sURL = sPath & NextFile 'hier wird das Verzeichnis mit der Datei verbunden
'Formel in Array schreiben
surl = "/" & surl
formelanfang="=DDE(""soffice"";""" & surl & """;"""
'msgbox Formelanfang
aFormeln(Anzahl-1)=array(formelanfang & "Quittung.B5" & """)",formelanfang & "Quittung.A12" & """)",formelanfang & "Quittung.A14" & """)",formelanfang & "Quittung.F3" & """)",formelanfang & "Quittung.H3" & """)")
end if
NextFile = Dir
Wend
'Eintrag in die Zieltabelle, wenn Quittungen gefunden
if anzahl>0 then
'Array in Tabelle schreiben
oBereich = oSheet.getcellrangebyposition(1,4,5,3+anzahl)
oBereich.SetFormulaArray(aFormeln)
'Optional: Die Verknüpfung zu dem Link wieder entfernen.
'Der Inhalt bleibt bestehen, wird aber nicht mehr automatisch beim Neuladen aktualisiert.
aWerte=oBereich.GetDataArray
'oBereich.SetDataArray(aWerte)
end if
End Sub
und Gruß
Werner
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.