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