Exwog는 템플릿별로 Excel에서 Word로 보고서 생성기입니다. 자동 문서 생성 사용자 데이터에서 템플릿 문서 생성

우리는 이전에 시작한 Word에서 양식 작업에 대한 주제를 계속합니다. 이전 기사에서는 "고급 사용자" 관점에서만 양식을 살펴보았습니다. 수동으로 작성하기 쉬운 문서를 만들었습니다. 오늘 저는 이 작업을 확장하고 콘텐츠 제어 메커니즘을 사용하여 문서를 생성할 것을 제안하고 싶습니다.

우리가 당면한 작업을 시작하기 전에 콘텐츠 컨트롤에 대한 데이터가 Word 문서에 저장되는 방식에 대해 몇 마디 말하고 싶습니다. 다음 기사에서 언젠가).

자연스러운 질문 - 무엇인가 itemProps1.xml및 유사한 구성 요소? 이러한 구성 요소는 데이터 소스에 대한 설명을 저장합니다. 아마도 개발자가 계획한 대로 문서에 포함된 xml-ek 외에 다른 것을 사용하기로 되어 있었지만 지금까지는 이 방법만 구현되었습니다.

우리에게 유용한 것 itemPropsX.xml? 그들이 xml-schema를 나열한다는 사실(그들의 타겟 네임스페이스) 부모에서 사용되는 itemX.xml... 이것은 문서에 둘 이상의 사용자 정의 xml을 연결한 경우 필요한 것을 찾으려면 다음을 수행해야 함을 의미합니다. itemPropsX.xml구성 요소 및 찾기 원하는 계획, 따라서 필요한 itemX.xml.

이제 한 가지 더. 컴포넌트 간의 관계를 수동으로 분석하지 않고 기본 Packaging API만 사용하여 필요한 것만 검색합니다! 대신 Open XML SDK(해당 어셈블리는 NuGet을 통해 사용 가능)를 사용합니다. 물론 이전에는 이 API에 대해 한 마디도 말하지 않았지만 우리 작업을 위해서는 최소한의 API가 필요하며 모든 코드는 매우 투명합니다.

자, 기본적인 소개는 끝났고, 예제부터 시작할 수 있습니다.

전통적으로 우리는 기사에서 그린 것과 동일한 "회의 보고서"를 가져갈 것입니다. 문서 템플릿은 다음과 같이 생겼습니다.

그리고 이와 같이 문서 필드가 바인딩된 XML

< meetingNotes xmlns ="urn:MeetingNotes" subject ="" date ="" secretary ="" > < participants > < participant name ="" /> < decisions > < decision problem ="" solution ="" responsible ="" controlDate ="" />

1단계. 데이터 모델 생성

실제로 우리의 임무는 문서를 생성하는 것뿐만 아니라 개발자와 사용자 모두가 사용할 수 있는 편리한 도구(최소한 초안 버전에서는)를 만드는 것입니다.

따라서 모델을 C # 클래스의 구조로 선언합니다.

공개 클래스 MeetingNotes(공개 MeetingNotes()(참가자 = 새 목록) (); 결정 = 새 목록 (); ) 공개 문자열 제목(get; set;) 공개 DateTime 날짜(get; set;) 공개 문자열 비서(get; set;) 공개 목록 참가자(get; set;) 공개 목록 결정(get; set;)) public class Decision(공개 문자열 문제(get; set;) 공개 문자열 Solution(get; set;) 공개 문자열 Responsible(get; set;) public DateTime ControlDate(get; set;)) public 클래스 참가자(공개 문자열 이름(get; set;))

대체로 XML 직렬화를 제어하기 위해 속성을 추가하는 것을 제외하고는 특별한 것은 없습니다(모델의 이름과 필요한 XML이 약간 다르기 때문에).

2단계. 위 모델을 XML로 직렬화

작업은 원칙적으로 사소한 것입니다. "우리가 가장 좋아하는 XmlSerializer를 사용하고 이동"이라고 하는 것이 아니라면 하지만

