Formeln sollen nur unter Bedingungen in einem Feld sein.

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von balu »

Hallo vier³,

so, und nun noch etwas zum Verständnis.
Ctrl + Shift + End: markiert wohl den gesammten Bereich mit Inhalt, auch gut zu wissen.
Nicht ganz richtig!
Es wird lediglich der Bereich markiert von wo die Zellmarkierung steht bis zum Ende des benutzten Datenbereichs.
Beispiel:
Datenbereich geht von A1 bis G1000.
Zellmarkierung steht auf der Zelle D5.
Nun drückst Du die genannte Tastenkombi.
Es wird der Bereich D5 bis G1000 markiert.

Und was passiert wenn die Zellmarkierung auf K7 steht, und Du die Tastenkombi dann drückst?

Das zu Wissen ist sehr wichtig und unabhängig vom Makro, da dies ja normale Standard Tastenkombinationen sind. Auch wenn clag für das Makro aufzeichnen in der Auflistungszeile eins darüber die Tastenkombi "Ctrl + Pos1" angegeben hat, wodurch die Zellmarkierung auf A1 springt, so musst Du schon richtig verstehen was die Tastenkombi "Ctrl + Shift + End" wirklich macht, beziehungsweise wie sie wirklich funktioniert.

Aber auch "Ctrl + Pos1" springt nicht immer auf A1. Genau genommen springt die Zellmarkierung immer auf die erste sichtbare Zelle links oben. Wenn also die Spalten A und B, so wie die Zeilen 1 und 2 ausgeblendet sind, so steht die Zellmarkierung dann auf C3 wenn die Tastenkombi gedrückt wurde.

Was man alles an Fragen aus ziemlich klaren Anweisungen pressen kann. Aber ich denk mir halt, bevor irgendein kleiner Fehler drinsteckt, den man dann im Nachhinein mühsam suchen muss, lieber gleich alles abchecken.
Na dann darf ich dich auf etwas hinweisen, was hoffentlich nie und nimmer bei dir geschehen wird, wenn Du mit dem Makro fertig bisst.

Dir darf es nie und nimmer passieren, auch nicht aus versehen, das Du nach dem fertigen Makro das auszulesende Tabellenblatt (im Beispiel von clag wäre das "Bank") auf eine andere Position verschiebst. Kannst ja mal probieren was dann passiert.

Du errinerst dich an meine Aussage weiter oben?
balu hat geschrieben: Und dabei kann man noch nicht mal im nachhinein rauslesen welche Tabelle vom Code angesprochen wird.
Ein kleiner, aber sehr wichtiger Hinweis mit weitreichender Wirkung.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

@balu: sorry, aber mir brummt der Kopf zurZeit von Sachen, die zu erledigen sind. Im Moment schau ich einfach die Sachen auf schnellstem Weg so zu lösen, dass sie arbeiten und ich im Notfall soweit die Übersicht habe Veränderungen vorzunehmen. Bei Dir jetzt dranzubleiben wäre für mich bei meinem Kenntnisstand ein richtiges Projekt, zu dem mir im Moment die Zeit fehlt. Wenn sich das mal ändert, würde ich gerne drauf zurückkommen. Ist das ok?

