Daten aus mehrere Dateinen in einer Datei zusammenführen
Verfasst: So, 14.06.2009 23:29
Aufgabe:
1. Aus der Gesamtdatei die erste Datei eines Verzeichnises öffnen
2. Daten übernehmen
3. Datei schliesen
2.1. Macro in der Gesamtdatei ausführen
4. nächste Datei öffen
Weiter bei 2
Frage:
Im Code bei ' #### will ich das Macro aus meinen Gesamtdatei ausführen wie geht das??
Diese Varianten gehen nicht:
dispatcher.executeDispatch(document, ".uno:RunMacro", "gesamt.ods.Standard.moo1.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Standard.moo1.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Standard.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Main", 0, Array())
Hilfe kam aus:
viewtopic.php?f=18&t=23508
viewtopic.php?f=18&t=21695
Woran ich eine ganze Zeit hing:
Der Code kann nur ausgeführen werden, wenn das Macro (der Code) in einer Library ausserhalb der Gesamtdatei liegt.
Entschuldigt dass der Code noch nicht richtig dokumentiert ist.
Gruß PerRork
1. Aus der Gesamtdatei die erste Datei eines Verzeichnises öffnen
2. Daten übernehmen
3. Datei schliesen
2.1. Macro in der Gesamtdatei ausführen
4. nächste Datei öffen
Weiter bei 2
Frage:
Im Code bei ' #### will ich das Macro aus meinen Gesamtdatei ausführen wie geht das??
Diese Varianten gehen nicht:
dispatcher.executeDispatch(document, ".uno:RunMacro", "gesamt.ods.Standard.moo1.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Standard.moo1.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Standard.Main", 0, Array())
dispatcher.executeDispatch(document, ".uno:RunMacro", "Main", 0, Array())
Hilfe kam aus:
viewtopic.php?f=18&t=23508
viewtopic.php?f=18&t=21695
Woran ich eine ganze Zeit hing:
Der Code kann nur ausgeführen werden, wenn das Macro (der Code) in einer Library ausserhalb der Gesamtdatei liegt.
Entschuldigt dass der Code noch nicht richtig dokumentiert ist.
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Public document as object
Sub Copy_Quelle
Dim var_File as Variant ' Datei Namen und Pfad
Dim var_Path as Variant
Dim o_Doc_Z As Object ' Ziel Dokument
Dim o_Doc_Q As Object ' Quell Document
Dim str_UrlSrc as String ' Für das öffnen des Dokuments
Dim var_Bereich_Q as Variant ' Array für den Quell Bereich
Dim var_Bereich_Z as Variant ' Array für den Ziel Bereich
Dim o_Sheet_Z As Object ' Zieltabelle
Dim o_Sheet_Q As Object ' Quelltabelle
Dim str_Ber as String ' Welcher Bereich
Dim myFileProp(0) as New com.sun.star.beans.PropertyValue ' ????
Dim dispatcher as object ' ????
var_Path ="D:\xxx\"
var_File = var_Path & Dir("D:\xxx\*.xls", 0)
Do
' Zeile öffnen und Bereich festlegen
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
o_Doc_Z = thisComponent ' Ziel Dokument zuweisen
o_Sheet_Z = o_Doc_z.Sheets(0) 'Zieltabelle zuweisen (0 ist die Erste)
str_Ber ="A1:D108"
' Quelldatei
str_UrlSrc = converttoURL(var_File) 'Pfad zum Dokument anpassen
myFileProp(0).value = True 'False > Im Vordergrund öffnen
o_Doc_Q = StarDesktop.loadComponentFromURL(str_UrlSrc, "_blank", 0, myFileProp())
o_Doc_Q = thisComponent ' Quell Document
o_Sheet_Q = o_Doc_Q.Sheets(0) 'Quelltabelle zuweisen (0 ist die Erste)
var_Bereich_Q = o_Sheet_Q.getCellRangeByName(str_Ber).getDataArray() ' Quelle lesen
var_Bereich_Z =o_Sheet_Z.getCellRangeByName(str_Ber) ' Zum Zielbereich gehen
var_Bereich_Z.setDataArray(var_Bereich_Q) ' Daten von Quelle in Ziel einfügen
o_Doc_Q.close(True) ' Quelldokument schliessen
' ####
dispatcher.executeDispatch(document, ".uno:RunMacro", "", 0, Array()) 'gesamt.ods.Standard.moo1.Main
' var_File = var_Path & Dir
' Loop Until var_File = ""
' kann nicht funktionieren da var_Path immer einen Wert hat
'Änderung:
var_File = Dir ' nächster Dateiname
var_Pruef = var_File ' für Prüfung ob noch ein Dateiname vorhanden ist
var_File = var_Path & var_File ' Path und Dateiname zusammen
Loop Until var_Pruef = ""
End Sub