불행히도 현재 버전의 Office에는 다음과 같은 버그가 있는 것 같습니다. 기본 네임스페이스(Word가 표시할 요소를 가져와야 하는 네임스페이스)를 선언하고 다른 네임스페이스를 선언하면 반복된 콘텐츠 컨트롤이 잘못 표시되기 시작합니다. ).

저것들. 이 XML은 작동합니다.

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

그리고 이것도:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" xmlns:t ="urn:TTT" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

그러나 이것은 더 이상 없습니다.

< test xmlns:t ="urn:TTT" xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

Connect에서 Microsoft 지원에 버그를 제출하려고 했지만 어떤 이유로 Office를 통해 버그를 제출할 수 있는 액세스 권한이 없습니다. 그리고 MSDN 포럼에 대한 토론도 도움이 되지 않았습니다.

일반적으로 필요한 회전교차로 기동. 우리가 손으로 XML을 만들었다면 문제가 없었을 것입니다. 우리는 모든 것을 스스로 했을 것입니다. 그러나 이 경우에는 표준 XmlSerializer를 사용하고 싶습니다. 이 표준 XmlSerializer는 이러한 네임스페이스가 사용되지 않더라도 기본적으로 여러 네임스페이스를 출력 XML에 추가합니다.

XmlSerializer에서 자체 네임스페이스의 출력을 완전히 억제할 것입니다. 사실, 이 접근 방식은 그가 정말로 필요하지 않은 경우에만 작동할 것입니다(그렇지 않으면 여전히 추가될 것이고 우리 앞에 있을 것입니다).

실제로 전체 코드(변수가 회의록이전에 채워진 MeetingNotes 개체 포함):

var serializer = new XmlSerializer(typeof(MeetingNotes));
var serializedDataStream = 새로운 MemoryStream();

var 네임스페이스 = 새로운 XmlSerializerNamespaces();
네임스페이스.추가("", "");

serializer.Serialize(serializedDataStream, MeetingNotes, 네임스페이스);
serializedDataStream.Seek(0, SeekOrigin.Begin);

3단계. 결과 XML을 Word 문서에 입력합니다.

여기에서 다음을 수행합니다.

  • 템플릿을 복사하고 복사본을 엽니다.
  • 필요한 사용자 지정 xml을 찾습니다(네임스페이스로 검색 "Urn: MeetingNotes")
  • 구성 요소의 내용을 XML로 바꿉니다.

파일.복사(템플릿명, 결과문서명, 참); (var 문서 = WordprocessingDocument.Open(resultDocumentName, true)) (var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType) 사용 () .Any (sr => sr.Uri.Value == "(! LANG: urn: MeetingNotes"!}

우리는 모두 어떤 식으로든 텍스트를 다룬다. 예를 들어 서식을 가지고 놀기 위해 작업을 위해 크거나 많지 않은 양의 텍스트를 생성해야 할 필요가 있지만 손에 텍스트가 없어서 직접 작성하기에는 너무 게으릅니다. 무엇을 할까요? 대답은 간단합니다. Word에 내장된 임의 텍스트 생성기를 사용하세요!

편집기에서 마이크로 소프트 워드특수 명령을 사용하여 매우 빠르고 쉽게 텍스트를 생성할 수 있습니다. 저는 Word 2007을 기니피그로 사용할 것입니다. 이 명령은 모든 버전의 Word에서 작동해야 합니다. 텍스트를 생성하는 세 가지 방법에 대해 알려 드리겠습니다.

방법 1. rand() 사용

rand() 함수는 현지화된 텍스트 샘플, 3개 문장의 3개 단락을 삽입합니다. Word를 열고 곧 많은 텍스트가 나타날 위치에 커서를 놓고 다음 명령을 입력합니다.

Enter 키를 누릅니다. rand 함수 자체가 사라지고 대신 3개의 텍스트 단락이 나타납니다.

하지만 그게 다가 아닙니다. 많은 텍스트가 필요한 경우 다음과 같이 추가 인수와 함께 rand 함수를 사용할 수 있습니다.