@Clag: ich glaube ich habe eine stabile Lösung mit einmal Button drücken. Ich hatte ja vorher auch schon einen funktionierenden Export einfach mit dem SVERWEIS Datenblatt mit dem einzigen Unterschied, das ich die überzähligen Formeln per Hand gelöscht habe und auch den Export dann per hand gemacht habe.
Ich habe das Makro jetzt so eingerichtet, dass es erst deine erste makroaufzeichnung ausführt und die Datensätze ohne Formeln in ein zweites Datenblatt kopiert aber ohne den anschließenden Export in ein neues Dokument und es dann mit deiner zweiten makroaufzeichnung weiterlaufen lassen, die dann dieses zweite Datenblatt als CSV expprtiert. Ergebnis ist dann eine gespeicherte (und in StrarMoney importierbare) CSV-Datei, die auch geöffnet ist. Die dadurch weggefallene ods-Tabelle ist ja bereits in dem Zustand gespeichert, wo noch nicht mal die KTO/IBAN eingetragen ist und damit beim nächsten öffnen bereit und sauber für den nächsten Kundeneintrag + Export.
Ich würde das jetzt mal ne BETA-Version nennen (z.B. verhält sich das Dokument nach drücken des Buttons zunächst etwas merkwürdig und stellt den kopierten Text noch mal auf Tablellenblatt1 neben den Origninaltext, ich schätze das hängt mit hohen Geschwindigkeit ggü. händischer Eingabe zusammen, aber zuletzt ist der Text dann korrekt auf Tabellenblatt2). Unklar ist mir auch, was es mit "Filtereinstellungen bearbeiten" auf sich hat, dass in deinem Text anzukreuzen ist. Ich hatte es bei händischem Export immmer unangekreutzt und hab das auch im Makro so gehalten, aber wie gesagt ist mir nicht ganz klar. Zuletzt wäre es natürlich noch gut, wenn man den Speicherort im Makro festlegen könnte und den Namen fortlaufend führen könnte, aber das war mir zu heikel das ins Makro reinzunehmen, so dass die CSV jetzt mit festen Namen EXPORT.csv in dem Ordner landet, von dem aus die ods-Datei ursprünglich geladen wurde.

Aber es funktioniert und ich warte mal noch bißchen, ob von Dir oder jemandem Einwände kommen, würde es dann in meine Orginal-Datei einbauen.

Vielen Dank an alle, besonders an Clag, ohne den ich das nie und nimmer geschafft hätte.

vierviervier.
Windows 10
AOO 4.1.1 LO 6.0.7.3
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von balu »

Hallo vier³,
Bei Dir jetzt dranzubleiben wäre für mich bei meinem Kenntnisstand ein richtiges Projekt, zu dem mir im Moment die Zeit fehlt.
Ist schon in Ordnung.
Aber für mich wäre der hier auf der vorigen Seite angesprochene Fehlermeldung-Screenshot sehr wichtig, damit ich diesem Problem mal nachgehen kann.

Zuletzt wäre es natürlich noch gut, wenn man den Speicherort im Makro festlegen könnte und den Namen fortlaufend führen könnte, aber das war mir zu heikel das ins Makro reinzunehmen,
Und hier ist es wieder, das Thema richtig Programmieren. Eine fortlaufende Nummerierung eines Dateinamens kann man eben nicht aufzeichnen, das muss man Programmieren. Das soll jetzt nicht heißen das Du das alles umprogrammieren sollst, aber zumindest dir ein paar elementare Grundkenntnisse über das Basic-Programmieren aneigen musst. Und dadurch lernst Du auch gleichzeitig Makrocode zu lesen.

Nehmen wir mal den Speicherort als Beispiel.
Du hast ein Makro für das speichern als CSV aufgezeichnet, das ungefähr so aussieht.

Code: Alles auswählen

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///D:/Bankdaten/2015/CSV_für_Starmoney.csv"
args1(1).Name = "FilterName"
args1(1).Value = "Text - txt - csv (StarCalc)"
args1(2).Name = "FilterOptions"
args1(2).Value = "59,34,ANSI,1,,0,false,true,true"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Bei der Aufzeichnung stand ein Dateiname, sagen wir mal der war: CSV_für_Starmoney.csv
Und diesen Dateinamen findest Du in dieser Zeile ja wieder.

Code: Alles auswählen

args1(0).Value = "file:///D:/Bankdaten/2015/CSV_für_Starmoney.csv"
Um jetzt also ein anderes Verzeichnis fest vorzugeben, brauchst Du in dieser Zeile einfach nur den angegebenen Verzeichnisnamen zu ändern. Das würde dann beispielsweise so aussehen.

Code: Alles auswählen

args1(0).Value = "file:///D:/Exportierte_Bankdaten_als_CSV/2015-07/CSV_für_Starmoney.csv"
Da Du ja mit Win7 arbeitest steht dort ja auch der Laufwerksbuchstabe z.B. D:
Unter Windows sieht eine Pfadangabe ein klein wenig anders aus, beispielsweise so.

Code: Alles auswählen

