Csv Makro Parameter
Moderator: Moderatoren
Csv Makro Parameter
Hallo nochmal,
Nur zum verständnis, ich habe hier eine csv datei von einem lieferanten die ich mit einem downloadmanager runterlade, dann eine spalte mit formel ergänze, speichere (mittlerweile mit einem makro) und fertig. Es ist immer die selbe csv datei mit dem selben dateinamen, nun möchte ich mit einem parameter das ganze automatisieren, vom autom. Öffnen der datei bis hin zum speichern und schliessen, wie kann ich es realisieren. Ich bin soweit gekommen das der parameter mir die datei bis zur abfrage der öffnungsart ( also wo er fragt mit welcher codierung usw.) Gekommen.
Hoffe das mir hier jemand helfen kann
Nur zum verständnis, ich habe hier eine csv datei von einem lieferanten die ich mit einem downloadmanager runterlade, dann eine spalte mit formel ergänze, speichere (mittlerweile mit einem makro) und fertig. Es ist immer die selbe csv datei mit dem selben dateinamen, nun möchte ich mit einem parameter das ganze automatisieren, vom autom. Öffnen der datei bis hin zum speichern und schliessen, wie kann ich es realisieren. Ich bin soweit gekommen das der parameter mir die datei bis zur abfrage der öffnungsart ( also wo er fragt mit welcher codierung usw.) Gekommen.
Hoffe das mir hier jemand helfen kann
Re: Csv Makro Parameter
Hi,
das Makro muss die Parameter in Kurzform beinhalten.
Um sie herauszubekommen, kannst Du die geöffnete Datei einmal als .csv mit den gleichen Parametern, wie du sie beim Öffnen setzt, speichern, und diesen Vorgang mit dem Makro-Recorder aufzeichnen.
In dem entstehenden Makro sollten einige Zeilen vorkommen, die die notwendigen Parameter enthalten, etwa so:
Die letzte Zeile ist die wichtigste.
Wenn du das hast, melde dich wieder.
Gruß R
das Makro muss die Parameter in Kurzform beinhalten.
Um sie herauszubekommen, kannst Du die geöffnete Datei einmal als .csv mit den gleichen Parametern, wie du sie beim Öffnen setzt, speichern, und diesen Vorgang mit dem Makro-Recorder aufzeichnen.
In dem entstehenden Makro sollten einige Zeilen vorkommen, die die notwendigen Parameter enthalten, etwa so:
Code: Alles auswählen
Dim Args(1) as New com.sun.star.beans.PropertyValue
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,21,1,,0,false,false" ' <------ hängt von der Art der .csv-Datei ab
Wenn du das hast, melde dich wieder.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
Danke für die Antwort, habe das Makro aufgezeichnet, nun hier der Inhalt der Makro:
noch was, was muss ich einstellen das er mir bei dieser datei nicht jedesmal das auswahl fensten einblendet, wenn ich die csv öffne, weil es immer die selbe ist.
Danke
Danke für die Antwort, habe das Makro aufgezeichnet, nun hier der Inhalt der Makro:
Code: Alles auswählen
REM ***** BASIC *****
sub mein makro
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 = "ToPoint"
args1(0).Value = "$U$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "EK"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$U$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=h2+i2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$U$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "U2:U12000"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
end sub
Danke
Re: Csv Makro Parameter
Hallo,
ich denke, du hast entweder das falsche Makro geposted oder nicht den Export einer CSV Datei aufgenommen.
Wo ist die wichtige Zeile? In deinem Makro finde ich sie auf jeden Fall nicht.
Gruß R
ich denke, du hast entweder das falsche Makro geposted oder nicht den Export einer CSV Datei aufgenommen.
Wo ist die wichtige Zeile? In deinem Makro finde ich sie auf jeden Fall nicht.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
Ich verstehe nicht was du meinst, das ist alles was ich kann. Ich habe ein makro aufgezeichnet, es gespeichert und fertig. Ich möchte nun das makro mit einer batch ausführen lassen, vom öffnen bis hin zum schliessen. mir fehlt jetzt das die csv ohne auswahl fenster geöffnet wird und nachdem makro wieder schliesst. Bin jetzt seit einer woche dran und komme nicht voran
Ich verstehe nicht was du meinst, das ist alles was ich kann. Ich habe ein makro aufgezeichnet, es gespeichert und fertig. Ich möchte nun das makro mit einer batch ausführen lassen, vom öffnen bis hin zum schliessen. mir fehlt jetzt das die csv ohne auswahl fenster geöffnet wird und nachdem makro wieder schliesst. Bin jetzt seit einer woche dran und komme nicht voran
Re: Csv Makro Parameter
Hi,
So, und diese Parameter findest Du heraus, indem du deine geöffnete Datei einmal mit genau den Parametern (beim Speichern-> Filtereinstellungen bearbeiten) als .csv speicherst und dabei den Makrorecorder mitlaufen läßt.
Erst wenn du sie kennst, kann das Makro weiter erstellt werden.
Wenn Dir das zu kompliziert ist, kannst Du auch eine Beispiel.csv Datei hier hochladen, dann hab ich die Parameter in Nullkommanix herausgefunden.
Gruß R
Ja, das habe ich schon verstanden, ab das ist eben nicht ganz so einfach. Damit dass Auswahlfenster geschlossen bleibt, kann man dem Makro sagen, mit welchen .csv-Parametern, das sind nämlich die, die du in dem Auswahlfenster jedes Mal wählen musst, es arbeiten soll. Sonst geht es nicht, dann wird die Datei falsch geladen.abuayyoub hat geschrieben:... mir fehlt jetzt das die csv ohne auswahl fenster geöffnet wird und nachdem makro wieder schliesst
So, und diese Parameter findest Du heraus, indem du deine geöffnete Datei einmal mit genau den Parametern (beim Speichern-> Filtereinstellungen bearbeiten) als .csv speicherst und dabei den Makrorecorder mitlaufen läßt.
Erst wenn du sie kennst, kann das Makro weiter erstellt werden.
Wenn Dir das zu kompliziert ist, kannst Du auch eine Beispiel.csv Datei hier hochladen, dann hab ich die Parameter in Nullkommanix herausgefunden.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
OK, jetzt habe ich es erst verstanden, hier die paramater:
Danke
OK, jetzt habe ich es erst verstanden, hier die paramater:
Code: Alles auswählen
dim args11(2) as new com.sun.star.beans.PropertyValue
args11(0).Name = "URL"
args11(0).Value = "file:///"
args11(1).Name = "FilterName"
args11(1).Value = "Text - txt - csv (StarCalc)"
args11(2).Name = "FilterOptions"
args11(2).Value = "59,34,76,1,,0,false,true,true"
Re: Csv Makro Parameter
In welchem Format möchtest du speichern?
.ods?
Gruß R
.ods?
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
in csv
in csv
Re: Csv Makro Parameter
So,
das sollte funzen:
die zwei Pfade müssen natürlich angepasst werden:
Gruß R
das sollte funzen:
Code: Alles auswählen
S_Load_CSV_INSERT_EK_Store_CSV
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = converttourl("C:\Users\<USERNAME>\Desktop\Test.csv") ' <------ Dateipfad der zu ladenden Datei
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "59,34,76,1,,0,false,true,true"
odoc = StarDesktop.loadComponentFromURL(sURL,"_blank", 0, Args())
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = odoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$U$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "EK"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$U$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=h2+i2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$U$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "U3:U12000"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
sURLnew = converttourl("C:\Users\<USERNAME>\Desktop\TestNew.csv") ' <------ Dateipfad der zu speichernden Datei
odoc.storeToURL(sURLnew,Args())
odoc.close -1
msgbox "OK"
end sub
Code: Alles auswählen
...
sURL = converttourl("C:\Users\<USERNAME>\Desktop\Test.csv") ' <------ Dateipfad der zu ladenden Datei
...
sURLnew = converttourl("C:\Users\<USERNAME>\Desktop\TestNew.csv") ' <------ Dateipfad der zu speichernden Datei
...
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
Danke erstmal
Wie lade ich die datei jetzt mit batch ohne auswahlfenster mit dem makro
Danke erstmal
Wie lade ich die datei jetzt mit batch ohne auswahlfenster mit dem makro
Re: Csv Makro Parameter
Hi,
wenn ich dich richtig verstehe, möchtest Du AOO per batch-Datei im Hintergrund laden, dann die .csv laden -> bearbeiten -> speichern und AOO wieder beenden?
Tut mir leid, da bin ich überfragt, vielleicht weiß jemand anderes weiter.
Gruß R
wenn ich dich richtig verstehe, möchtest Du AOO per batch-Datei im Hintergrund laden, dann die .csv laden -> bearbeiten -> speichern und AOO wieder beenden?
Tut mir leid, da bin ich überfragt, vielleicht weiß jemand anderes weiter.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
So,
ich habe geforscht, es gibt vielleicht einen eleganteren Weg aber dies funktioniert unter Windows 7.
Ich habe es komplett umgeschrieben, da das aufgenommene im Hintergrund nicht funktioniert.
Viel Erfolg Gruß R
ich habe geforscht, es gibt vielleicht einen eleganteren Weg aber dies funktioniert unter Windows 7.
- ein .vb-Script Start_batch.vbs
Code: Alles auswählen
Set WShShell = WScript.CreateObject("WScript.Shell") WShShell.Run "ModifyCSV.bat", 0
- startet die Batchdatei ModifyCSV.bat die sich im gleichen Ordner wie Start_batch.vbs befindet.
Code: Alles auswählen
@echo off set sOfficepath=C:\Program Files\OpenOffice 4\program\soffice.exe set sMacropath=macro:///Standard.Modify_csv.S_load_csv_insert_EK_store_csv "%sOfficepath%" -norestore -nologo "%sMacropath%" exit
- Die Batch Datei öffnet AOO 4, welches sich im Ordner C:\Program Files\OpenOffice 4\program\soffice.exe befindet.
- Unter meine Makros hat diese Installation
- in der Basic-Bibliothek Standard
- ein Modul Modify_csv und
- in diesem Modul befindet sich das Makro S_load_csv_insert_EK_store_csv
Code: Alles auswählen
Sub S_load_csv_insert_EK_store_csv Dim Args(2) as New com.sun.star.beans.PropertyValue sURL = converttourl("C:\Users\<USERNAME>\Desktop\Test.csv") ' <------ Dateipfad der zu ladenden Datei Args(0).Name = "FilterName" Args(0).Value ="Text - txt - csv (StarCalc)" Args(1).Name = "FilterOptions " Args(1).Value = "59,34,76,1,,0,false,true,true" Args(2).Name = "Hidden" Args(2).Value = true odoc = StarDesktop.loadComponentFromURL(sURL,"_blank", 0, Args) osheet = odoc.sheets(0) oHeaderCell = osheet.getcellrangebyname("U1") oHeaderCell.string ="EK" oFormulaRange = osheet.getcellrangebyname("U2:U12000") aFormulaArray = oFormulaRange.FormulaArray for i = 0 to ubound(aFormulaArray) aFormulaArray(i)(0) = "=H" &(i+2)&"+I"&(i+2) next i oFormulaRange.setFormulaArray(aFormulaArray) sURLnew = converttourl("C:\Users\<USERNAME>\Desktop\TestNew.csv") ' <------ Dateipfad der zu speichernden Datei odoc.storeToURL(sURLnew,Args) odoc.close -1 end sub
- Dieses Makro liest die .csv Dateiim Hintergrund ein und
Code: Alles auswählen
C:\Users\<USERNAME>\Desktop\Test.csv
- schreibt die geänderte Dateizurück.
Code: Alles auswählen
C:\Users\<USERNAME>\Desktop\TestNew.csv
- Alles nicht sichtbar.
Ich habe es komplett umgeschrieben, da das aufgenommene im Hintergrund nicht funktioniert.
Viel Erfolg Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Csv Makro Parameter
Hallo,
sorry das ist mir zu kompiziert, es kann doch nicht so schwer sein die csv ohne parameter anfrage (auswahlfenster) zu öffnen und wieder zu schliessen.
hier meine batch datei:
Danke
sorry das ist mir zu kompiziert, es kann doch nicht so schwer sein die csv ohne parameter anfrage (auswahlfenster) zu öffnen und wieder zu schliessen.
hier meine batch datei:
wenn ich diesen befehl in cmd.exe eingebe erscheint das auswahlfenster danch wird das Makro ausgeführt, es braucht dann nur zu schliessen dann habe ich was ich will, das dürfte doch möglich sein diese zwei hindernisse zu lösen.start soffice macro:///standard.module1.mein makro -o "file.csv"
Danke
Re: Csv Makro Parameter
dann dürfte hier Ende der Diskussion sein, denn OpenOffice kann es nicht nicht anderssorry das ist mir zu kompiziert
nö, das ist simpel und ist Dir im Thread ja nun bereits mehrfach anhand von Code-Beispielen erläutert wordenes kann doch nicht so schwer sein die csv ohne parameter anfrage (auswahlfenster) zu öffnen und wieder zu schliessen.
Ich weiß nicht was dazu noch zu sagen wäre, denn ohne Angabe von Öffnungsparametern kann es nicht gehen und die Art und Weise deren Übergabe, also z.B.:
Code: Alles auswählen
Args(1).Value = "59,34,76,1,,0,false,true,true"
Gruß
Stephan