= 랜드(x, y)

어디 " 엑스"단락의 수를 의미하고," 와이"- 각 단락의 문장 수. 예를 들어, = 랜드(20.5)각각 5개의 문구가 있는 20개의 단락을 삽입합니다. ㅏ = 랜드 (7)각각 3개의 문장으로 구성된 7개의 단락을 삽입합니다.

방법 2. lorem() 사용

좋은 오래된 Lorem Ipsum을 예로 삽입하려면 lorem() 함수를 사용하십시오. 다음 명령을 입력하고 Enter 키를 누릅니다.

그리고 우리는 그러한 all-sevdo-Latin 텍스트를 얻습니다.

lorem() 함수는 또한 rand()와 같은 추가 인수를 단락 및 문장 수의 형태로 수락합니다. 인수가 없으면 함수는 기본적으로 각각 3개의 문장이 있는 3개의 단락을 삽입합니다.

방법 3. rand.old() 함수

사용법은 이전 명령과 유사합니다.

= rand.old ()

Enter 키를 누릅니다.

rand.old() 함수는 2003년까지 레거시 오피스 호환성을 위해 유지됩니다. 적용 방법은 앞의 두 가지와 동일하며 "이 부드러운 프렌치 롤을 더 먹고 차를 마시십시오"라는 동일한 문구로 구성됩니다. 이 문구는 때때로 글꼴 작업을 해야 하는 모든 사람에게 알려져 있습니다.

처음 두 메서드에서와 같이 인수를 전달할 수 있습니다.

그게 다야, 텍스트가 생성되었습니다. 이제이 부드러운 프렌치 롤을 더 많이 먹고 차를 마실 수 있습니다 :)

위의 기능을 사용하여 텍스트를 삽입할 수 있었습니까?

, 열의 성 그리고 칼럼의 직업 .

2. 워드 문서(.doc or.docx) 생성


(ㅏ), (비)그리고 (씨).

(ㅏ), (비)그리고 (씨) (ㅏ)- 이름, (비)- 성, (씨)- 직업.

설정프로그램들.

3. 파일 및 폴더 경로 선택


선택하다

4. 원하는 데이터의 시트와 행 설정


Excel 파일 데이터 시트

Excel 파일 데이터 행 Excel 파일 데이터 시트

1 .

데이터가 포함된 Excel 파일의 모든 시트 및/또는 행이 문서 형성에 참여하려면 글자가 있는 오른쪽 버튼을 클릭하십시오. 번호(이 경우 비문은 다음으로 변경됩니다. 모두).

5. 새 워드 파일 이름에 대한 템플릿 설정


새 단어 파일의 이름에 대한 템플릿을 설정합니다.

새 단어 파일 이름 템플릿프로그램에서 생성된 새 문서(단어 파일)의 이름에 대한 템플릿입니다. 여기서 이름 템플릿은 중괄호로 묶인 Excel 파일의 열 이름을 포함합니다. (ㅏ)그리고 (비)... 새 문서를 생성할 때 프로그램은 모든 (ㅏ)그리고 (비) Excel 파일의 해당 셀 값 - 이것은 새 문서(단어 파일)의 이름이 됩니다.

탭에서 프레임 기호를 설정할 수 있습니다. 설정프로그램들.

6. "생성"을 클릭하십시오


버튼을 클릭 생성하다진행 상황이 화면에 나타납니다. 문서(워드 파일)의 수는 형성에 관련된 엑셀 파일의 행 수만큼 정확하게 생성됩니다.

7. 모든 것


모든 문서(단어 파일)가 생성되고 에 지정된 폴더에 있습니다. 새 워드 파일을 저장할 폴더... 모든 것:)

엑스워그 - 템플릿별로 Excel에서 Word로 보고서 생성기

Excel 파일 데이터를 기반으로 템플릿(Word 파일)에서 무료 Word 파일 생성기

Mac OS, Windows 및 Linux에서 작동

