ich bin noch am Anfang meiner Makrokarriere.
Ich habe ein Makro zum Einlesen von Dateien in einem Verzeichnis und Ausgabe des Namens und des Datums.
Das funktioniert soweit. Hintergrund ist, dass ich zu jedem Angebot die zu Grunde liegenden daten aufführen möchte.
Anhand der Angebotsnummer bestimme ich die Variable "year", um im richtigen Verzeichnis das Verzeichnis für das Angebot zu finden
Ich habe ein paar Fragen
- Wie kann ich denn das ganze rekursiv machen, so dass Unterverzeichnisse mit berücksichtigt werden?
- Es erscheint ja ein Auswahlfenster als MsgBox im Pfad ="N:\Angebotsdaten\" & year. Wie kann ich hier die Sortierreihenfolge in der MsgBox umdrehen?
- Am Ende werden 2 Calc Dateien geöffnet - eine neue und die sFile = "L:\Vorlagen\ch_Anhang_einlesen.ods". Dort habe ich allerlei Formatierungen fertig. Kann ich auch anstatt in eine neue Datei in die sFile = "L:\Vorlagen\ch_Anhang_einlesen.ods" schreiben? Wie definiere ich die Zielzelle(n)?
Hier der Code
Code: Alles auswählen
REM einlesen der dateien in verzeichnis
sub Verzeichnis_einlesen
dim document as object
dim dispatcher as object
Dim Desktop as object
Dim Mappe as object
Dim Tabelle as object
Dim oFolderPicker as object
Dim sNamen As String
Dim sPath as String
Dim i as long
Dim year, angebotsnummer as String
Dim dummy()
Dim sDatum
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:UpdateCurIndex", "", 0, Array())
oMasters = ThisComponent.getTextFieldMasters()
oMasterNames = oMasters.getElementNames()
stopper = 0
For i = LBound(oMasterNames) to UBound(oMasterNames)
If Left(oMasterNames(i), 38) = "com.sun.star.text.fieldmaster.DataBase" Then
tmp = oMasters.getByName(oMasterNames(i))
if stopper = 0 THEN
angebotsnummer = tmp.DependentTextFields(0).Content
END IF
stopper = 1
rem MsgBox tmp.DependentTextFields(0).Content
End If
Next i
rem angebotsnummer zerlegen um jahreszahl zu bekommen
Array_mit_Teiltexten = Split(angebotsnummer, "/")
tmp1 = ""
For i = LBOUND(Array_mit_Teiltexten ()) To UBOUND(Array_mit_Teiltexten ())
tmp1 = tmp1 & Array_mit_Teiltexten(i) & CHR(13)
Next i
year = Array_mit_Teiltexten(0)
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.displaydirectory="N:\Angebotsdaten\" & year
oFolderPicker.execute
sPath = ConvertFromUrl(oFolderPicker.directory & "/")
' msgbox sPath
Desktop = CreateUnoService ("com.sun.star.frame.Desktop")
Mappe = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, dummy())
Tabelle = Mappe.getSheets().getbyIndex(0)
Tabelle.getCellbyPosition(0,0).string = sPath
i = 1
sNamen = Dir(sPath , 0)
Do While sNamen <> ""
Tabelle.getCellbyPosition(1,i).string = sNamen
sDatum = Split( FileDateTime(sPath & sNamen), " ")
Tabelle.getCellbyPosition(2,i).string = sDatum(0)
i = i + 1
sNamen = Dir
Loop
sFile = "L:\Vorlagen\ch_Anhang_einlesen.ods"
sURL = ConvertToURL(sFile)
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Array())
End Sub
Christian