워드 문서에서 엑셀 파일로 데이터를 복사해야 할 때가 있습니다. 모든 버전의 사무실에서 매크로를 사용하여이 작업을 매우 쉽게 수행 할 수 있습니다. 매크로는 기존 / 새 Excel 파일을 열고 내용을 복사 한 다음 파일을 저장하고 닫습니다. 이것이 어떻게 이루어지는 지 봅시다.

Option Explicit __ Sub OpenAndReadWordDoc ()

Dim tString As String Dim p As Long, r As Long Dim wrdApp As Object, wrdDoc As Object Dim wb As Workbook Dim trange As Variant _Set wb = Workbooks.Add With wb.Worksheets (1) .Range ( “A1”)

Value = “Word 문서 내용 :”.Font.Bold = True .Font.Size = 14 .Offset (1,0). 다음으로 끝 선택 _ r = 3 _Set wrdApp = CreateObject ( “Word.Application”)

wrdApp.Visible = True Set wrdDoc = wrdApp.Documents.Open (“B : \ Test \ MyNewWordDoc.docx”) _ _With wrdDoc For p = 1 to .Paragraphs.Count Set trange = .Range (Start : =. Paragraphs (p ) .Range.Start, _ End : =. Paragraphs (p) .Range.End)

tString = trange.Text tString = Left (tString, Len (tString) -1) _ If Instr (1, tString,”1”)> 0 Then wb.Worksheets (1) .Range (“A”& r) .Value = tString r = r + 1 End If Next p .Close End With wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True End Sub 위 코드를 파일에 복사하려면 키보드에서 Alt + F11을 누릅니다. 왼쪽에는 Microsoft Excel 개체가 표시됩니다. 마우스 오른쪽 버튼을 클릭하고 삽입을 선택한 다음 모듈을 클릭합니다. * 코드를 오른쪽의 코드 창에 복사합니다. 이제이 코드가 어떻게 작동하는지 살펴 보겠습니다. 먼저 필요한 변수를 –tstring 텍스트를 담을 문자열 (나중에 어떤 텍스트를 볼지) 카운터로서 2 개의 변수 “p”& “r”. 이들은 “긴”유형입니다. 그런 다음 2 개의 개체 변수 wrdApp 및 wrdDoc이 있습니다. wrdApp은 단어 응용 프로그램 개체이고 wrdDoc은 Word 문서 개체입니다. Wb는 코드에서 생성 된 새 통합 문서에 대한 통합 문서 변수입니다. 기존 통합 문서를 여는 경우 대신이 변수를 할당 할 수 있습니다. 마지막 변수는 단어 doc에서 엑셀 파일로 전송해야하는 내용을 갖는 trange 변형 유형의 변수입니다.

Set wb = Workbooks.Add 새 통합 문서를 wb 변수에 할당합니다. 새 통합 문서를 추가하지 않고 기존 통합 문서를 열려면이 줄을 다음과 같이 변경할 수 있습니다. – * Set wb – Workbooks.Open (“B : \ Test \ File1.xlsx”) _With wb.Worksheets ( 1). 범위 ( “A1”)

Value = “Word Document Contents :”.Font.Bold = True .Font.Size = 14 .Offset (1,0) .Select End With_ The With wb.Worksheets (1) .range ( “A1”) is a quick 그것을 참조하는 방법. 따라서 With 문과 End with 문 사이의 각 코드 줄에 대해 반복 할 필요가 없습니다.

이러한 코드 줄은 새 통합 문서에있는 1 ^ st ^ 워크 시트의 A1 셀에 굵은 글꼴과 글꼴 크기 14로 “Word Document Contents :”텍스트에 입력됩니다. 그런 다음 .Offset (1,0) .Select는 다음 행을 선택합니다.

r = 3 변수 “r”에는 워드 문서에서 복사 할 데이터에 대한 Excel 파일의 시작 행인 값 3이 할당됩니다.