새로 생성된 단어 파일의 이름을 지정할 수 있습니다.

원하는 데이터의 시트와 라인을 정의할 수 있습니다.

Excel 열 이름에 둘러싸는 문자를 설정할 수 있습니다.

사용하기 쉬운

몇 번의 클릭으로 데이터를 Excel 형식(.xls 및 .xlsx)으로 저장하고 Word 파일(.doc 및 .docx)을 생성하세요. :)


어떻게 작동합니까?

엑셀 파일을 살펴보세요


이 예에서 Excel 파일에는 고객 정보가 포함되어 있습니다. 각 줄은 특정 클라이언트에 해당합니다. 이름은 열에 있습니다. , 열의 성 그리고 칼럼의 직업 .

보려면 클릭

워드 문서(.doc 또는 .docx) 만들기


보려면 클릭

새 문서(단어 파일)를 생성하기 위한 "템플릿"(단어 파일)을 만듭니다. 여기에서 "템플릿" 텍스트는 중괄호로 묶인 Excel 파일의 열 이름을 포함합니다. (ㅏ), (비)그리고 (씨).

프로그램은 모든 항목을 대체하는 "템플릿"에 따라 새 문서를 생성합니다. (ㅏ), (비)그리고 (씨) Excel 파일의 해당 셀 값: (ㅏ)- 이름, (비)- 성, (씨)- 직업.

또한 탭에서 자신만의 프레임 기호를 설정할 수 있습니다. 설정프로그램들.

파일 및 폴더 경로 선택


파일 및 폴더의 경로 선택(단추 선택하다). 프로그램에서 다음 경로를 설정합니다.

데이터가 포함된 Excel 파일(* .xls, * .xlsx)- 이것은 귀하의 엑셀 데이터 파일(고객 정보)의 경로입니다.

워드 템플릿 파일(* .doc, * .docx)- 이것은 "템플릿"(이전 단계에서 생성된 워드 파일)의 경로입니다.

새 워드 파일을 저장할 폴더- 이것은 프로그램이 새로 생성된 문서를 저장할 폴더의 경로입니다.

보려면 클릭

원하는 데이터의 시트와 행 설정


보려면 클릭

문서를 생성하려는 데이터(고객 정보)가 있는 Excel 파일의 시트 및 라인 수를 설정합니다.

Excel 파일 데이터 시트- 새 문서 형성에 참여할 Excel 파일의 시트 수

Excel 파일 데이터 행- 시트의 줄 번호(에 지정된 시트 Excel 파일 데이터 시트) 새 문서의 형성에 참여할 엑셀 파일. 지정된 각 라인의 데이터를 기반으로 별도의 문서(워드 파일)가 생성됩니다.

프로그램의 시트와 줄 번호는 다음으로 시작합니다. 1 .

한번은 올림피아드 결과를 종합한 후 참가자들이 통과한(불합격한) 과목의 결과가 담긴 편지를 보내야 했을 때 여학생이 앉아 손으로 시험 결과를 입력하는 것을 발견했습니다. 전체 이름 및 기타 정보를 편지 템플릿에 넣습니다. 그녀의 앞에는 이름과 성적이 적힌 엑셀 시트 몇 장이 놓여 있었다. 복사-붙여넣기, Ctrl + C - Ctrl + V, 이름을 주격에서 속격으로 번역하므로 작업은 이미 세 개의 데이터 시트 중 첫 번째 절반으로 완료되었습니다. 당신의 생각에 그녀는 데이터를 복사하고 결과를 확인하면서 얼마나 오래 앉아있을 수 있습니까? 오랫동안 생각했고, 꽤 많은 실수가 있을 것입니다. 하지만 그녀는 여전히 우표 봉투에 서명해야 했습니다... 나는 그녀의 시간이 미안하다고 느꼈고 몇 분 만에 간단한 수단을 사용하여 이 프로세스를 자동화할 수 있는 방법을 보여주었습니다. 짧은 여행 끝에 그녀의 작업은 20분 만에 완료되었습니다.

