Vba 循环浏览目录中的所有Word文件
我有以下代码:Vba 循环浏览目录中的所有Word文件,vba,ms-word,Vba,Ms Word,我有以下代码: Sub WordtoTxtwLB() ' ' WordtoTxtwLB Macro ' ' Dim fileName As String myFileName = ActiveDocument.Name ActiveDocument.SaveAs2 fileName:= _ "\\FILE\" & myFileName & ".txt", FileFormat:= _ wdFormatText, LockComments:=False, Password:=""
Sub WordtoTxtwLB()
'
' WordtoTxtwLB Macro
'
'
Dim fileName As String
myFileName = ActiveDocument.Name
ActiveDocument.SaveAs2 fileName:= _
"\\FILE\" & myFileName & ".txt", FileFormat:= _
wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1252, InsertLineBreaks:=True, AllowSubstitutions:=False, _
LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
Sub LoopDirectory()
vDirectory = "C:\programs2\test"
vFile = Dir(vDirectory & "\" & "*.*")
Do While vFile <> ""
Documents.Open fileName:=vDirectory & "\" & vFile
ActiveDocument.WordtoTxtwLB
vFile = Dir
Loop
End Sub
我想在目录中的所有word(.doc)文件中循环此子文件。我有以下代码:
Sub WordtoTxtwLB()
'
' WordtoTxtwLB Macro
'
'
Dim fileName As String
myFileName = ActiveDocument.Name
ActiveDocument.SaveAs2 fileName:= _
"\\FILE\" & myFileName & ".txt", FileFormat:= _
wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1252, InsertLineBreaks:=True, AllowSubstitutions:=False, _
LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
Sub LoopDirectory()
vDirectory = "C:\programs2\test"
vFile = Dir(vDirectory & "\" & "*.*")
Do While vFile <> ""
Documents.Open fileName:=vDirectory & "\" & vFile
ActiveDocument.WordtoTxtwLB
vFile = Dir
Loop
End Sub
Sub-LoopDirectory()
vDirectory=“C:\programs2\test”
vFile=Dir(vDirectory&“\”和“***”)
当vFile“”时执行此操作
文档。打开文件名:=vDirectory&“\”&vFile
ActiveDocument.WordtoTxtwLB
vFile=Dir
环
端接头
但它不起作用。如何通过更改当前代码或使用新代码来实现这一点?您实际上不需要WordtoTxtwLB宏。您可以将这两种代码组合在一起。看这个例子 (未经测试)
Sub-LoopDirectory()
Dim vDirectory作为字符串
作为文档的Dim-oDoc
vDirectory=“C:\programs2\test\”
vFile=Dir(vDirectory&“****”)
当vFile“”时执行此操作
设置oDoc=Documents.Open(文件名:=vDirectory&vFile)
ActiveDocument.SaveAs2文件名:=“\\FILE\”&oDoc.Name&“.txt”_
FileFormat:=wdFormatText_
注释:=假_
密码:=“”_
AddToRecentFiles:=True_
WritePassword:=“”_
ReadOnlyRecommended:=False_
EmbeddeTrueTypeFonts:=False_
SaveNativePictureFormat:=False_
SaveFormsData:=False_
saveAsoceLetter:=False_
编码:=1252_
InsertLineBreaks:=真_
AllowSubstitutions:=False_
行尾:=wdCRLF_
相容性模式:=0
oDoc.Close SaveChanges:=False
vFile=Dir
环
端接头
顺便说一句,您确定要使用通配符
*.*
?如果文件夹中有Autocad文件,该怎么办?另外,ActiveDocument.Name
将为您提供扩展名为的文件名。要编辑目录中的所有word文档,我构建了这个简单的子例程
子例程在目录中循环,然后
打开找到的每个*.doc文件。然后在打开的文档文件上调用
第二个子例程。第二个子例程完成后,文档
保存,然后关闭
Sub DoVBRoutineNow()
Dim file
Dim path As String
path = "C:\Documents and Settings\userName\My Documents\myWorkFolder\"
file = Dir(path & "*.doc")
Do While file <> ""
Documents.Open FileName:=path & file
Call secondSubRoutine
ActiveDocument.Save
ActiveDocument.Close
file = Dir()
Loop
End Sub
Sub-DoVBRoutineNow()
暗文件
将路径设置为字符串
path=“C:\Documents and Settings\userName\My Documents\myWorkFolder\”
file=Dir(路径和“*.doc”)
文件“”时执行此操作
文档。打开文件名:=路径和文件
调用第二个子例程
ActiveDocument.Save
ActiveDocument。关闭
file=Dir()
环
端接头
~~~~这是我的解决方案。我认为对于像我这样的新手来说,我将在这里发布我的代码是很容易理解和直截了当的。因为我到处搜索,看到的代码有点复杂。我们走吧
Sub loopDocxs()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim mySource As Object
Set obj = CreateObject("Scripting.FileSystemObject")
Set mySource = obj.GetFolder("D:\docxs\")
For Each file In mySource.Files 'loop through the directory
If Len(file.Name) > 0 And InStr(1, file.Name, "$") = 0 Then '$ is temp file mask
Set wApp = CreateObject("Word.Application")
wApp.Visible = True
'Word.Application doesn't recognize file here event if it's a word file.
'fortunately we have the file name which we can use.
Set wDoc = wApp.Documents.Open(mySource & "\" & file.Name, , ReadOnly)
'Do your things here which will be a lot of code
wApp.Quit
Set wApp = Nothing
End If
Next file
WordtoTxtwLB
不是ActiveDocument的方法,所以只需使用方法名称本身即可。更好的方法是,调整您的方法以获取类型为“Document”的参数,并将打开的文档直接传递给它。如何使其仅适用于.docm文档?将Dir(vDirectory&“*.docm”)
替换为Dir(vDirectory&“*.docm”)