Set wrdApp = CreateObject ( “Word.Application”) _ 시스템에서 Word가 이미 실행되고있는 경우 _CreateObject *는 Word의 새 인스턴스를 만듭니다. 따라서이 줄은 나중에 코드에서 사용할 수있는 Word 응용 프로그램에 개체 변수 wrdApp을 할당합니다.

wrdApp.Visible = True 새로 생성 된 Word 인스턴스는 생성시 표시되지 않습니다. 표시하려면 wrdApp.Visible = True를 설정하여 표시되도록해야합니다.

_Set wrdDoc = wrdApp.Documents.Open ( “B : \ Test \ MyNewWordDoc.docx”) _ 워드 애플리케이션의 새 인스턴스를 만들었지 만 아직 소스 워드 문서를 열지 않았습니다. 따라서이 명령은 문서라는 단어를 엽니 다. wrdDoc 개체가이 문서에 할당되어 나중에 코드에서 사용할 수 있습니다.

With wrdDoc… .End With 이것은 wrdDoc 객체와 완전히 작동하는 “With”루프입니다. 이 루프를 열면이 루프에서 “wrdDoc”텍스트를 다시 반복 할 필요가 없습니다. 점 ( “.”)으로 직접 시작할 수 있습니다.

wrdDoc과 관련된 모든 개체 앞에. 이 루프는 End With 문으로 끝납니다. End With 문을 입력 한 후에는 “.”만으로 wrdDoc 이후의 개체를 참조 할 수 없습니다.

For p = 1에서 .Paragraphs.Count 이것은 단어 문서의 1 ^ st ^에서 마지막 단락으로 반복되는 “For”루프입니다. 데이터가 포함 된 단어 파일에는 100 줄의 정보가 있으며 각 줄은 별도의 단락으로 저장됩니다. 루프는 1에서 100까지 증가하고 단락을 복사합니다. 특정 조건이 설정된 경우 복사 붙여 넣기는 해당 조건을 기반으로합니다.

_Set trange = .Range (Start : =. Paragraphs (p) .Range.Start, End : =. Paragraphs (p) .Range.End) _ 루프가 증가함에 따라 각 단락의 시작과 끝을 범위에 할당합니다.

_tString = trange.text tString = Left (tString, len (tString) -1) _ 먼저 trange의 텍스트가 TString으로 전달됩니다. 그런 다음 각 단락에는 문장 끝에 단락 문자가 있습니다. 이것은 Left 기능을 사용하여 제거됩니다. 왼쪽부터 마지막 ​​문자를 제외한 모든 문자가 tString 변수에 저장됩니다.

_If Instr (1, tString,“1”)> 0 Then wb.Worksheets (1) .Range (“A”& r) .Value = tString r = r + 1 End If_이 IF 함수는 tString의 텍스트에 다음이 포함되어 있는지 확인합니다. 숫자 1이 참이면 tString의 내용을 통합 문서의 다음 사용 가능한 행에 복사합니다. “r”은 먼저 3의 값을 가졌습니다. r = r + 1을 사용하여 1 씩 증가시켜 다음 항목이 이전 항목 아래에 배치 될 수 있도록합니다.

Next p .Close Next p 코드 라인은 다음 단락으로 증가합니다.

_.Close_는 모든 단락에 대한 작업이 끝나면 문서를 닫습니다. 이것은 엑셀 파일에서 얻는 출력입니다 –

img1

숫자에 숫자 1이 포함 된 단락 만 출력에 포함됩니다.

wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True wrdApp.Quit는 응용 프로그램이라는 단어를 닫습니다. Set wrdDoc = Nothing 및 Set wrdApp = Nothing은이 두 개체 변수가 사용하는 메모리를 해제하고 Nothing으로 설정합니다. wb.Saved = True는 통합 문서를 저장합니다.

위의 코드를 사용하여 워드 파일에서 엑셀 파일로 복사 할 데이터를 제어 할 수 있습니다.

image 48