이 수업에서는 최소한의 시간을 들여 문서(편지, 초대장)를 빠르게 만드는 방법을 보여 드리겠습니다. V 다른 버전이 설명된 프로세스는 다른 언어에서 다르게 호출됩니다. 따라서 러시아어에서는 "병합"이고 영어는 "병합"입니다.

"행복의 편지"에서 희망 연기금, 세금 신고서도 같은 방식으로 생성됩니다 :)

도구

문서를 작성하려면 OpenOffice Writer가 필요합니다. 그 안에 우리는 편지 템플릿을 만들 것입니다. OpenOffice Calc도 필요합니다. 여기에는 예를 들어 파티에 초대하려는 사람의 이름과 주소가 포함된 데이터베이스가 생성됩니다. OpenOffice 패키지의 프로그램 대신 MS Word와 Excel을 쉽게 사용할 수 있습니다. 데이터베이스는 MS Access에 쉽게 놓일 수 있습니다. 시작하겠습니다.

데이터베이스 생성

데이터베이스는 MS Excel의 테이블 또는 오픈오피스 계산기여기서 데이터는 열에 있고 첫 번째 행은 열의 이름을 지정하는 데 사용됩니다. 예를 들어 "full name", "city", "index", "address" 열을 생성해 보겠습니다. 데이터를 입력하고 파일을 디스크에 저장합시다.



예를 들어 다른 소스를 데이터베이스로 사용할 수 있습니다. 주소록 Outlook 또는 MS Access 데이터베이스.

편지 템플릿 만들기

편지 템플릿을 만들면 상황이 조금 더 복잡해집니다. 테이블(저희 데이터베이스)의 데이터는 그대로 템플릿에 삽입되므로 문자는 그에 따라 작성되어야 합니다. 귀하의 전체 이름이 데이터베이스의 주격 케이스에 있는 경우 "친애하는,<ФИО>! " "받는 사람:<ФИО>". 후자의 경우 전체 이름이 다소 어색해 보입니다.

편지 템플릿을 작성할 때 실제 사람에게 편지를 쓰는 것부터 시작하는 것이 좋습니다. 스스로 할 수 있습니다. 그런 다음 데이터베이스에서 가져올 데이터를 강조 표시하고 해당 필드로 바꿉니다. 선택한 텍스트를 필드로 바꾸기 전에 데이터베이스의 필드가 시작해야 하는 문자(소문자 또는 대문자)에 주의하는 것이 좋습니다. 물론 필드가 있는 템플릿을 바로 작성할 수 있지만 대소문자 불일치와 같은 실수를 눈치채지 못할 수도 있습니다.



위의 템플릿에서 이미 속격의 전체 이름과 이름과 가명만 포함하는 필드가 필요하다는 것이 분명합니다. 첫 번째 필드에서 "To"를 "Recipient"로 바꿀 수 있습니다. 그러면 명목상의 전체 이름이 완벽하게 맞을 것입니다. 두 번째 필드를 사용하면 모든 것이 조금 더 복잡해지며 데이터베이스에 열을 하나 더 만들고 적절한 데이터로 채워야 합니다. 다음 강의 중 하나에서 이 작업을 자동으로 수행하는 방법을 알려 드리겠습니다. 하지만 지금은 이러한 필드가 이미 있다고 가정합니다.

필드를 삽입하고 템플릿을 데이터베이스에 바인딩하려면 다음 단계를 수행해야 합니다. OpenOffice Writer에서 데이터베이스 선택



"정의"를 클릭합니다.



그런 다음 연결된 데이터베이스의 필드를 원하는 위치에 삽입합니다. 이렇게 하려면 Ctrl + F2를 누르거나 삽입 메뉴에서 필드 및 기타를 선택합니다. 열리는 창에서 "데이터베이스" 탭을 선택하고 필드 유형에서 "편지 병합 필드"를 선택하고 데이터베이스에서 해당 필드를 선택하고 "삽입"을 클릭합니다. 실제 데이터베이스도 이 창에서 선택할 수 있습니다.



