2017-12-20 20 views
0

나는 여러개의 단어 파일 (~ 5000)을 다른 헤더와 함께 가지고 있는데, 매크로로 읽은 다음이 여러 단어 문서를 폴더에 하나의 문서로 병합한다. 여기WORD 파일을 다른 헤더로 .txt로 변환하는 방법은 무엇입니까?

관련 코드 : 나는이 .txt로 파일을 저장하려고 할 때 작동되지만,

Sub MergeDocs() 
    Dim rng As Range 
    Dim MainDoc As Document 
    Dim strFile As String, strFolder As String 
    Dim Count As Long 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .Title = "Pick folder" 
     .AllowMultiSelect = False 
     If .Show Then 
      strFolder = .SelectedItems(1) & Application.PathSeparator 
     Else 
      Exit Sub 
     End If 
    End With 
    Set MainDoc = Documents.Add 
    strFile = Dir$(strFolder & "*.doc") ' can change to .docx 
    Count = 0 
    Do Until strFile = "" 
     Count = Count + 1 
     Set rng = MainDoc.Range 
     With rng 
      .Collapse wdCollapseEnd 
      If Count > 1 Then 
       .InsertBreak wdSectionBreakNextPage 
       .End = MainDoc.Range.End 
       .Collapse wdCollapseEnd 
      End If 
      .InsertFile strFolder & strFile 
     End With 
     strFile = Dir$() 
    Loop 
    MsgBox ("Files are merged") 
lbl_Exit: 
    Exit Sub 
End Sub 

, 헤더 + 바닥 글이에게 내가이 헤더를 저장할 수있는 한 어떤 방법을 lose..is .txt 파일에 너무 일부?

EDIT (. 내가 쓴 모든 문서에 다른 헤더를 가지고있다) :

Sub MergeDocs() 
    Dim rng As Range 
    Dim MainDoc As Document 
    Dim strFile As String, strFolder As String 
    Dim Count As Long 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .Title = "Pick folder" 
     .AllowMultiSelect = False 
     If .Show Then 
      strFolder = .SelectedItems(1) & Application.PathSeparator 
     Else 
      Exit Sub 
     End If 
    End With 
    Set MainDoc = Documents.Add 
    strFile = Dir$(strFolder & "*.doc") ' can change to .docx 
    Count = 0 
    Dim doc As Document 
    Dim head As String, foot As String 

    Do Until strFile = "" 
     Set doc = Documents.Open(strFile) 
     head = doc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text 
     foot = doc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Text 
     doc.Close False 

     Count = Count + 1 
     Set rng = MainDoc.Range 
     With rng 
      .Collapse wdCollapseEnd 
      If Count > 1 Then 
       .InsertBreak wdSectionBreakNextPage 
       .End = MainDoc.Range.End 
       .Collapse wdCollapseEnd 
     End If 
     .InsertAfter head 
     .InsertParagraphAfter 
     .InsertFile strFolder & strFile 
     .InsertAfter foot 
    End With 
    strFile = Dir$() 
Loop 
    MsgBox ("Files are merged") 
lbl_Exit: 
    Exit Sub 
End Sub 
+1

지금까지 주 문서에 추가하기 전에 파일을 열지 마십시오. 너는 이것을해야 할 것이다. 그런 다음 머리글/바닥 글이 하나만 있다고 가정하면 머리글과 바닥 글을 다음과 같이 변수로 읽을 수 있습니다. head = doc.Sections (1) .Headers (wdHeaderFooterPrimary) .Range.text' 및'foot = ActiveDocument.Sections (1)) .Footers (wdHeaderFooterPrimary) .Range.text' 그리고'.InsertFile' 다음에이 텍스트를 각각 삽입하십시오. 그게 네가 필요한거야? – LocEngineer

+0

예,이 논리가 필요합니다! 왜냐하면 헤더 부분에서 예를 들어 필요한 부분을 가지고 있기 때문에 모든 단어 문서에서 다른 부분이 있습니다. 코드를 어떻게보고 있습니까? 답변을 쓸 수 있습니까? 그리고 나는 그것을 시도하고 받아 들일 수 있습니다! – Harley

답변

0

이 완전히 테스트되지 않지만, 당신이 가야한다.

Do 루프 만 변경했습니다. 바꾸기, 사용해보기 및 재미 :

Dim doc As Document 
Dim head As String, foot As String 

Do Until strFile = "" 
    Set doc = Documents.Open(strFolder & strFile) 
    head = doc.Sections(1).Headers(wdHeaderFooterPrimary).Range.text 
    foot = doc.Sections(1).Footers(wdHeaderFooterPrimary).Range.text 
    doc.Close False 

    Count = Count + 1 
    Set rng = MainDoc.Range 
    With rng 
     .Collapse wdCollapseEnd 
     If Count > 1 Then 
      .InsertBreak wdSectionBreakNextPage 
      .End = MainDoc.Range.End 
      .Collapse wdCollapseEnd 
     End If 
     .InsertAfter head 
     .InsertParagraphAfter 
     .InsertFile strFolder & strFile 
     .InsertAfter foot 
    End With 
    strFile = Dir$() 
Loop 
+0

이 코드에는 오류가 있으며 실행되지 않습니다. S – Harley

+0

내 코드에서 편집 한 내용은 무엇입니까 ?? – Harley

+0

런타임 오류 5174, 파일을 찾을 수 없습니다. – Harley