D:\Exportierte_Bankdaten\2015-07\CSV_für_Starmoney.csv"
Da aber StarBasic die Pfadangaben nach einem anderen System handhabt, werden die Pfadtrenner anders angegeben, wie Du ja gesehen hast. Und außerdem wird noch ein "file:///" vorangesetzt. Das bedeutet widerum das es sich um eine lokale Datei auf der Festplatte handelt. Das ist nämlich auch wichtig zu wissen, da man auch auf Dateien aus dem Internet beziehungsweise dem Intranet zugreifen kann. Doch dann gibt man die dementsprechende Adresse so ein wie sie im Internetbrowser eingegeben wird, z.B. so: "http://www.google.de" Das aber nur so am Rande.

Also den Speicherort zu ändern, und auch einen anderen festen Dateinamen vorzugeben dürftest Du jetzt doch wohl hinbekommen. Und das ist doch wohl nicht so schwer.
Und damit wäre dann zumindest ein Problem weniger. Oder!?
(z.B. verhält sich das Dokument nach drücken des Buttons zunächst etwas merkwürdig und stellt den kopierten Text noch mal auf Tablellenblatt1 neben den Origninaltext, ich schätze das hängt mit hohen Geschwindigkeit ggü. händischer Eingabe zusammen, aber zuletzt ist der Text dann korrekt auf Tabellenblatt2)
Da scheint dir wohl ein Aufzeichnungsfehler unterlaufen zu sein. Aber ohne die Datei zu sehen kann man da nicht helfen, da wir den Code ja nicht kennen. Also entweder noch mal alles neu aufzeichnen, oder die Datei hier anhängen.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

Hallo Balu,

Danke für die Definitionen der Tastenkürzel, das hilft sehr Fehler zu vermeiden, wenn sich mal Bedingungen ändern.

Kleine Frage am Rand: Wie macht man einen Screenshot? Hab im forum auf die schnelle nix gefunden.

Bastle noch an der Beispieldatei und stelle sie dann rein.

Schöne Grüße, vierviervier.
Windows 10
AOO 4.1.1 LO 6.0.7.3
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von TrueColor »

vierviervier hat geschrieben:Kleine Frage am Rand: Wie macht man einen Screenshot?
DRUCK-Taste für den gesamten Bildschirm oder ALT+DRUCK für das aktive Fenster. Ist dann in der Zwischenablage zu finden, also fix Paint geöffnet, reinkopiert, gespeichert und hier als Dateianhang hochgeladen.
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von balu »

Wie macht man einen Screenshot? Hab im forum auf die schnelle nix gefunden.
Den macht man nicht IM Forum, sondern unter dem Betriebssystem. Und das geht ganz einfach.
Drücke einfach die Taste "Druck", bei einer englischen Tastatur dürfte das dann wohl die "Print Scrn" sein, oder so ähnlich. Befindet sich normalerweise direkt rechts neben der Funktionstaste "F12".

Dann nimmst Du ein Bildbearbeitungsprogramm und fügst den Inhalt der Zwischenablage ein, und speicherst das dann im JPG-Format (.jpg). Und diese Bilddatei hängst Du dann hier im Forum an.

Der Hinweis von TrueColor mit ALT+ ist natürlich auch sehr gut. :D



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

Hallo Balu,

Das mit dem Screenshot hat sich glaube ich erledigt (jetzt kamm nach Drücken von "Warenkorb": "Fäddisch" was ja wohl passt.
Unterschied zu den vorherigen malen war, dass ich beim öffnen deines Downloads diesmal nicht öffnen sondern speichern gewählt habe (sorry, gibt einfach ordentlich viel Bereiche wo ich noch arg schwimme).

Anbei meine Beispieldatei, war mal zwischendurch so weit, dass der gedrückte Button tatsächlich letztlich die korrekt gespeicherte CSV-Datei angezeigt hat, habe dann aber noch kleine Veränderungen vorgenommen und jetzt gehts nicht darüberhinaus, dass die Daten korrekt ohne Formeln auf ein 2. Datenblatt kopiert werden, die weiteren Schritte (Alt> D > U) Dateiname eingeben, CSV Datei als Dateityp auswählen, Feldtrenner auf Semikolon wechseln, macht er leider nicht mehr (obwohl die Schritte während der Aufnahme des makros korrekt ablaufen).

Soweitsofastgut, vierviervier.
Windows 10
AOO 4.1.1 LO 6.0.7.3
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

und hier auch noch die Beispieldatei. (Kräfteerlähmung)
Beispieldatei_Export_Makro_Version06.ods
(48.81 KiB) 95-mal heruntergeladen
Windows 10
AOO 4.1.1 LO 6.0.7.3
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von TrueColor »

balu hat geschrieben:Der Hinweis von TrueColor mit ALT+ ist natürlich auch sehr gut. :D
WIE gut der ist, erkennt man, wenn man sich den Screenshot einer Fehlermeldung von einem 6x Eyefinity-Desktop vorstellt ;-)
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von balu »