한 필드가 삽입된 후 현재 창을 닫지 않고 다음 필드로 대체할 텍스트를 선택하고 해당 필드를 선택하고 "삽입"을 다시 누릅니다. 그리고 각 필드에 대해서도 마찬가지입니다.

MS Word의 경우 상황이 다소 유사하고 아마도 더 편리합니다. MS Excel에서 테이블을 생성한 후 MS Word를 실행하고 "메일링" 탭으로 이동합니다. 이 탭에서 "병합 시작", "문서 작성 및 필드 삽입" 및 "마침"의 세 가지 필수 단계를 볼 수 있습니다. 중간 단계인 "결과 보기"도 있지만 선택 사항입니다.

따라서 작업은 문서 선택으로 시작됩니다. 편지, 스티커, 일반 Word 문서가 될 수 있습니다. 이 프로세스의 모든 단계를 안내하는 병합 마법사를 바로 실행할 수도 있습니다. 다음 단계는 받는 사람, 즉 데이터베이스를 선택하는 것입니다. 여기에서 미리 만들어진 데이터베이스(예: 이전 단계에서 만든 MS Excel 테이블)를 선택하거나 새 목록... 목록이 선택되면 "병합 필드 삽입", "수신자 목록 변경" 등의 버튼이 활성화됩니다. 해당 버튼과 함께 열리는 "수신자 목록 변경" 대화 상자를 통해 다음 중에서 선택할 수 있습니다. 전체 목록은 병합에 필요한 레코드만 표시합니다.







필드를 삽입할 때 "병합 필드 선택" 버튼을 클릭하여 모든 필드를 회색으로 강조 표시하는 것이 편리합니다. 그렇지 않고 그러한 필드가 많으면 텍스트에서 손실될 수 있습니다.

그래서 템플릿이 준비되었습니다.

문자 생성

마지막 단계는 문자 생성입니다. OpenOffice의 "도구" 메뉴에서 "편지 병합 마법사..."를 선택하고 제안된 모든 단계를 거쳐 템플릿을 데이터베이스와 병합합니다.





대화 상자에서 제안된 8개 포인트 중 일부 포인트를 수행할 필요가 없음을 알 수 있습니다. 그래서 우리는 이미 문서를 만들었고 편집할 필요가 없습니다. 이미 주소 블록을 삽입했습니다. 그러나 순서대로 시작합시다.

먼저 현재 문서를 기반으로 글자를 생성하도록 선택하고 창 하단의 "다음"을 클릭합니다. 두 번째 요점은 이 편지를 받을지 이메일을 받을지 선택하는 것입니다. 문자를 파일에 저장하려면 첫 번째 문자를 선택하십시오. "다음"을 클릭하십시오. 세 번째 포인트는 주소 블록을 생성하도록 제안되었지만 손으로 ​​생성했기 때문에 모든 상자의 선택을 취소하고 다음 단계로 넘어갑니다. 여기에 항소를 삽입할 것을 제안했지만 이미 항소도 있으므로 "다음"을 누릅니다. 여섯 번째 요점은 문서를 편집하고 데이터베이스에서 필드가 삽입된 문서를 보고 필요한 경우 일부 필드를 제외할 수 있다는 것입니다.



7단계에서는 템플릿을 데이터베이스에 연결하여 생성된 각 파일을 편집하도록 제안합니다. 그리고 마지막 8단계에서는 접수된 문서를 어떻게 처리할지 선택할 수 있습니다. 저장, 인쇄 또는 이메일로 보낼 수 있습니다. 이 경우 모든 문서를 하나의 파일에 저장하거나 각 문서를 개별적으로 저장할 수 있습니다.

MS Word에서 찾기 및 병합 버튼을 클릭하면 병합 프로세스가 종료됩니다.



