DOC nach TXT

22/08/2008 - 19:19 von Mike Berger | Report spam
Hallo zusammen,

ich habe ein Verzeichnisbaum von 3 Ebenen, nun sind darin ca. 500 Dokumente.

Diese Dokumente ich möchte ich gerne automatisch öffnen lassen und dann
als txt Datei abspeichern, wenn es sogar möglich ist möchte ich die DOC
Datei von der Festplatte löschen.

Eine Datei öffnen mit VBA kann ich ja, aber da muss ich den Dateinamen
im Code haben.

Gibt es eine Möglichkeit, wie ich das in VBA machen kann?

Habe Word XP und 2003

Danke Euch
Mike
 

Lesen sie die antworten

#1 Helmut Weber
23/08/2008 - 23:46 | Warnen spam
Hallo Mike,

vielleicht so, in einem Modul:

' -
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" ( _
ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
' http://vb-tec.de/xshell.htm ' !!!
' by Jost Schwider
' von dem ich alles, was Shell betrifft, abgekupfert habe
' -

Public Function ShellX( _
ByVal PathName As String, _
Optional ByVal WindowStyle As Long = vbMinimizedFocus, _
Optional ByVal Events As Boolean = True _
) As Long


'Deklarationen:
Const STILL_ACTIVE = &H103&
Const PROCESS_QUERY_INFORMATION = &H400&
Dim ProcId As Long
Dim ProcHnd As Long

'Prozess-Handle holen:
ProcId = Shell(PathName, WindowStyle)
ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId)

'Auf Prozess-Ende warten:
Do
If Events Then DoEvents
GetExitCodeProcess ProcHnd, ShellX
Loop While ShellX = STILL_ACTIVE

'Aufràumen:
CloseHandle ProcHnd

End Function
' -
Sub test4f()
Dim mydoc As Document
Dim stmp As String
Dim sDos As String
Dim sCmd As String
Dim sShell As String
sCmd = "dir c:\test\*.doc /s/b > c:\MyTEst\mYdir.txt"
sShell = Environ$("COMSPEC")
ShellX sShell & " /c " & sCmd, vbHide
Open "c:\MyTEst\mYdir.txt" For Input As #1
While Not EOF(1)
Line Input #1, stmp ' Read line of data.
Set mydoc = Documents.Add(stmp, Visible:=false)
sDos = Left(stmp, Len(stmp) - 3) & "txt"
mydoc.SaveAs sDos, FileFormat:=wdFormatDOSText
mydoc.Close
' Kill stmp ' aufpassen
Wend
Close #1
End Sub

ShellX brauchts, um zu warten,
bis die Liste der 500 Dateien erstellt ist.

Ist leider nicht so einfach...


Gruß

Helmut Weber, MVP WordVBA

Vista Small Business, Office XP

Ähnliche fragen