@ vier³
Danke für die Definitionen der Tastenkürzel, das hilft sehr Fehler zu vermeiden, wenn sich mal Bedingungen ändern.
Wirklich gern geschehn. :-)


jetzt kamm nach Drücken von "Warenkorb": "Fäddisch" was ja wohl passt.
Korrekt! Der Text sollte dann erscheinen.

Unterschied zu den vorherigen malen war, dass ich beim öffnen deines Downloads diesmal nicht öffnen sondern speichern gewählt habe
:lol:
Ja dann is alles klar.

Das mit dem Screenshot hat sich glaube ich erledigt
Vollkommen Richdisch! Gott-sei-Dank!
Und ich freu mich das ich nicht auf Fehlersuche gehen muss.


Back to Topic.

Dein märkwürzikkes Verhalten des Makros kann ich in deiner Datei leider nicht nachvollziehen. Der Grund dafür ist; Das dementsprechende Makro was für den Export zuständig ist, ist nicht in der Datei, sondern es liegt in deinem Office in deinen Makros. Es ist also bei dir zu Hause.

Nur so nebenbei bemerkt, Du arbeitest mit LibreOffice 4.2.8.2.




@TrueColor
wenn man sich den Screenshot einer Fehlermeldung von einem 6x Eyefinity-Desktop vorstellt ;-)
Wie bitte!? Du hast 6 Monitore? Ja bist Du denn wahnsinnig!? Also mit solchen Leuten will ich nix zu tun haben :lol:.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von TrueColor »

balu hat geschrieben:@TrueColor
wenn man sich den Screenshot einer Fehlermeldung von einem 6x Eyefinity-Desktop vorstellt ;-)
Wie bitte!? Du hast 6 Monitore? Ja bist Du denn wahnsinnig!? Also mit solchen Leuten will ich nix zu tun haben :lol:.
Edit: um das mal rauszutrennen, follow up --> viewtopic.php?f=16&t=66083
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

Hallo Balu, hatte eine höhere Version von LO aufespielt, die hat aber probleme gemacht bei einem Serienbrief, der wichtig ist, dass er funktioniert, und bin deswegen zur bewährten Version zurückgekehrt.

Soll ich Dir das Makro einzeln schicken oder irgendwie mit der Datei koppeln, falls das geht (da bräuchte ich dann schon wieder Hilfe)?

Schöne Grüße, vierviervier.
Windows 10
AOO 4.1.1 LO 6.0.7.3
vierviervier
*****
Beiträge: 278
Registriert: Mo, 10.05.2010 11:17

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von vierviervier »

Hallo an alle, hier mal das makro letzter Stand (funktioniert bei mir wie gesagt bis zum einsetzen der Daten in ein zweites Tabellenblatt).

Wußte nicht wie sonst hier reinstellen und hab jetzt einfach aus dem Makroeditor raus kopiert:

Vieleicht kennt jemand ein Tutorial o. ä. um sich die Grundbegriffe von BASIC anzueignen...

Code: Alles auswählen

Sub Main
p = createUnoService( "com.sun.star.util.PathSubstitution" )
msgbox p.substituteVariables("$(USER)/uno_packages/",1)
End Sub