드롭다운 메뉴에서 모든 문자를 인쇄하여 전자 메일로 보낼 수 있다는 것은 분명하지만 모든 문자를 파일로 저장할 수 있는지는 분명하지 않습니다. 저장하려면 첫 번째 항목인 "개별 문서 변경"을 선택해야 합니다. 이것은 열릴 것입니다 새 문서, 각 새 문자는 다음과 함께 위치합니다. 새 페이지, 그리고 여기에 이미 이 파일을 저장할 수 있습니다.

결론

따라서 이 단원에서는 병합 도구를 사용하여 템플릿을 기반으로 문서를 만드는 방법을 배웠습니다. 일련의 작업을 간단히 적어 보겠습니다.

  1. 필드를 채우기 위해 데이터를 가져오는 스프레드시트 프로세서에서 데이터베이스를 생성해야 합니다.
  2. 편지 템플릿을 만들어야 합니다.
  3. 결과를 병합하고 저장합니다.

"문서 작성 자동화" 시리즈의 이전 기사에서 VBA 코드를 사용하지 않고 응용 프로그램의 사용자 인터페이스를 만들고, 입력 데이터의 유효성 검사를 구성하고, 단어로 숫자를 얻는 방법에 대해 이야기했습니다. 이 마지막 기사에서는 Excel 통합 문서에서 Word 문서로 필요한 모든 값을 전송하는 마법에 대해 설명합니다. 결과가 어떠해야 하는지 보여드리겠습니다.

메커니즘 설명

먼저 데이터가 Word 문서로 전송되는 방법을 일반적인 용어로 설명하겠습니다. 우선 템플릿이 필요합니다. 워드 문서모든 마크업, 테이블 및 텍스트의 모든 부분이 변경되지 않은 상태로 유지됩니다. 이 템플릿에서는 Excel 통합 문서의 값이 대체될 위치를 결정해야 합니다. 가장 편리한 방법은 책갈피를 사용하는 것입니다. 그런 다음 Word 템플릿과 일치하도록 Excel 데이터를 구성하고 마지막으로 전송 절차 자체를 VBA에 작성해야 합니다.

그래서, 먼저 일을 먼저.

Word 문서 템플릿 만들기

여기에서는 모든 것이 매우 간단합니다. 일반 문서를 만들고 텍스트를 입력하고 형식을 지정하며 일반적으로 필요한 양식을 얻으려고 노력합니다. Excel에서 값을 대체해야 하는 곳에서는 책갈피를 만들어야 합니다. 이것은 다음과 같이 수행됩니다.

따라서 모든 책갈피를 만들어야 합니다. 즉, Excel의 데이터가 삽입될 모든 위치를 표시해야 합니다. 결과 파일은 "파일" -> "다른 이름으로 저장..." 메뉴 항목을 사용하여 "MS Word 템플릿"으로 저장해야 합니다.

Excel 데이터 준비

편의를 위해 Word 문서로 전송해야 하는 모든 데이터를 책갈피 - 책갈피라는 별도의 워크시트에 배치하기로 결정했습니다. 이 시트에는 두 개의 열이 있습니다. 첫 번째 열에는 책갈피 이름(Word 문서에서 이름이 정확히 지정됨)이 포함되고 두 번째 열에는 래핑할 해당 값이 포함됩니다.

이러한 값 중 일부는 데이터 입력 시트에서 직접 가져오고 일부는 지원 시트에 있는 보조 테이블에서 가져옵니다. 이 기사에서는 명확하지 않은 경우 필요한 값을 계산하는 공식을 분석하지 않을 것입니다. 의견에 질문하십시오.

이 단계에서 책갈피의 모든 이름을 올바르게 표시하는 것이 중요합니다. 데이터 전송의 정확성은 이것에 달려 있습니다.

이전 절차

그러나 이것이 가장 흥미로운 것입니다. 데이터 전송 코드를 실행하기 위한 두 가지 옵션이 있습니다.

  • 코드는 Excel 통합 문서에서 실행되고 데이터는 한 번에 한 값씩 ​​Word로 전달되고 즉시 문서에 배치됩니다.
  • 코드는 별도의 Word 문서에서 실행되며 모든 데이터는 Excel에서 일괄적으로 전송됩니다.

