最初のステップは、抽出元のソースフォルダ内のすべてのファイルのリストを取得することです。
Sub GetAllFiles(Folder As String, StrArray() As String)
'Stores all file names from a folder into a string array.
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Folder)
i = 1
'loops through each file in the directory and prints their names and path
For Each objFile In objFolder.Files
ReDim Preserve StrArray(i)
StrArray(i) = objFile.Name
i = i + 1
Next objFile
If i = 1 Then
ReDim Preserve StrArray(1)
End If
End Sub
次の手順は、Word文書ファイル以外のすべてを除外することです。
Dim FileSpec(1) As String
FileSpec(0) = Source & "\*.doc"
FileSpec(1) = Source & "\*.docx"
Sub GetFileList(ByRef FileSpec() As String, objDict As Object)
Dim FileName As String
objDict.RemoveAll
On Error GoTo NoFilesFound
For i = LBound(FileSpec) + 1 To UBound(FileSpec)
FileName = Dir(FileSpec(i))
' Loop until no more matching files are found
Do While FileName <> ""
If Not objDict.Exists(FileName) Then objDict.Add FileName, 0
FileName = Dir()
Loop
Next i
If objDict.count = 0 Then GoTo NoFilesFound
Exit Sub
'Error Handler
NoFilesFound:
'ERROR HANDLING
End Sub
これはキーとファイル名などのデータとどんな数のキーになるこの周りを変更することができ、0の値として辞書に.DOCまたは.docxの拡張子を持つすべてのファイルを追加しますが、それはあなたの選択です。
ここから、辞書内の各項目のSubを開いて呼び出す必要があります。
Sub OpenAndExtract()
Dim AD As Document
Documents(ActiveDocument.FullName).Close SaveChanges:=wdDoNotSaveChanges
For each Key in objDict
Set Ad = Documents.Open(Source & "\" & Key).Activate
Call Extract
Next
End Sub
それはおおよそです。おそらく、目的のフォルダを選択する方法を変更する必要があることに注意してください(パラメータを取ったり、グローバル変数を設定するなど)。私はあなたが作業しているプロジェクトの組織を知らないので、この部分について少しずつ作業を進める必要があります。また、私はこれをエディタで手作業で書いているので、どこかで構文が間違っている可能性があります。神の言葉としてそれを取ってはいけませんが、それはあなたの目標へのあなたの道にうまくいくはずです。