sub ErzeugeExportDatei_01
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Tables"
args1(0).Value = Array(4)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Sel"
args5(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Tables"
args6(0).Value = Array(5)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Sel"
args7(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Sel"
args8(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = " "

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Sel"
args10(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Sel"
args12(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args12())


end sub


sub ErzeugeExportDatei_02
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Tables"
args1(0).Value = Array(4)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Sel"
args5(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Tables"
args6(0).Value = Array(5)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Sel"
args7(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Sel"
args8(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = " "

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Sel"
args10(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Sel"
args12(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(2) as new com.sun.star.beans.PropertyValue
args13(0).Name = "URL"
args13(0).Value = "file:///T:/DOW_Arbeit/Aktuelles/Matthias/Export_Makro/EXPORTAKTUELL.csv"
args13(1).Name = "FilterName"
args13(1).Value = "Text - txt - csv (StarCalc)"
args13(2).Name = "FilterOptions"
args13(2).Value = "59,34,ANSI,1,,0,false,true,true,false"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args13())


end sub



sub ErzeugeExportDatei_Beispiel01
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Tables"
args1(0).Value = Array(3)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Sel"
args5(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Tables"
args6(0).Value = Array(4)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Sel"
args7(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Sel"
args8(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = " "

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Sel"
args10(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Sel"
args12(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args12())


end sub


sub ErzeugeExportDatei_Beispiel02
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Tables"
args1(0).Value = Array(3)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Sel"
args5(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Tables"
args6(0).Value = Array(4)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Sel"
args7(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Sel"
args8(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = " "

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Sel"
args10(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Sel"
args12(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args12())


end sub

vierviervier
Windows 10
AOO 4.1.1 LO 6.0.7.3
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von Stephan »

@Stephan: Über einen einfachen Filter funktioniert meines Erachtens nicht, da der Import in StarMoney eine ziemlich pingeligge Angelegenheit ist: meine Hauptliste ist nach ganz eigenen Bedürfnissen aufgebaut, dem einzelnen Kunden sind ca. 20 Spalten zugerordnet, mit verschiedensten Preisberechnungen, Verknüfungen mit sich aktualisierenden Preistabellen..., die Reihenfolge der Spalten folgt auch ganz eigenen Kriterien.

Für den Export sind wiederum sehr strenge Regeln einzuhalten, sonst nimmt StarMoney die Daten nicht ("Dateiformat ungültig", den Satz habe ich die letzten Wochen xmal gelesen), die Reihenfolge der zu importierenden Daten für eine Sammelüberweisung muss genau mit dem Filter in SM übereinstimmen, es dürfen keine Lücken mit zu ignorierenden Spalten dazwischen sein; Währungsformat ist nicht erlaubt, es dürfen keine Formeln importiert werden in den nicht genutzten Zeilen ... Es ist unmöglich meine Hauptliste in eine Form zu bringen, die importierbar wäre (darüberhinaus halte ich es für unwahrscheinlich, dass man das Speichern unter CSV so gestalten kann, dass nur die gefilterten Daten ins CSV-Format übertragen werden, aber das hab ich nicht ausprobiert). Deswegen war es dann der Clou von Clag nur die relevanten Daten mit eines Formel-Dreischritts in einem eigenen Tabellenblatt anzuzeigen, das in Reihenfolge der Spalten, Format ... ganz auf den Import ausgelegt ist. Und dabei ist eben das (überschaubare) Restproblem entstanden, dass die nicht benötigten Formeln vor Export gelöscht werden müssen.

verstehe ich leider nicht, denn Deine ursprüngliche Frage war:

"Meine Frage, fällt jemand eine Möglichkeit ein, dass man die nicht gebrauchten Formeln nicht extra löschen braucht.
Gibt es z.B. eine Formel (auf einem anderen Tabellenblatt), die bewirkt, dass eine Formel nur angezeigt wird, wenn Sie greift?"


genau das tut der Filter aber, d.h. es gibt keine Formeln mehr in Zellen die ansonsten leer sind weil das Ergebnis der Formel zum Wert "" führt.


Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Formeln sollen nur unter Bedingungen in einem Feld sein.

Beitrag von Stephan »

Vieleicht kennt jemand ein Tutorial o. ä. um sich die Grundbegriffe von BASIC anzueignen...
siehe:
viewtopic.php?f=18&t=1553

speziell empfiehlt sich als zusammenfassende Darstellung:
https://www.uni-due.de/~abi070/ooo.html


Gruß
Stephan
Antworten