Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Stapelverarbeitung

Stapelverarbeitung
19.01.2008 14:04:00
Kenjin
Hallo!
Ich habe unter Office 2007 ein Makro, mit dem ich Excel-Werte nach Word übergebe und die Word-Dateien dann als PDFs abspeichere. Die Excel- und Word / PDF-Dateien landen dabei immer in fest definierten Ordnern. Bisher wurde beim Aufruf des Makros immer ein Eingabefeld aufgerufen, in dem die zu konvertierende Excel-Datei eingegeben wurde.
Mein Problem ist nun, das ich das Makro so abändern muss, das alle Excel-Dateien nach Word übergeben werden sollen. Was muss ich einbauen, damit das Makro alle Exceldateien automatisch nacheinander einliest und verarbeitet? Wichtig wäre noch sowas wie eine Variable "Dateiname", da die Worddateien - mit leichter Abänderung - den selben Namen wie die Exceldatei haben muss.
Dankbar für jede Hilfe!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Stapelverarbeitung
19.01.2008 16:19:48
Volti
Hallo kenjin,
wie wäre es hiermit als ersten Ansatz:

Sub AAA()
LW = "C:\meinedaten\"
Dateiname = Dir(LW & "*.xls")
While Dateiname  ""
Pos = InStr(UCase(Dateiname), ".XLS")
Worddateiname = Left(Dateiname, Pos) & "doc"
MsgBox Dateiname & "!" & Worddateiname
Dateiname = Dir
Wend
End Sub


Anstelle der MSGBOX dann dein Makro aufrufen oder deinen Makrocode einfügen.
Ggf. müsstest Du vor den zurückgegebenen Dateinamen wieder den Pfad setzen, falls benötigt.
viele Grüße
Karl-Heinz

AW: Stapelverarbeitung
21.01.2008 19:59:00
Kenjin
Irgendwas mache ich noch verkehrt.
Habe das Makro jetzt soweit eingebunden, das es die bereits gesetzten Variablen etc. nutzt.
Habe aber nun immer die Fehlermeldung:
Laufzeitfehler '1004'
'C:\Users\Kenjin\Desktop\Office 2007\Work\xlsx.xlsx' wurde nicht gefunden.
Meine Routine bis dahin sieht wie folgt aus:

Sub AAA()
sPath = ThisWorkbook.Path
LW = ThisWorkbook.Path & "\Work\"
Dateiname = Dir(LW & "*.xlsx")
While Dateiname  ""
Pos = InStr(UCase(Dateiname), ".XLSX")
X_Workbook= Left(Dateiname, Pos)
Workbooks.Open Filename:= sPath & "\Work\" & X_Workbook & "xlsx"


Wie gesagt, das "Original-Makro" ruft aus eine Exceldatei auf und übergibt die Werte an ein Word-dokument. Der Name des Worddokumentes ist gleich der Exceldatei plus 1 Zusatz (Sprachschlüssel).
Wo mache ich den Fehler, das ich xlsx.xlsx rauskriege?

Anzeige
AW: Stapelverarbeitung
21.01.2008 20:39:00
Volti
Hallo Kenjin,
finde von meinem Codevorschlag nicht allzuviel wieder.
Erstmal: Das Suffix (Erweiterung) ".xlsx" ist mir unbekannt. Zwar gibt es mittlerweile auch vierstellige Suffixe wie z.B. ".html" aber die Norm ist immer noch höchstens dreistellig ".xls". M.E. werden längere auch abgeschnitten, bin mir aber nicht sicher.
Und dann versuch es lieber so, um Dein Verzeichnis durchzuscannen:

Sub AAA()
sPath = ThisWorkbook.Path
LW = ThisWorkbook.Path & "\Work\"
Dateiname = Dir(LW & "*.xlsx")
While Dateiname  ""
Workbooks.Open Filename:= sPath & "\Work\" & Dateiname
Dateiname=DIR
WEND
End Sub


Zur Erklärung:
Die Schleife scannt das angegebene Verzeichnis durch und gibt einen gefundenen Dateinamen ohne Pfad zurück. Den kannst Du dann mit Workbooks.Open aufmachen usw.
Dann kommt die nächste Datei dran.
viel Erfolg
Karl-Heinz

Anzeige
AW: Stapelverarbeitung
21.01.2008 22:11:51
Kenjin
Vielen Dank für den Hinweis.
Die vierstelligen Suffixe sind mit Office 2007 und dem XML-Format von Microsoft eingeführt worden. Zumindest unter "VB 2007" werden 4stellige Suffixe erkannt und voll abgearbeitet.
Bis einschliesslich Office 2003:
XLS - Excel, DOC - Word, PPT - Powerpoint - Alles Binärformate
Seit Office 2007:
XLSX - Excel; DOCX - Word, PPTX - PowerPoint - Gezippte XML-Datei
XLSM - Excel 2007 mit Makro

AW: Stapelverarbeitung
21.01.2008 22:18:26
Kenjin
Das VBA in 2007 scheint Probleme mit der Anweisung "*.xlsx" zu haben. Bei mir erscheint wieder nur Fehler 1004; Die Datei "C:\users\Kenjin\Desktop\Office 2007\Work\" kann nicht gefunden werden.
Gibt es einen Workaround?

Anzeige
AW: Stapelverarbeitung
22.01.2008 03:28:20
Kenjin
OK, habe jetzt eine passende Lösung gefunden.
Code wie folgt:

sPath = ThisWorkbook.Path
LW = ThisWorkbook.Path & "\Work\"
Dateiname = Dir(LW & "*.xlsx")
While Dateiname ""
X_Workbook = Left(Dateiname, Len(Dateiname)-5)
'Dieser Schritt muss sein, da ansonsten die Worddatei 12345.xlsx.DOCX heissen würde.
'Daher nur Begrenzung auf den Prefix
Workbooks.Open Filename:=sPath & "\Work\" & X_Workbook & ".xlsx"
'Statt sPath & "\Work\" ginge auch LW
'Anhängen vom Suffix ".XLSX" um die Exceldatei sauber zu öffnen.
Dateiname = Dir
Wend
End Sub


Der Code mag nicht der sauberste sein, aber er funktioniert. ;-)
Nochmals vielen Dank für die Hilfe.

Anzeige
AW: Stapelverarbeitung
22.01.2008 20:39:56
Volti
Hallo Kenjin,
schön, dass es jetzt funktioniert.
Das mit den vierstelligen Suffixen war mir neu. Ich habe mich bislang nur mit Excel 4.0 (ja, so alt bin ich schon) bis Excel 2002 beschäftigt. Sollte vielleicht mein heimiges Excel97 endlich mal updaten. :-)
PS: "X_Workbook = Left(Dateiname, Len(Dateiname)-5)" funktioniert natürlich nur bei vierstelligen Erweiterungen, das weißt Du ja. Ansonsten mit Instr(.... arbeiten.
viele Grüße
KH

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige