첫 번째 단계는 추출하려는 소스 폴더의 모든 파일 목록을 가져 오는 것입니다.
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
이
, 당신은 파일 이름과 데이터가 어떤 수의 열쇠가 될 주위 변경할 수 .DOC 또는 키와 같은 사전에 .DOCX 확장과 0의 값으로 모든 파일을 추가하지만, 그것은 당신의 선택입니다.
여기에서 사전을 열고 각 항목에 대해 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
대략적인 내용입니다. 매개 변수를 취하거나 전역 변수를 설정하는 등 대상 폴더를 선택하는 방법을 변경해야 할 것입니다. 나는 당신이 일하고있는 프로젝트의 조직을 알지 못한다. 그래서 당신은이 부분에 대해 가야만 할 것이고, 한 부분은 천천히 일하게 될 것이다. 또한, 여기 거의 모든 것을 편집기로 작성 했으므로 어딘가에서 구문이 틀릴 수도 있습니다. 신의 말로 받아들이지 마라. 그러나 목표로가는 길에 너를 잘 잡아야한다.