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) 298-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]