จากที่ผมได้ post ใน Fanpage ไปว่า “มีใครอยากรู้เรื่องเทคนิคการใช้เครื่องมือ Mail Merge เพื่อดึงข้อมูลจาก Excel ไปโปรยลงแบบฟอร์มใน Microsoft Word มั้ยครับ? (แล้วเราก็ Print เอกสารออกมาหลายๆ ชุดได้ เช่น Print ใบแจ้งหนี้/ใบเสร็จให้ลูกค้า)”
ปรากฏว่ามีคนสนใจเป็นจำนวนมาก แสดงว่ามีคนที่ยังไม่ได้ใช้ประโยชน์จากเครื่องมือนี้อยู่พอสมควรเลย ซึ่งน่าเสียดายมากๆ เพราะมันมีประโยชน์สุดๆ
ต้องบอกก่อนว่า เทคนิคนี้เป็นเครื่องมือใน Microsoft Word แต่ผมไม่ใช่ผู้เชี่ยวชาญ Word ดังนั้น หากใครเห็นว่ามีวิธีที่ดีกว่าที่ผมแนะนำ ก็สามารถบอกมาเป็นวิทยาทานให้ผมและคนอื่นๆ ได้รู้ด้วยนะครับ
เอาล่ะ เกริ่นมามากแล้ว เพื่อไม่ให้เสียเวลา เราไปดูกันเลย เอาเป็นว่าวันนี้ inwexcel ขอพูดเรื่อง Word บ้างล่ะ 555
สารบัญ
Mail Merge คืออะไร?
Mail Merge คือความสามารถหนึ่งของ Microsoft Word ที่สามารถดึงข้อมูลจาก Database ต่างๆ (รวมถึงข้อมูลใน Excel) ที่มีข้อมูลหลายๆ Record (บรรทัด) มาโปรยลงแบบฟอร์มที่ได้เตรียมเอาไว้ใน Microsoft Word ได้ ซึ่งเราสามารถเอามาประยุกต์ทำเรื่องต่างๆ ได้มากมาย โดยมี Concept ดังนี้
- ทำใบแจ้งหนี้/ใบเสร็จให้ลูกค้า/สัญญา
ซึ่งกรณีนี้ กระดาษ 1 ชุด ก็จะรองรับข้อมูลลูกค้า 1 Record ถ้ามีลูกค้าหลายคนในฐานข้อมูลก็สามารถ Print ทีเดียวออกมาเป็นสิบเป็นร้อยคนได้สบายๆ - ทำเป็น Label เพื่อติดจดหมายต่างๆ
ซึ่งในกรณีหลัง กระดาษ 1 ใบ ก็จะสามารถมีข้อมูลหลาย record รวมกันได้
Mail Merge ดียังไง?
การใช้ Mail Merge เป็นการเสริมจุดแข็ง และปิดจุดอ่อนของ Word ได้เป็นอย่างดี
เสริมจุดแข็ง : Word สามารถจัดข้อมูลลงหน้ากระดาษเพื่อ Print ได้สวยงามกว่าการใช้ Excel มาก ทำให้เราสามารถ ใส่ความคิดสร้างสรรค์เรื่องความสวยงามได้เต็มที่ (คิดดูว่าการจัดหน้าใน Excel เพื่อ Print มันน่าปวดหัวแค่ไหน)
ปิดจุดอ่อน : โยนเรื่องที่ Word ไม่ถนัดให้ไปอยู่ที่โปรแกรมอื่นให้หมด เช่น ความสามารถในการคำนวณ หรือ เรื่องความเป็นระเบียบของข้อมูล ก็ให้ไปอยู่ในฐานข้อมูลให้หมด (ใน Word แม้จะคำนวณได้ แต่ยาก และจำกัดมากๆ )
วิธีการใช้ Mail Merge
มี 3 ขั้นตอนใหญ่ๆ
- เตรียมแบบฟอร์มใน Word
- เตรียมฐานข้อมูล ให้มีข้อมูลเพียงพอกับฟอร์ม
- ใช้ Mail Merge เพิ่ม Field ลงบนแบบฟอร์มใน Word
- กดดูตัวอย่าง
- ปรับแต่ง ถ้าจำเป็น
เรามาดูขั้นแรกกัน
1. เตรียมแบบฟอร์มใน Word
สมมติว่าผมเป็นบริษัทขายผลไม้ ต้องการทำใบเสร็จ โดยมีหน้าตาและข้อความประมาณนี้
2. เตรียมฐานข้อมูล ให้มีข้อมูลเพียงพอกับฟอร์ม
ต่อมา ผมก็ไปเตรียมฐานข้อมูลใน Excel ให้มีข้อมูลที่น่าจะเพียงพอกับฟอร์มของผม สมมติว่าได้แบบนี้ แล้ว Save เก็บไว้
3. ใช้ Mail Merge เพิ่ม Field ลงบนแบบฟอร์มใน Word
ต่อมา ผมก็ต้องใช้ Mail Merge เพิ่ม Field ที่ต้องการลงในแต่ละส่วนของแบบฟอร์ม โดยไปที่ Word ที่เตรียมไว้แล้วไปที่ Ribbon [Mailings] –> Start Mail Merge
จากนั้นมันจะให้เลือก Document Type ซึ่งแต่ละอันต่างกันดังนี้
- Letters : ลักษณะคล้ายๆจดหมาย ที่แต่ละคนข้อความจะไม่เหมือนกันได้ (เพื่อ Print)
- E-mail Messages : คล้ายข้างบน แต่เป็นเพื่อส่ง E-Mail แทน
- Envelops : ทำซองจดหมาย (Template ที่มีจะเป็น Size จดหมาย)
- Labels : ทำ Label (1 หน้ามีหลายราย เช่น เป็น Sticker เอาไว้แปะ Template ที่มีจะเป็น Size Label)
- Directory : เป็นลักษณะ list คล้ายๆ ตาราง (1 หน้ามีหลายราย)
- Step by Step : เป็น Wizard ช่วยนำทางให้เรา แต่ผมว่ามันไม่ได้เข้าใจง่ายขึ้นเลย
เราต้องการทำพวกใบเสร็จ มันจะคล้ายๆ กับ Letter เพราะต้องเอาไปพิมพ์ออกมาหลายๆ ชุด ในที่นี้จึงให้เลือกเป็น Letter ครับ
จากนั้นให้เลือก Database เพื่อเชื่อมข้อมูล โดยไปที่ Select Recipients แล้ว Use an Existing List
จากนั้น เลือกไฟล์ Excel ที่เตรียมไว้ แล้วเลือก Sheet ให้ถูกต้อง
จากนั้นให้ Highlight ข้อความส่วนที่ต้องการจะ Link กับ Database แล้วเลือก Insert Merge Field แล้วเลือก field ที่ต้องการเชื่อมต่อด้วย
มันจะมีสัญลักษณ์ <<ชื่อ field >> ขึ้นมาแทน นั่นแปลว่า มันกำลัง Link กับ Field นั้นแล้ว
ทำให้ครบทุก Field สุดท้ายจะได้แบบนี้
ถ้าลองกด Highlight Merge Field ดูจะเห็นชัดขึ้น
4. กดดูตัวอย่าง
ทีนี้ลองทดสอบดูว่าข้อมูลมามั้ย? โดยไปที่ Preview Results
และถ้ากดปุ่ม Next มันก็ควรจะดึงข้อมูล record ถัดไปมาให้
ถ้าเป็นแบบนี้ แสดงว่าการเชื่อมต่อข้อมูลน่าจะถูกต้องแล้วล่ะ
5. ปรับแต่งถ้าจำเป็น
จริงๆ ถ้าไม่คิดอะไรมาก ก็น่าจะจบงานได้แล้ว แต่กรณีนี้ ยังมีสิ่งที่ผมต้องการทำแต่ยังไม่ได้ดั่งใจ 3 เรื่อง คือ
- ผมต้องการแสดงวันที่ในรูปแบบ 31 พฤษภาคม พ.ศ. 2559 แทน
- ผมต้องการแสดงราคาตัวเลขมีทศนิยม 2 ตำแหน่ง
- ผมต้องการแสดงราคาบาทเป็นข้อความภาษาไทยด้วย
วิธีแก้ 3 ประเด็นนี้ จริงๆ แล้วบางอันทำใน Word ก็ได้ โดยการกำหนด Format ใน Field Code
แต่ส่วนตัวผมไม่ชอบวิธีนี้ เพราะขี้เกียจมาจำวิธีการกำหนด Format ใน Word อีก (แค่ Excel ก็มึนแล้ว) ดังนั้นผมจะแก้ปัญหาทุกอย่างใน Excel ให้จบเลย แล้วค่อยส่งมาที่ Word เพื่อแสดงผลอย่างเดียว
แต่ถ้าหากผมลองเปลี่ยน Number Format ใน Excel ให้เป็นแบบที่ต้องการ เช่น เป็นวันที่แบบเต็ม และราคามีจุดทศนิยม
เวลาเข้ามาคลิ๊ก Next / Previous ดูใน Word ก็ยังคงแสดงวันที่และเลขตามปกติอยู่ดี เพราะมันเอาค่าแบบ General ไปแสดงเท่านั้น (ถ้าลองเปลี่ยนค่าไปเลยมันจะเปลี่ยนตามแล้ว แต่ Format ไม่เปลี่ยนตาม)
เคล็ดลับระดับเทพ
ดังนั้น วิธีที่ผมแนะนำ เพราะสำหรับผมมันง่ายสุดแล้ว คือ
ผมจะเตรียมให้ข้อมูลทุกอย่างใน Excel ให้อยู่ในรปแบบที่ผมต้องการโดยต้องเป็น Text ทั้งหมด แล้วค่อยส่งไปแสดงผลตรงๆใน Word โดยที่ใน Word ไม่ต้องมีการกำหนด Format อะไรอีกเลย
Key สำคัญคือต้องทำให้เป็น Text ให้หมด อะไรที่เดิมเป็นตัวเลขและวันที่ ผมจะใช้ฟังก์ชั่น TEXT มาช่วย เพื่อแปลงให้มันอยู่ในรูปแบบที่ผมต้องการเลย ซึ่งเราจะต้องรู้ว่าต้องระบุ Custom Format ยังไง
แต่ก็ไม่ใช่เรื่องยากอย่างที่คิด เพราะเราสามารถเลือก Standard Format แบบที่ต้องการก่อน แล้วค่อยไปเลือก Custom Format เพื่อดู Code ที่จะต้องใช้อีกทีก็ได้
เช่น จากวันที่ 31 มีนาคม 2559 พอไปเลือก Custom จะเห็นว่าเป็น Code [$-th-TH,107]d mmmm yyyy;@ ก็เอาไปใช้ในฟังก์ชั่น TEXT ได้เลย เช่น
ผมก็เอาไปใช้กับฟังก์ชั่น Text ดังนี้
=TEXT(B6,”[$-th-TH,107]d mmmm yyyy;@”)
ซึ่งจะทำให้ field วันที่-new เป็นข้อความจริงๆ ไม่ใช่ตัวเลขแล้ว
ทีนี้กลับไปใน Word ผมก็ต้อง link Field ใหม่แทนอันเดิม แต่ผมต้องไป Select Recipient ใหม่ด้วย เพื่อให้มันเห็น Field ใหม่ที่เราเพิ่งเพิ่มเข้าไปก่อน
แล้วก็กด Preview ดู ทุกอย่างก็ออกมาในรูปแบบที่ได้ดั่งใจ โดยที่เราไม่ต้องรู้เรื่อง Field Code ใน Word เลยแม้แต่น้อย!
คราวนี้เวลาจะ Print เพื่อจบงาน ก็ให้ไปที่ Finish & Merge แล้วเลือก Print Documents ได้เลยครับ แล้วมันจะให้เลือกว่าจะ Print Record ไหนบ้าง (ปกติก็ All ได้เลย)
เพียงเท่านี้คุณก็สามารถสร้างใบเสร็จรับเงินให้ลูกค้านับสิบนับร้อยได้อย่างสบายๆ ครับ
แล้วถ้าอยากทำพวก Label ต้องทำไง?
จริงๆ แล้ว Label ก็จะคล้ายกับการทำ Letters ครับ เพีงแต่จะมีการใส่ Field ลงไปหลายชุดซ้ำๆ กันลงในตารางที่เตรียมไว้
แต่ Key หลัก คือ จะมีการระบุ Code <<Next Record>> เพื่อบ่งบอกว่า ส่วนต่อจากคำนั้น จะต้องดึงข้อมูลจาก Record ถัดไปแล้ว (แม้จะยังอยู่หน้าเดิม) โดยสามารถระบุเองได้โดยไปที่ Rules -> Next Record ครับ
และนี่คือตัวอย่างที่ผมใช้ Label มา Print เวลามีคนสั่งซื้อหนังสือจากผมครับ
จะเห็นว่าการใช้ Mail Merge นั้นไม่ได้ยากมากอย่างที่คิด หากคุณจัดการ Format ใน Excel ให้เรียบร้อย การส่งมาพิมพ์ใน Word ก็จะหมูมากๆ ครับ