2017-12-08 9 views
0

통합 문서 (모든 시트)를 하나의 Word 문서로 저장하고 싶습니다. 한 장은 문서에서 한 페이지입니다.Excel VBA : 통합 문서를 Word 문서로 저장

save activeSheet 코드 만 있습니다.

Sub ExcelToWord() 
Dim ws As Worksheet 
Set ws = ActiveSheet 
Dim objWd As Object 
Set objWd = CreateObject("word.application") 
objWd.Visible = True 
Dim objDoc As Object 
Set objDoc = objWd.Documents.Add 
objDoc.PageSetup.Orientation = 1 ' portrait = 0 
Application.ScreenUpdating = False 
ws.UsedRange.Copy 
objDoc.Content.Paste 
Application.CutCopyMode = False 
Application.DisplayAlerts = False 
objDoc.SaveAs (Application.ThisWorkbook.Path & "\dokument.docx") 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

답장을 보내 주셔서 감사합니다.

+2

코드는 각 워크 시트를 통해, 그래서 그냥 루프는 저장하기 전에 복사/붙여 넣기를하고, 그냥 복사/붙여 넣기를하고있는 것으로 보인다. – YowE3K

+0

네, 생각은 같지만 제 스크립트는 마지막 페이지 (시트) 만 저장합니다. n = Sheets.Count i = 1 To n Sheets (i) .UsedRange.Copy objDoc.Content.Paste 다음 i –

답변

1

몇 가지 간단한 사항을 통해 해결책을 얻을 수 있습니다.

첫 번째는이 같은 통합 문서의 워크 시트를 통해 루프입니다 :

Dim ws As Worksheet 
For Each ws in ThisWorkbook.Sheets 
    Debug.Print "The used range is " & ws.UsedRange.Address 
Next ws 

다음 부분은 Word 문서에 콘텐츠를 추가하는 것은 수행하는 방법을 이해하는 것입니다. 주요 개념은 문서의 삽입 지점이있는 위치를 포함합니다. 일반적으로 현재는 Selection입니다.

Word 문서를 잘라내어 붙여 넣으면 붙여 넣기 한 내용이 여전히 "선택됨"입니다. 즉, 이후 붙여 넣기하면 방금 삽입 한 내용을 효과적으로 대체 할 수 있습니다. 따라서 선택 점을 문서 끝으로 이동해야합니다. 예를 들어 프로그램에서 모두 함께 퍼팅

:

Option Explicit 

Public Sub ExcelToWord() 
    Dim wb As Workbook 
    Set wb = ThisWorkbook 

    '--- create the Word document 
    Dim objWd As Word.Application 
    Set objWd = CreateObject("word.application") 
    objWd.Visible = True 

    Dim objDoc As Word.Document 
    Set objDoc = objWd.Documents.Add 
    objDoc.PageSetup.Orientation = 1    ' portrait = 0 

    Const wdPageBreak As Long = 7 

    Dim ws As Worksheet 
    For Each ws In wb.Sheets 
     ws.UsedRange.Copy 
     objWd.Selection.Paste 
     '--- advance the selection point to the end of 
     ' the document and insert a page break, then 
     ' advance the insertion point past the break 
     objDoc.Characters.Last.Select 
     objWd.Selection.InsertBreak wdPageBreak 
     objDoc.Characters.Last.Select 
    Next ws 
    'objDoc.SaveAs Application.ThisWorkbook.Path & ".\dokument.docx" 
End Sub