von mikeleb » Di, 02.05.2023 20:28
Hallo,
da ich gerade so ein ähnliches Makro da hatte, mal ein Beispiel, wie es aussehen könnte.
Wenn du die Sub csv_import aufrufst, öffnet sich ein Dialog zum Auswählen und Öffnen der cvs-Datei. Aus dieser werden die Daten aus der 1. Tabelle Zellen B1:B20 ausgelesen und in die odt-Datei, 1.Tabelle Zellen D11:D30 geschrieben.
Code: Alles auswählen
Sub csv_import
'Zugriff auf die aktuelle Datei
oDoc=ThisComponent
'Öffnen der csv-Datei
Dim args(1) as New com.sun.star.beans.PropertyValue
args(0).Name= "FilterName"
args(0).Value = "Text - txt - csv (StarCalc)"
'ASCII-Codes 44 (Komma), 32 (Leerzeichen), 9 (Tabulator)
'Mehrfachauswahl durch / trennen, z. B. 44/9
sFeldSeparator="44"
'ASCII-Codes 34 (doppelte Hochkomma), 39 (einfache Hochkomma)
sTextBegrenzer="34"
'Systemzeichensatz 0
sZeichensatz="0"
'erste einzulesende Zeile
sErste="1"
'Spaltenformat für jede Spalte festlegen
'Spalte/Format/Spalte/Format/...
'Formate: 1 Standard, 2 Text, 3 Datum (MTJ), 4 Datum (TMJ), 5 Datum (JMT), 9 nicht importieren, 10 US-englisch
'nicht aufgeführte Spalten werden als Standard importiert
sSpaltenFormate="1/1/2/1/3/1/4/1"
args(1).Name="FilterOptions"
args(1).Value =sFeldSeparator & "," & sTextBegrenzer & "," & sZeichensatz & "," & sErste & "," & sSpaltenformate
'Dialog zur Dateiauswahl
'ein Startverzeichnis kann optional vorgegeben werden
sUrl= FileOpenDialog("csv-Datei auswählen","")
if isarray(sUrl) then
oCSV=StarDesktop.LoadComponentFromURL(sUrl(0), "_blank",0,args())
end if
'Auslesen der Daten in ein Array der Daten
aDaten=oCSV.Sheets(0).getCellRangeByName("B1:B20").getDataArray
'Schreiben der Daten in die aktuelle Datei
oDoc.Sheets(0).getCellRangeByName("D11:D30").setDataArray(aDaten)
End Sub
function FileOpenDialog(sTitle as String, optional sStartverzeichnis as string)
if ismissing(sStartverzeichnis) then
oPS=CreateUnoService("com.sun.star.util.PathSettings")
sStartverzeichnis=oPS.work
end if
oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
oFilepicker.Title = sTitle
oFilepicker.appendFilter("Alle Dateien", "*.*")
oFilepicker.appendFilter("csv-Dateien", "*.csv")
oFilepicker.setCurrentFilter("csv-Dateien")
oFilepicker.setMultiSelectionMode(true)
oFilepicker.setDisplayDirectory(converttourl(sStartverzeichnis))
if oFilepicker.execute()=1 then
FileOpenDialog = oFilepicker.getSelectedFiles()
else
FileOpenDialog=""
end if
End function
- Dateianhänge
-
- beispiel_csv_auslesen.ods
- (8.92 KiB) 168-mal heruntergeladen
Hallo,
da ich gerade so ein ähnliches Makro da hatte, mal ein Beispiel, wie es aussehen könnte.
Wenn du die Sub csv_import aufrufst, öffnet sich ein Dialog zum Auswählen und Öffnen der cvs-Datei. Aus dieser werden die Daten aus der 1. Tabelle Zellen B1:B20 ausgelesen und in die odt-Datei, 1.Tabelle Zellen D11:D30 geschrieben.
[code]Sub csv_import
'Zugriff auf die aktuelle Datei
oDoc=ThisComponent
'Öffnen der csv-Datei
Dim args(1) as New com.sun.star.beans.PropertyValue
args(0).Name= "FilterName"
args(0).Value = "Text - txt - csv (StarCalc)"
'ASCII-Codes 44 (Komma), 32 (Leerzeichen), 9 (Tabulator)
'Mehrfachauswahl durch / trennen, z. B. 44/9
sFeldSeparator="44"
'ASCII-Codes 34 (doppelte Hochkomma), 39 (einfache Hochkomma)
sTextBegrenzer="34"
'Systemzeichensatz 0
sZeichensatz="0"
'erste einzulesende Zeile
sErste="1"
'Spaltenformat für jede Spalte festlegen
'Spalte/Format/Spalte/Format/...
'Formate: 1 Standard, 2 Text, 3 Datum (MTJ), 4 Datum (TMJ), 5 Datum (JMT), 9 nicht importieren, 10 US-englisch
'nicht aufgeführte Spalten werden als Standard importiert
sSpaltenFormate="1/1/2/1/3/1/4/1"
args(1).Name="FilterOptions"
args(1).Value =sFeldSeparator & "," & sTextBegrenzer & "," & sZeichensatz & "," & sErste & "," & sSpaltenformate
'Dialog zur Dateiauswahl
'ein Startverzeichnis kann optional vorgegeben werden
sUrl= FileOpenDialog("csv-Datei auswählen","")
if isarray(sUrl) then
oCSV=StarDesktop.LoadComponentFromURL(sUrl(0), "_blank",0,args())
end if
'Auslesen der Daten in ein Array der Daten
aDaten=oCSV.Sheets(0).getCellRangeByName("B1:B20").getDataArray
'Schreiben der Daten in die aktuelle Datei
oDoc.Sheets(0).getCellRangeByName("D11:D30").setDataArray(aDaten)
End Sub
function FileOpenDialog(sTitle as String, optional sStartverzeichnis as string)
if ismissing(sStartverzeichnis) then
oPS=CreateUnoService("com.sun.star.util.PathSettings")
sStartverzeichnis=oPS.work
end if
oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
oFilepicker.Title = sTitle
oFilepicker.appendFilter("Alle Dateien", "*.*")
oFilepicker.appendFilter("csv-Dateien", "*.csv")
oFilepicker.setCurrentFilter("csv-Dateien")
oFilepicker.setMultiSelectionMode(true)
oFilepicker.setDisplayDirectory(converttourl(sStartverzeichnis))
if oFilepicker.execute()=1 then
FileOpenDialog = oFilepicker.getSelectedFiles()
else
FileOpenDialog=""
end if
End function
[/code]