특히 책갈피 수가 많은 경우 실행 속도의 관점에서 두 번째 옵션이 훨씬 더 매력적으로 보이지만 더 복잡한 작업이 필요합니다. 이것이 내가 사용한 것입니다.

수행해야 할 작업은 다음과 같습니다.

  • 매크로 사용 Word 문서 템플릿을 만듭니다.이 템플릿에는 실행 가능한 VBA 코드가 포함됩니다.
  • 생성된 템플릿에는 VBA로 작성된 프로그램을 배치해야 합니다.이렇게 하려면 템플릿을 편집할 때 Alt + F11 키 조합을 누르고 열리는 편집기 창에 입력하십시오. 비주얼 베이직프로그램 코드.
  • Excel 통합 문서에서 새로 만든 Word 템플릿에서 채우기 절차를 호출하는 코드를 작성합니다..

나는 기사에서 절차의 텍스트를 제공하지 않을 것입니다 - 그것은 예제와 함께 아카이브의 Template 폴더에 있는 FillDocument.dotm 파일에서 쉽게 볼 수 있습니다.

이 모든 것을 어떻게 특정 문제를 해결하는 데 사용할 수 있습니까?

말로는 모든 것이 매우 간단해 보이지만 실제로는 어떻게 됩니까? 기성품 옵션을 사용하는 것이 좋습니다. 예제와 함께 아카이브를 다운로드하고 Excel 통합 문서에서 Alt + F11을 눌러 Visual Basic 편집기를 열고 프로그램에 대한 내 모든 주석을 읽으십시오. 필요에 맞게 프로그램을 변경하려면 몇 가지 상수 값만 변경하면 됩니다. 이 값은 프로그램 맨 처음에 배치됩니다. 전체 프로그램 텍스트를 프로젝트에 자유롭게 복사할 수 있습니다.

아카이브 구조

이 기사에 첨부된 아카이브에는 여러 파일이 포함되어 있습니다.

기본 파일은 "확인 생성"이라는 Excel 통합 문서입니다. 이 통합 문서에는 4개의 워크시트가 있으며 그 중 2개만 표시됩니다. "입력" - 데이터 입력 시트 및 "데이터베이스" - 입력된 모든 문서의 아카이브.

Templates 폴더에는 Word 문서 템플릿이 포함되어 있습니다. 하나는 책갈피 채우기 프로그램이 포함된 템플릿이고, 다른 하나는 작성하는 양식입니다. 변경 없이 프로그램과 함께 템플릿을 사용할 수 있지만 물론 작성 양식은 필요에 따라 다시 작성해야 합니다.

"자신을 위해"예제를 다시 작업하는 방법은 무엇입니까?

  1. 작성해야 하는 Word 문서 템플릿을 준비합니다. 필요한 모든 책갈피를 만들고 "MS Word 템플릿"으로 저장합니다.
  2. 이 문서에 첨부된 아카이브에서 FillDocument.dotm 파일을 준비된 템플릿이 있는 폴더로 복사합니다. 이 파일은 템플릿 책갈피를 채우는 역할을 하며 이 파일에서 아무 것도 변경할 필요가 없습니다.
  3. 데이터 입력을 위한 Excel 통합 문서를 준비합니다. 그녀가 "고급"을 가지고 있는지 결정하는 것은 당신에게 달려 있습니다. 사용자 인터페이스다양한 교활한 계산을 수행하십시오. 가장 중요한 것은 Word 템플릿의 책갈피 이름과 대체해야 할 값 사이의 대응 표가 있는 워크시트가 포함되어 있다는 것입니다.
  4. 샘플 파일의 VBA 프로그램 코드를 준비된 통합 문서에 삽입합니다. 프로젝트에 따라 모든 상수를 바꿉니다.
  5. 작업의 정확성을 테스트합니다.
  6. 적극적으로 활용하세요!
이 공유