เมื่อทำงานกับข้อความขนาดใหญ่ การค้นหาและแทนที่ใน Word มีบทบาทอย่างมาก ตัวอย่างเช่น เมื่อคุณต้องการตรวจสอบเนื้อหาเพื่อหาคำบางคำหรือแก้ไขคำที่ปรากฏหลายครั้งในข้อความ ฟังก์ชันการค้นหาและแทนที่จะช่วยคุณได้เกือบทั้งหมด มาดูกันว่ามันทำงานอย่างไร
ฉันให้ตัวอย่างทั้งหมดโดยใช้ MS Word 2013 หากคุณมีโปรแกรมเวอร์ชันอื่นฟังก์ชันที่อธิบายไว้อาจแตกต่างกันเล็กน้อย
ค้นหาใน MS Word
หากต้องการเริ่มค้นหา ให้ทำบน Ribbon หน้าแรก – การแก้ไข – ค้นหา(หรือกด Ctrl+F)
บนหน้าจอคือบานหน้าต่างงานการนำทาง ซึ่งจัดระเบียบอินเทอร์เฟซผู้ใช้เมื่อทำการค้นหา ค้นหาช่อง "ค้นหาในเอกสาร" จดคำหรือวลีที่คุณต้องการค้นหา จากนั้นกด Enter รายการรายการที่ตรงกันที่พบจะปรากฏในพื้นที่งาน และจะถูกเน้นด้วยสีบนแผ่นงาน
หากคุณวางเมาส์เหนือรายการผลลัพธ์ใด ๆ โปรแกรมจะแสดงคำที่พบที่หน้าใดและในส่วนใด
หากคุณคลิกที่ผลลัพธ์ใดๆ เคอร์เซอร์จะย้ายไปยังคำนั้นบนแผ่นงานและจะถูกไฮไลต์ ในกรณีนี้จะง่ายต่อการแทนที่ด้วยข้อความอื่นทันที
การค้นหาขั้นสูงใน Word
หากคุณต้องการตั้งค่าพารามิเตอร์การค้นหาที่เข้มงวดมากขึ้น ให้ทำดังต่อไปนี้บน Ribbon: หน้าแรก – การแก้ไข – ค้นหา – การค้นหาขั้นสูง- ในหน้าต่างค้นหาและแทนที่ที่เปิดขึ้น ให้คลิกเพิ่มเติม
ตัวเลือกเพิ่มเติมจะปรากฏในหน้าต่างซึ่งจะทำให้คุณสามารถตั้งค่าการค้นหาได้อย่างยืดหยุ่น คุณสามารถตั้งค่าพารามิเตอร์ต่อไปนี้:
- ทิศทาง– เลือกทิศทางการค้นหาจากตำแหน่งเคอร์เซอร์ปัจจุบัน ทุกที่ – ทั่วทั้งเอกสาร ย้อนกลับ – ย้ายไปที่จุดเริ่มต้นของเอกสาร ไปข้างหน้า – ย้ายไปที่จุดสิ้นสุด
- กรณีการแข่งขัน– คำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์ใหญ่ โดยค่าเริ่มต้น จะไม่คำนึงถึงขนาดตัวพิมพ์
- ทั้งคำเท่านั้น– ไม่รวมผลลัพธ์ที่คำค้นหาเป็นส่วนหนึ่งของคำอื่น หากคุณไม่ทำเครื่องหมายที่ช่องนี้ ตัวอย่างเช่น เมื่อค้นหาคำว่า "cat" ก็จะเลือกคำว่า " แมวฤดูร้อน" เพราะรวมข้อความที่ค้นหาด้วย
- สัญลักษณ์แทน– ช่วยให้คุณค้นหาโดยคำนึงถึงอักขระที่ไม่สามารถพิมพ์ได้หรือเมื่อไม่ทราบวลีค้นหาทั้งหมด ตัวอย่างเช่น คุณสามารถเขียนว่า "maple" หรืออาจเขียนว่า "maple" หากต้องการค้นหาคำนี้ไม่ว่าในกรณีใด ให้ใช้ไวด์การ์ด "^?" ซึ่งตรงกับอักขระใดๆ เหล่านั้น. ในแถบค้นหาให้เขียนว่า “kl^?n” ไม่จำเป็นต้องจำอักขระไวด์การ์ด รายการจะเปิดขึ้นโดยคลิกปุ่ม "พิเศษ" ในหน้าต่าง "ค้นหาและแทนที่"
- ออกเสียงเหมือน.– ใช้สำหรับคำภาษาอังกฤษเท่านั้น ให้คุณค้นหาคำที่ออกเสียงเหมือนกันแต่สะกดต่างกัน
- ทุกรูปแบบคำ– เพื่อค้นหาคำในรูปแบบคำใด ๆ
- พิจารณาคำนำหน้า พิจารณาคำต่อท้าย– เรามองหาคำที่ขึ้นต้นหรือลงท้ายด้วยข้อความใดข้อความหนึ่ง
- ละเว้นเครื่องหมายวรรคตอน– ละเว้นเครื่องหมายจุลภาค จุด และเครื่องหมายวรรคตอนอื่นๆ
- ละเว้นช่องว่าง– ละเว้นช่องว่าง;
- รูปแบบ– ตั้งค่าการค้นหาตามรูปแบบข้อความ
เขียนข้อความค้นหาในช่อง "ค้นหา" ตั้งค่าพารามิเตอร์การค้นหาที่ต้องการแล้วคลิก "ค้นหาถัดไป" หากพบผลลัพธ์ก็จะแสดงบนหน้าจอทันที มิฉะนั้นโปรแกรมจะแจ้งให้คุณทราบว่าไม่มีผลลัพธ์สำหรับคำขอของคุณ
การแทนที่ข้อความใน Microsoft Word
บ่อยครั้งที่คุณต้องแทนที่ข้อความบางส่วนด้วยอย่างอื่น เช่น ชื่อองค์กรมีการเปลี่ยนแปลงและจำเป็นต้องแก้ไขตลอดทั้งเอกสาร แน่นอนว่าคุณไม่จำเป็นต้องเปลี่ยนแปลงทุกอย่างด้วยตนเอง เราจะใช้เครื่องมือ Word ในตัว
ขั้นแรก เปิดหน้าต่าง "ค้นหาและแทนที่" บน Ribbon หรือเพียงกด Ctrl+H (อักษรละติน) ไปที่แท็บ "แทนที่" และในช่อง "ค้นหา" ให้เขียนวลีที่ต้องเปลี่ยน เช่นเดียวกับในการค้นหาคุณสามารถใช้พารามิเตอร์ขั้นสูงเดียวกันได้
ในช่อง "แทนที่ด้วย" เราจะระบุข้อความที่จะแทนที่วลีที่พบ หากคุณต้องการแทนที่เฉพาะผลการค้นหาที่ใกล้เคียงที่สุด ให้คลิก "แทนที่" หากเราจะแทนที่เอกสารทั้งหมด ให้เลือก "แทนที่ทั้งหมด"
ด้วยเหตุนี้โปรแกรมจะระบุจำนวนการแทนที่หรือเตือนว่าไม่พบข้อความที่ค้นหา
ฉันแนะนำให้คุณฝึกฝนด้วยการค้นหาและแทนที่โดยใช้เครื่องมือที่อธิบายไว้ หากคุณแก้ปัญหาที่ซับซ้อนใน Word ทำงานกับข้อความขนาดใหญ่เป็นเวลาหลายวัน ทักษะเหล่านี้จะมีประโยชน์ตั้งแต่วันแรกที่สมัคร พวกเขาเป็นส่วนหนึ่งของ "ชุดสุภาพบุรุษ" ของผู้ใช้ ซึ่งประหยัดเวลาได้มากและลดโอกาสที่จะเกิดข้อผิดพลาดระหว่างการแก้ไขด้วยตนเอง
นั่นคือทั้งหมดที่เกี่ยวกับการค้นหา และข้างหน้ากำลังรอคุณอยู่ อ่านแล้วจะไม่มีข้อผิดพลาดที่น่ารำคาญแอบเข้าไปในข้อความของคุณ พบกันในบทความหน้า!
หากคุณต้องการค้นหารายการใดรายการหนึ่งแต่จำการสะกดไม่ตรงกัน ให้ใช้ไวด์การ์ดในสตริงการสืบค้น
สัญลักษณ์แทนเป็นอักขระพิเศษที่สามารถแทนที่อักขระที่ไม่รู้จักในค่าข้อความ และมีประโยชน์สำหรับการค้นหาหลายรายการที่มีข้อมูลคล้ายกันแต่ไม่เหมือนกัน นอกจากนี้ยังมีประโยชน์ในการดึงข้อมูลที่ตรงกับรูปแบบที่ระบุอีกด้วย เช่น ค้นหาทุกคนที่มีชื่อ Andrey อาศัยอยู่บนถนน Tyulpanova
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบสอบถาม ดูบทความบทนำสู่แบบสอบถาม
ต่อไปนี้คือตัวอย่างบางส่วนของสัญลักษณ์แทนสำหรับการสร้างแบบสอบถามใน Access
เครื่องหมาย | คำอธิบาย | |
---|---|---|
จับคู่อักขระจำนวนเท่าใดก็ได้ คุณสามารถใช้เครื่องหมายดอกจัน ( * ) ที่ใดก็ได้ในสตริงอักขระ |
ตามคำขอร้อง ไทย*คำว่า "อะไร" "อ่าน" และ "อ่าน" จะพบ แต่ไม่ใช่ "ความเคารพ" หรือ "จดหมาย" |
|
จับคู่ตัวอักษรตัวเดียวในตำแหน่งเฉพาะ |
ตามคำขอร้อง st.lจะพบคำว่า "โต๊ะ" "เหล็ก" และ "เก้าอี้" |
|
จับคู่อักขระในวงเล็บ |
ตามคำขอร้อง st[ou]lคำว่า "โต๊ะ" "เก้าอี้" จะเจอ แต่จะไม่พบคำว่า "กลายเป็น" |
|
ไม่รวมอักขระในวงเล็บ |
ตามคำขอร้อง เซนต์[!ou]lจะเจอคำว่าเหล็กและเย็นแต่จะไม่พบคำว่าโต๊ะหรือเก้าอี้ ตามคำขอร้อง ชอบ]*"จะพบองค์ประกอบทั้งหมดที่ไม่ได้ขึ้นต้นด้วยตัวอักษร "a" |
|
ตรงกับช่วงของอักขระ โปรดจำไว้ว่าอักขระควรเรียงตามลำดับตัวอักษร (A ถึง Z ไม่ใช่ Z ถึง A) |
ตามคำขอร้อง s[a-y]nจะพบคำว่า "ซาน" "ลูกชาย" และ "ลูกชาย" |
|
จับคู่อักขระตัวเลขใดๆ |
ตามคำขอร้อง 1#3 จะพบตัวเลข 103, 113 และ 123 |
ตัวอย่างการใช้ไวด์การ์ดเพื่อให้ตรงกับรูปแบบ
สัญลักษณ์แทนจะใช้ในรูปแบบดังต่อไปนี้
เปิดคำขอในตัวออกแบบ
ในบรรทัด เงื่อนไขการคัดเลือกฟิลด์ที่คุณต้องการ ป้อนตัวดำเนินการก่อนเงื่อนไขการเลือก ชอบ.
แทนที่อักขระอย่างน้อยหนึ่งตัวในเงื่อนไขด้วยอักขระตัวแทน เช่น ขอ ชอบ R?308021ส่งคืนผลลัพธ์ของ RA308021, RB308021 ฯลฯ
บนแท็บ ตัวสร้างคลิกปุ่ม ดำเนินการ.
ลองดูตัวอย่างบางส่วนของรูปแบบสัญลักษณ์แทนที่คุณสามารถใช้ในนิพจน์ได้
หากต้องการจับคู่อักขระพิเศษ เช่น เครื่องหมายคำถาม (?) เครื่องหมายปอนด์ (#) และเครื่องหมายดอกจัน (*) ให้ใส่ไว้ในวงเล็บ
ฟังก์ชัน CHARLIST ส่งคืนรายการที่ตรงกันสำหรับอักขระตั้งแต่หนึ่งตัวขึ้นไป และอนุญาตให้คุณใช้อักขระเกือบทุกตัวในชุดอักขระ ANSI รวมถึงตัวเลขด้วย ฟังก์ชัน CHARLIST อยู่ในวงเล็บเหลี่ยม () และสามารถใช้ร่วมกับไวด์การ์ดเพื่อให้การจับคู่ที่แม่นยำยิ่งขึ้น
เมื่อต้องการระบุช่วงของอักขระ ให้ใช้ยัติภังค์ (-) ในฟังก์ชัน CHARLIST เพื่อแยกขอบเขตบนและล่างของช่วง
หากต้องการจับคู่อักขระยัติภังค์ (-) ให้วางไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของฟังก์ชัน CHARLIST (หลังเครื่องหมายอัศเจรีย์ หากใช้) เครื่องหมายยัติภังค์จะระบุถึงช่วงอักขระ ANSI
Word มีเครื่องมือค้นหาที่ทรงพลังมากซึ่งสามารถช่วยคุณค้นหาข้อมูลสำหรับคำได้เกือบทุกประเภท มีไวด์การ์ดพิเศษที่ช่วยให้คุณสามารถค้นหาข้อมูลโดยใช้รูปแบบเฉพาะหรือลำดับอักขระที่กำหนดได้
การค้นหาสัญลักษณ์แทนจะดำเนินการในกล่องโต้ตอบ ค้นหาและแทนที่(ค้นหาและแทนที่). เราจะแนะนำคุณเกี่ยวกับกฎพื้นฐานของการใช้เครื่องมือนี้ เพื่อให้คุณสามารถค้นหาได้เกือบทุกอย่างในเอกสาร Microsoft Word
เปิดไฟล์ Word แล้วกดแป้นพิมพ์ลัด Ctrl+Hเพื่อเปิดกล่องโต้ตอบ ค้นหาและแทนที่(ค้นหาและแทนที่). คลิกที่ มากกว่า(เพิ่มเติม) เพื่อขยายกล่องโต้ตอบและเข้าถึงตัวเลือกเพิ่มเติม
บันทึก:หากแทนที่จะเป็นปุ่ม มากกว่า(เพิ่มเติม) คุณเห็นปุ่ม น้อย(น้อยกว่า) ไม่ต้องกดอะไรเลย กล่องโต้ตอบถูกขยายแล้ว
ทำเครื่องหมายที่ช่องถัดจากตัวเลือก ใช้ไวด์การ์ด(ไวด์การ์ด) โปรดทราบว่าด้านล่างสนาม หาอะไร(ค้นหา) คำจารึกที่เกี่ยวข้องปรากฏขึ้น
บันทึก:เมื่อพารามิเตอร์ ใช้ไวด์การ์ด(Wildcards) ถูกเปิดใช้งาน Word จะค้นหาเฉพาะข้อความที่ตรงกันทุกประการเท่านั้น ตัวเลือก กรณีการแข่งขัน(กรณีตรงกัน) และ ค้นหาทั้งคำเท่านั้น(เฉพาะคำเต็มเท่านั้น) ไม่พร้อมใช้งานและเป็นสีเทาเพื่อแสดงว่าเปิดใช้งานโดยอัตโนมัติและไม่สามารถปิดใช้งานได้ในขณะที่เลือกตัวเลือก ใช้ไวด์การ์ด(ไวด์การ์ด)
ตัวอย่างเช่น ลองค้นหาข้อความที่ซ้ำกันทั้งหมดที่ขึ้นต้นด้วย "t" และลงท้ายด้วย "e" โดยมีอักขระกี่ตัวก็ได้ระหว่างตัวอักษรเหล่านี้ หากต้องการทำสิ่งนี้ ให้ป้อน "t" ในช่อง หาอะไร(ค้นหา) แล้วคลิกปุ่ม พิเศษ(พิเศษ) ที่ด้านล่างของกล่องโต้ตอบ จากเมนูที่ปรากฏ ให้เลือก 0 หรือมากกว่าอักขระ(จำนวนอักขระเท่าใดก็ได้) หรือเครื่องหมายดอกจัน (*)
บันทึก:หากคุณรู้ว่าต้องใช้อักขระพิเศษตัวใด คุณสามารถป้อนลงในช่องได้โดยตรง หาอะไร(หา). ปุ่ม พิเศษ(พิเศษ) ให้คำแนะนำในกรณีที่จำไม่ได้ว่ามีอักขระพิเศษตัวใดบ้างและมีวัตถุประสงค์อะไร
คำขอค้นหาจะได้รับการประมวลผล เมื่อพบคู่แรกให้กดปุ่ม ค้นหาถัดไป(ค้นหาถัดไป) เพื่อค้นหาข้อความส่วนถัดไปที่ตรงกับข้อความค้นหาของคุณ
หากต้องการค้นหาข้อความที่มีอักขระตัวใดตัวหนึ่ง ให้ใช้เครื่องหมายคำถาม (?) ตัวอย่างเช่น หากคุณป้อนคำค้นหา "d?g" ลงในช่อง หาอะไร(ค้นหา) จะพบคำทั้งสามตัวอักษรที่ขึ้นต้นด้วย "d" และลงท้ายด้วย "g" เช่น "ขุด" "ขุด" "สุนัข"
คุณยังสามารถระบุตัวอักษรเฉพาะเพื่อค้นหาโดยระบุในวงเล็บเหลี่ยม “” ตัวอย่างเช่น หากคุณป้อนคำค้นหา "bt" ลงในช่อง หาอะไร(ค้นหา) จะพบคำว่า "ค้างคาว", "เดิมพัน", "บิต", "บอท" และ "แต่"
ถ้าเป็นพารามิเตอร์ ใช้ไวด์การ์ด(Wildcards) ถูกเปิดใช้งาน และคุณจำเป็นต้องค้นหาอักขระตัวใดตัวหนึ่งที่ใช้เป็นอักขระตัวแทน ใส่เครื่องหมายทับ (/) ไว้หน้าอักขระนี้แล้วดำเนินการค้นหา ตัวอย่างเช่น เมื่อต้องการค้นหาเครื่องหมายคำถามเมื่อเปิดใช้งานตัวเลือก ใช้ไวด์การ์ด(สัญลักษณ์แทน) คุณต้องป้อนคำค้นหา “/?” ในสนาม หาอะไร(หา).
นอกจากนี้ สามารถใช้อักขระตัวแทนเพื่อแทนที่ข้อความได้ ตัวอย่างเช่น คุณสามารถใช้อักขระตัวแทน “/n” (ในที่นี้ n คือหมายเลขของคำที่ถูกแทนที่) สามารถใช้เพื่อค้นหานิพจน์แล้วแทนที่ด้วยนิพจน์อื่น ตัวอย่างเช่น เราป้อน “(Kaufman) (Lori)” ในช่อง หาอะไร(ค้นหา)และในสนาม แทนที่ด้วย(แทนที่ด้วย) – “/2 /1” (อย่าลืมเว้นวรรคระหว่างตัวเลข 2 และอักขระตัวที่สอง “/”) ด้วยเหตุนี้ Word จึงค้นหา “Kaufman Lori” และแทนที่ด้วย “Lori Kaufman”
การเพิ่มประสิทธิภาพโค้ด
- ในการกำหนดจำนวนอักขระในส่วนของเอกสาร ให้ใช้คุณสมบัติ StoryLength หรือฟังก์ชัน Len() แต่ไม่ใช่คำสั่ง Character.Count ซึ่งใช้เวลานานในการดำเนินการหากมีอักขระจำนวนมาก
- ในการตรวจสอบ (หาก เลือก ฯลฯ) ให้เปรียบเทียบกับค่าที่กำลังตรวจสอบ - กับค่าที่ควรเป็น
- ตัวอย่าง. เมื่อตรวจสอบ True ให้เขียนถูกต้อง:
ถ้า N<>จริงแล้ว
มักเขียนผิดว่า
ถ้า N = เท็จ แล้ว
ถ้า N เป็นประเภทอื่นที่ไม่ใช่บูลีน โค้ดอาจไม่ทำงาน
- ตัวอย่าง. เมื่อตรวจสอบ True ให้เขียนถูกต้อง:
- การเพิ่มประสิทธิภาพของการวนซ้ำบนอาร์เรย์ (Array):
- เร็ว:
สำหรับ i = LBound (อาร์เรย์) ถึง UBound (อาร์เรย์)
ถัดไป - ช้า:
สำหรับ V แต่ละตัวใน Array
ต่อไป วี
- เร็ว:
- การเพิ่มประสิทธิภาพของการวนซ้ำในคอลเลกชัน (คอลเลกชัน):
- เร็ว:
สำหรับ V แต่ละตัวใน Col
ต่อไป วี - ช้า:
สำหรับ i = 1 ถึง Col.Count
วี = คอล(i)
ถัดไป
- เร็ว:
- เมื่อตรวจสอบสตริงจำนวนมาก Len(S) = 0 จะช้ากว่า S = ""
- ประสิทธิภาพการเปลี่ยนแปลงแบบมีเงื่อนไข:
- ตัวดำเนินการ On ... GoSub ... มีลำดับความสำคัญเร็วกว่า Select Case
- โดยทั่วไปแล้ว Select Case จะเป็นการตรวจสอบที่ช้า หากเร็วกว่า
- การเพิ่มประสิทธิภาพของการแจงนับอักขระ (Character) ฯลฯ :
- วิธีช้า:
Dim R เป็นช่วง
สำหรับแต่ละ R ใน ActiveDocument.Characters
ถัดไปร - ทางสายกลาง:
ตั้ง R = ActiveDocument.Characters.First
ทำ
ตั้ง R = R.ถัดไป
วนซ้ำในขณะที่ไม่ใช่ (R คือไม่มีอะไร) - วิธีที่รวดเร็ว:
ตั้งค่า R = ActiveDocument.Range (0, 0)
ทำ
วนซ้ำในขณะที่ R.Move = 1
- วิธีช้า:
- การเพิ่มประสิทธิภาพการค้นหาผ่านย่อหน้า (ย่อหน้า) ฯลฯ :
- วิธีช้า:
Dim P เป็นย่อหน้า
สำหรับแต่ละ P ใน ActiveDocument.Paragraphs
ต่อไป ป - ทางสายกลาง:
ตั้งค่า P = ActiveDocument.Paragraphs.First
ทำ
เซต P = P.ถัดไป
วนซ้ำในขณะที่ไม่ใช่ (P คือไม่มีอะไร) - วิธีที่รวดเร็ว:
Dim R เป็นช่วง
ตั้งค่า R = ActiveDocument.Range (0, 0)
ทำในขณะที่ R.Move(Unit:=wdParagraph) = 1
ชุด P = R.Paragraphs.First
วนซ้ำ
- วิธีช้า:
- การใช้สำหรับแต่ละวงอย่างปลอดภัย
- ในระหว่างการประมวลผลกลุ่มองค์ประกอบเอกสาร หากคอลเลกชันนั้นเปลี่ยนแปลงไป (องค์ประกอบจะถูกลบหรือเพิ่ม) ดังนั้น For Each loop อาจข้ามองค์ประกอบบางส่วน (จากองค์ประกอบที่มีอยู่เมื่อเริ่มวนซ้ำ)
- ตัวอย่างที่อาจเกิดช่องว่างและรูปภาพบางส่วนจะไม่ถูกลบ:
Dim SH เป็นรูปร่าง
SH.ลบ
ต่อไป - เพื่อให้ตัวอย่างทำงานได้โดยไม่มีความล้มเหลว คุณต้องสร้างคอลเลกชันชั่วคราวและจดจำองค์ประกอบทั้งหมดในนั้น:
Dim COL เป็นคอลเลกชั่นใหม่ SH เป็นรูปทรง
สำหรับแต่ละ SH ใน Selection.Range.ShapeRange
COL.เพิ่มรายการ:=SH
ต่อไป
สำหรับแต่ละ SH ใน COL
SH.ลบ
ต่อไป
- เมื่อเข้าถึงอ็อบเจ็กต์ การระบุพาเรนต์ไว้หน้าชื่อถือเป็นที่พึงปรารถนาและมีประโยชน์ อันเดียวก็เพียงพอแล้ว - Parent.Object แต่คุณสามารถทำทั้งเชนได้ - Parent1.Parent2.Parent3.Object.
- ตัวอย่าง. ในเอกสารในตัวแก้ไข VBA เราสร้างแบบฟอร์ม (UserForm) ด้วยชื่อ "MyForm" จากนั้นเพื่อเปิดใช้งานเราได้แทรกปุ่ม (ตัวควบคุม CommandButton) ลงในข้อความของเอกสารซึ่งเรียกว่า "MyForm" ” ซึ่งเป็นธรรมชาติและสะดวกสบาย ตอนนี้ หากคุณใส่โค้ด MyForma.Show ลงในปุ่มมาโครการคลิกปุ่ม จะไม่มีข้อผิดพลาดระหว่างการคอมไพล์ แต่เมื่อรัน เราจะได้รับข้อผิดพลาด การเขียน Project.MyForm.Show คงจะถูกต้องแล้ว แต่ดังนั้นเราจึงไม่ได้หันไปที่แบบฟอร์ม แต่หันไปที่ปุ่ม หากเราต้องการจะเข้าถึงปุ่ม เราต้องเขียน ThisDocument.MyForm
- ในการกำหนดประเภท จะสะดวกในการใช้อักขระพิเศษ: String - $, Integer - %, Long - &, Single - !
- ตัวอย่าง: Dim String$, จำนวนเต็ม%, ยาว&, จริง!
- เพื่อปรับปรุงความเข้ากันได้ ควรแทนที่ชื่อคงที่ของ Word ด้วยค่าของมันจะดีกว่า สิ่งนี้ใช้ได้กับภาษา รายการ ฟิลด์ ฯลฯ นั่นคือในโค้ดที่เราเขียน 1,049 ไม่ใช่ wdRussian
- ในสูตรทางคณิตศาสตร์ที่เราเขียนด้วยโค้ด เราต้องใช้วงเล็บเพื่อให้การดำเนินการที่ลดผลกลางได้ดำเนินการก่อน นั่นคือแรก - การหารและการลบจากนั้น - การคูณและการบวก มิฉะนั้นหากในบางขั้นตอนของการคำนวณตัวเลขมีขนาดใหญ่เกินไปเราจะได้รับข้อผิดพลาดหมายเลข 6 "ล้น" - ล้น นอกจากนี้ คุณสามารถเปลี่ยนประเภทของตัวเลขเป็นแบบยาวได้โดยตรงในสูตร เนื่องจากตามค่าเริ่มต้นแล้ว เรามีจำนวนเต็ม
- ตัวอย่าง. นี่จะเป็นข้อผิดพลาด:
Dim V เป็นตัวแปร
วี = 999 * 999/999
วี = (999 * 999) / 999 - แต่ไม่ แม้ว่าในทางคณิตศาสตร์ผลลัพธ์จะเหมือนกัน:
วี = 999 * (999/999)
วี = 999& * 999/999
วี = CLng(999) * 999/999
- ตัวอย่าง. นี่จะเป็นข้อผิดพลาด:
- หลีกเลี่ยงการเปลี่ยนแปลงเอกสารมากเกินไป ไม่จำเป็นต้องกำหนดแบบอักษรตัวหนาให้กับคำหากคำนั้นเป็นตัวหนาอยู่แล้ว ตรวจสอบว่าจำเป็นต้องเปลี่ยนแปลงหรือไม่ Word จะตอบสนองต่อการดำเนินการใดๆ กับเอกสาร ซึ่งส่งผลต่อประสิทธิภาพการทำงาน ด้วยการแก้ไขซ้ำซ้อนจำนวนมาก ความแตกต่างของเวลาจึงยิ่งใหญ่มากหากคุณเพิ่มการตรวจสอบแบบง่ายๆ
- ลองพิจารณาตัวเลือกการแก้ไขอัตโนมัติของ Word ซึ่งมีจำนวนเพิ่มมากขึ้นจากรุ่นสู่รุ่น
- ประการแรก ทุกครั้งที่มีการเปลี่ยนแปลงเอกสาร รวมถึงแมโคร Word จะดำเนินการโดยอัตโนมัติ ยิ่งมีการเปลี่ยนแปลงและแก้ไขอัตโนมัติมากเท่าใด มาโครก็จะทำงานช้าลงเท่านั้น
- ประการที่สอง อาจเกิดขึ้นที่แมโครแก้ไขข้อความบางส่วน และ Word จะแก้ไขข้อความด้วยวิธีของตัวเองทันที ตามการตั้งค่าการแก้ไขอัตโนมัติ สิ่งนี้อาจมีประโยชน์เมื่อแทนที่เครื่องหมายคำพูด แต่ไม่เสมอไป
- เมื่อประมวลผลเอกสารด้วยมาโครเป็นเวลานาน ให้ปิดใช้งานฟังก์ชันอัตโนมัติของ Word มิฉะนั้นการประมวลผลจะช้าลงและ Word อาจหยุดทำงาน
- ตัวอย่าง. คุณนำเอกสารขนาดใหญ่ เรียกใช้แมโครกับเอกสารนั้น แต่ Word หยุดทำงาน แม้จะไม่เข้าใจมาโคร คุณก็สามารถลองทำสิ่งต่อไปนี้ได้:
- เปิดเอกสารที่คุณกำลังประมวลผล
- ไปที่ตัวเลือก Word และปิดการใช้งาน:
- บันทึก > บันทึกเอกสารอัตโนมัติ (จำเป็น)
- การสะกด > ตรวจสอบการสะกดและไวยากรณ์โดยอัตโนมัติ (แนะนำ)
- แก้ไข > พิจารณาช่องว่าง (ไม่บังคับ)
- ตัวเลือกการแก้ไขอัตโนมัติ (ไม่บังคับ มีมากเกินไป)
- เรียกใช้แมโคร รอให้มันเสร็จสมบูรณ์
- รีเซ็ตการตั้งค่า Word ให้เป็นสถานะดั้งเดิม
- ตัวอย่าง. คุณนำเอกสารขนาดใหญ่ เรียกใช้แมโครกับเอกสารนั้น แต่ Word หยุดทำงาน แม้จะไม่เข้าใจมาโคร คุณก็สามารถลองทำสิ่งต่อไปนี้ได้:
- การเข้าถึงองค์ประกอบเอกสารด้วยดัชนีนั้นช้ามาก เรากำลังพูดถึงสัญลักษณ์ คำ ประโยค ย่อหน้า ฯลฯ ยิ่งมีองค์ประกอบในเอกสารมากเท่าไร “เบรก” ก็จะยิ่งสังเกตเห็นได้ชัดเจนมากขึ้นเท่านั้น
- ตัวอย่าง. แทนที่จะอ้างอิงถึงป้ายโดยตรง:
เอกสาร.อักขระ(N)
ควรใช้การค้นหาอักขระที่ต้องการ:
เอกสาร.ช่วง.ค้นหา
เป็นวิธีสุดท้าย ให้ระบุอักขระในลูป:
สำหรับแต่ละ C ใน Document.Characters
- ตัวอย่าง. แทนที่จะอ้างอิงถึงป้ายโดยตรง:
การควบคุมข้อผิดพลาด (เมื่อเกิดข้อผิดพลาด)
- ป้องกันโค้ดที่ทำการเปลี่ยนแปลงเอกสารด้วย On Error
- แทนที่จะใช้คำสั่ง Err.Clear คุณสามารถใช้ On Error Resume Next ซึ่งจะล้างข้อผิดพลาดล่าสุดด้วย ในแง่ของความน่าเชื่อถือ สิ่งนี้ยังมีประโยชน์อีกด้วย
- ในโครงสร้างด้านล่าง ส่วนที่ปฏิบัติการได้จะถูกวางไว้หลัง Else เนื่องจากหากมีข้อผิดพลาดในการตรวจสอบ บล็อก That จะถูกดำเนินการ:
- เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ถ้า... แล้ว... อย่างอื่น...
- เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
- หากปิดใช้งานการตรวจสอบข้อผิดพลาดและกำหนดตัวแปร ตัวแปรจะคงค่าเก่าไว้ในกรณีที่เกิดข้อผิดพลาด ดังนั้นก่อนอื่นคุณต้องรีเซ็ตค่าของตัวแปรก่อน
- ตัวอย่างที่มีข้อผิดพลาด:
ยังไม่มีข้อความ=1
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
N = CLng("") " ข้อผิดพลาดรันไทม์ 13
ถ้า N = 0 ให้ออกจาก Sub - ตัวอย่างการทำงาน:
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ยังไม่มีข้อความ = 0: ยังไม่มีข้อความ = CLng("")
ถ้า N = 0 ให้ออกจาก Sub - ขวา:
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
N = CLng("")
ถ้าErr.Number<>0 จากนั้นออกจากย่อย
- ตัวอย่างที่มีข้อผิดพลาด:
โหมดการดูเอกสาร (View.Type)
- ในกรณีที่ในอินเทอร์เฟซ Word มีการเลือกองค์ประกอบนอกหน้าต่างเอกสารที่ใช้งานอยู่ คุณสมบัติและวิธีการบางอย่างของเอกสารที่ใช้งานอยู่อาจไม่พร้อมใช้งาน
- ตัวอย่าง. หากใน Word 2003 คุณคลิกขวาที่รายการในแผงโครงร่างเอกสาร เอกสารจะยังคงใช้งานได้ แต่เมื่อเข้าถึงรูปแบบย่อหน้า ข้อผิดพลาดจะเกิดขึ้น:
- MsgBox ActiveDocument.Paragraphs.First.Style.NameLocal " ข้อผิดพลาดรันไทม์ 4605
- หนึ่งในตัวเลือกการรักษาอาจเป็นรหัส:
- ActiveDocument.Windows(1).บานหน้าต่าง(1).เปิดใช้งาน
- ตัวอย่าง. หากใน Word 2003 คุณคลิกขวาที่รายการในแผงโครงร่างเอกสาร เอกสารจะยังคงใช้งานได้ แต่เมื่อเข้าถึงรูปแบบย่อหน้า ข้อผิดพลาดจะเกิดขึ้น:
- การเลือกทำงานแตกต่างกันในโหมดการดูเอกสารที่แตกต่างกัน
- เมื่อประมวลผลด้วยมาโคร ให้ลองใช้โหมดมุมมอง "ปกติ" (wdNormalView) สิ่งนี้ช่วยปรับปรุงประสิทธิภาพ โดยเฉพาะเมื่อทำงานกับโต๊ะ
- เมื่อเปลี่ยนโหมดมุมมอง Selection.Range อาจเปลี่ยนแปลงได้เนื่องจาก มีโหมดบางโหมดที่ไม่ได้แสดงองค์ประกอบของเอกสารทั้งหมด
- ตัวอย่าง. วัตถุไม่สามารถมองเห็นได้ในโหมดมุมมองปกติ/แบบร่าง (wdNormalView) และหากในโหมด "เค้าโครงหน้า" (wdPrintView) คุณเลือกข้อความภายในป้ายกำกับ จากนั้นเมื่อคุณเปลี่ยนโหมดเป็น "ปกติ" Selection.Range จะยุบลง
ค้นหา (ค้นหาช่วง)
สัญลักษณ์แทน
- สำหรับรูปแบบเดียวกัน การใช้ไวด์การ์ด การค้นหาไปข้างหน้าและข้างหลังอาจให้ผลลัพธ์ที่แตกต่างกัน ทดสอบรูปแบบการค้นหาเพื่อดูว่ารูปแบบใดเหมาะสำหรับการค้นหาไปข้างหน้า และรูปแบบใดเหมาะสำหรับการค้นหาย้อนหลัง
- ค้นหาด้วยไวด์การ์ด "@" และ "(1;)"
- มันไม่ได้ให้สิ่งเดียวกัน
- ตัวอย่าง. เมื่อค้นหาไปข้างหน้าในข้อความ "111+222+333":
- โดยใช้รูปแบบ "1@" จะพบอักขระหนึ่งตัว "1" และใช้ "1(1;)" - ชุดอักขระ "111"
- โดยใช้รูปแบบ "[!2]@+" จะพบข้อความ "111+" และใช้รูปแบบ "[!2](1;)+" จะไม่พบสิ่งใดเลย
- ตัวอย่าง. เมื่อค้นหาไปข้างหน้าในข้อความ "111+222+333":
- สำหรับการค้นหาที่ซับซ้อน โดยเฉพาะในทิศทางตรงกันข้าม "@" จะเหมาะสมกว่า
- ตัวอย่าง. ค้นหาย้อนหลังในข้อความ "หนึ่ง สอง สาม" โดยใช้รูปแบบ "<[А-Я]{1;}[А-Яа-я]{1;}>“จะให้ผลไม่เหมือน”<[А-Я]@[А-Яа-я]@>".
- จากประสบการณ์พบว่า "(1;)" มีความเสถียรมากกว่า
- ตัวอย่าง. ใช้ดีกว่า"<[А-Я]{1;}>", แต่ไม่ "<[А-Я]@>" ผลลัพธ์ก็เหมือนเดิมแต่ตัวเลือกแรกน่าเชื่อถือมากกว่า
- มันไม่ได้ให้สิ่งเดียวกัน
- สัญลักษณ์แทน \n โดยที่ n=1,2,3...:
- สามารถใช้ได้ไม่เพียงแต่ในช่อง "แทนที่" เท่านั้น แต่ยังใช้ในช่อง "ค้นหา" ได้ด้วย
- ตัวอย่าง. หากเราค้นหาโดยใช้รูปแบบ “(ma)\1” เราจะพบข้อความ “แม่”
- ตัวอย่าง. คุณสามารถค้นหาคำที่ซ้ำกัน ค้นหาคำที่ปรากฏห้าครั้งในข้อความ: "(<*>)*\1*\1*\1*\1".
- ข้อความที่ถูกแทนที่ ในบางกรณี จะสืบทอดรูปแบบของข้อความก่อนหน้า
- ตัวอย่าง. หากคุณค้นหา "(?)X" และแทนที่ด้วย "\1Y" จากนั้นเมื่ออักขระตัวแรกของข้อความที่พบเป็นตัวห้อย และตัวที่สองไม่ใช่ตัวห้อย หลังจากแทนที่ ตัวที่สองจะกลายเป็นตัวห้อย การค้นหา "X(?)" และการแทนที่ด้วย "Y\1" จะไม่ส่งผลให้เกิดการสืบทอด
- สามารถใช้ได้ไม่เพียงแต่ในช่อง "แทนที่" เท่านั้น แต่ยังใช้ในช่อง "ค้นหา" ได้ด้วย
- ตัวละครพิเศษ "!" เมื่อค้นหาด้วยไวด์การ์ด:
- ใช้ด้วยความระมัดระวัง มันเป็นเรื่องสากลเกินไปและมีข้อยกเว้นมากมายซึ่งยากต่อการคาดเดา
- จะพบเฉพาะตัวอักษรธรรมดาเท่านั้น
- ตัวอย่าง. การค้นหารูปแบบ "[!A]" จะไม่พบวัตถุกราฟิก ไฮเปอร์ลิงก์ ฯลฯ
- ตัวอย่าง. การค้นหาตารางที่มีข้อความธรรมดาโดยใช้รูปแบบ "House[!^12](1;)" จะค้นหาข้อความจากคำว่า "Home" ไปท้ายเซลล์ (การค้นหาย้อนหลังโดยใช้รูปแบบ "House*" ให้ผลลัพธ์เดียวกัน ).
- เมื่อค้นหาด้วยไวด์การ์ด พยายามอย่าใช้อักขระท้ายย่อหน้า "^13" ร่วมกับวงเล็บ สังเกตพฤติกรรมที่ผิดปกติ
- ตัวอย่าง. หากเราพยายามแทนที่สองจุดที่ท้ายย่อหน้าด้วยหนึ่งจุด นั่นคือ เรามองหา “([!.].).(^13)” และแทนที่ด้วย “\1\2” จากนั้นในย่อหน้าที่มีรายการเราพบข้อผิดพลาดที่น่าสนใจ
- เมื่อค้นหาและแทนที่โดยใช้วงเล็บ (ไวด์การ์ด) จะต้องค้นหาซ้ำสองครั้งเมื่อชิ้นส่วนที่ถูกแทนที่ไม่ได้อยู่ท้ายข้อความค้นหา
- ตัวอย่าง. เมื่อค้นหา "(X)+(X)" และแทนที่ด้วย "\1=\2" ในข้อความ "X+X+X+X+X" เราจะได้ "X=X+X=X+X" เหล่านั้น. ต้องค้นหาซ้ำสองครั้งหรือทำการค้นหาทีละขั้นตอนปรับพื้นที่ค้นหาที่เหลือ
- การค้นหาสัญลักษณ์แทนใช้ไม่ได้กับฟิลด์ นั่นคือด้วยความช่วยเหลือจึงไม่สามารถค้นหาข้อความภายในฟิลด์ได้
- ใช้รูปแบบการค้นหาไวด์การ์ดที่ยาวและซับซ้อนอย่างระมัดระวัง มีการผสมผสานระหว่าง “รูปแบบการค้นหา + เอกสารที่ประมวลผลโดยมัน” ที่ทำให้ Word แน่นหนา นั่นคือทุกอย่างทำงานได้ในเอกสารฉบับหนึ่ง แต่ในอีกฉบับหนึ่งจะหยุดทำงาน ยิ่งง่ายยิ่งดี
การเพิ่มประสิทธิภาพการทดแทนมวล
- วิธีที่ช้า แปลกพอสมควร:
Range.Find.Execute แทนที่:=wdReplaceAll - วิธีที่รวดเร็ว โดยเฉพาะสำหรับปริมาณมาก:
Range.Find.Execute แทนที่:=wdReplaceNone
ถ้า Range.Find.Found แล้ว
ช่วงยุบ wdCollapseStart
Range.Find.Execute แทนที่:=wdReplaceAll
สิ้นสุดถ้า - รีเซ็ตตัวเอง Word เปลี่ยนพารามิเตอร์การค้นหาบางอย่างด้วยตัวเอง มีพารามิเตอร์ที่ต้องพึ่งพา โดยที่พารามิเตอร์หนึ่งจะถูกรีเซ็ตเมื่อคุณเปลี่ยนพารามิเตอร์อื่น มีพารามิเตอร์ที่ Word รีเซ็ตเมื่อคุณทำการค้นหา ดังนั้นในระหว่างการเปลี่ยนจำนวนมาก ฉันขอแนะนำให้คุณบันทึกพารามิเตอร์ทั้งหมดสำหรับการเปลี่ยนแต่ละครั้ง
- วิธีที่ช้า แปลกพอสมควร:
ค้นหาเบ็ดเตล็ด
- เมื่อค้นหาสไตล์ เราเห็นข้อผิดพลาดที่น่าสนใจในย่อหน้าก่อนตาราง ย่อหน้ามีสไตล์ในรูปแบบเดียว เมื่อค้นหากลับไปทุกอย่างก็เรียบร้อยดี แต่เมื่อค้นหาไปข้างหน้า อันดับแรกการค้นหาจะพบย่อหน้าที่ไม่มีเครื่องหมายย่อหน้า และเมื่อค้นหาต่อก็จะพบเครื่องหมายย่อหน้า ไม่ว่าจะผ่านบทสนทนาหรือมาโคร
- เมื่อเปลี่ยนข้อความ บุ๊กมาร์กจะถูกลบหรือเสียหาย:
- บุ๊กมาร์กที่อยู่ในข้อความที่ถูกแทนที่จะถูกลบออก
- บุ๊กมาร์กที่มีพื้นที่ตรงกับข้อความที่ถูกแทนที่จะถูกลบออก
- บุ๊กมาร์กที่ครอบคลุมส่วนหนึ่งของข้อความจะถูกตัดและผลักออกจากข้อความ
- บุ๊กมาร์กจุดซึ่งอยู่ที่ขอบของข้อความจะถูกบันทึก
- ค้นหาต่อจากจุดสิ้นสุดของบล็อกที่พบเสมอ เช่น จากท้ายย่อหน้า ไม่ใช่จากต้นย่อหน้าถัดไป มิฉะนั้น มีความเป็นไปได้สูงที่จะวนซ้ำ โดยเฉพาะในตาราง
- ค้นหาโดยไม่มีข้อความ - เฉพาะรูปแบบ (ตัวหนา ตัวเอียง ฯลฯ) เริ่มต้นจากขอบของพื้นที่ที่เลือกในทิศทางการค้นหา ดูเหมือนว่าพื้นที่จะยุบก่อนในทิศทางการค้นหา
- การค้นหาจะไม่ทำงานหากข้อความค้นหาครอบคลุมพื้นที่การค้นหาทั้งหมด
- ตัวอย่าง. ในภูมิภาค R ที่มีข้อความ R.Text="Ivan" การค้นหา R.Find.Text="Ivan" จะไม่ทำงาน
- ในตาราง หากต้องการค้นหาย่อหน้าสุดท้ายของเซลล์ตารางโดยใช้ Selection คุณจะต้องเลือกพื้นที่ของย่อหน้าโดยไม่มีอักขระตัวสุดท้าย เหตุผลจะมองเห็นได้ชัดเจนหากคุณเรียกใช้โค้ด: Cell.Range.Characters.Last.Select
- เมื่อค้นหา ให้คำนึงถึงอักขระ (Character) ที่มีอักขระมากกว่าหนึ่งตัว เช่น จุดสิ้นสุดของสัญลักษณ์เซลล์ตาราง (13 + 7) ไฮเปอร์ลิงก์ เป็นต้น
- ตัวอย่าง. การค้นหารูปแบบ "Vasya[!.]" จะไม่พบคำว่า "Vasya" ที่ปรากฏสุดท้ายในเซลล์ตารางหรือก่อนไฮเปอร์ลิงก์
- หากขอบเขตการค้นหาครอบคลุมส่วนหนึ่งของไฮเปอร์ลิงก์ ไฮเปอร์ลิงก์ทั้งหมดจะถูกค้นหา ขอแนะนำให้จัดตำแหน่งพื้นที่ค้นหาให้ตรงกับจุดเริ่มต้น/จุดสิ้นสุดของอักขระ (อักขระ) ตัวอย่างเช่นเช่นนี้:
Range.SetRange เริ่มต้น:=Range.Characters.First.Start, End:=Range.Characters.Last.End - เมื่อค้นหาในพื้นที่ที่เลือก (การเลือก) โปรดทราบว่าในตารางไม่สามารถเลือกได้: แถว + เซลล์
- ตัวอย่าง. รหัสด้านล่างจะเลือกทุกอย่างตั้งแต่จุดเริ่มต้นของบรรทัดเซลล์ตารางจนถึงจุดสิ้นสุดของเอกสาร:
ช่วง (ตำแหน่งในเซลล์ตาราง จุดสิ้นสุดของตำแหน่งเอกสาร) เลือก
- ตัวอย่าง. รหัสด้านล่างจะเลือกทุกอย่างตั้งแต่จุดเริ่มต้นของบรรทัดเซลล์ตารางจนถึงจุดสิ้นสุดของเอกสาร:
- คำสั่ง Find.Execute บางครั้งส่งคืน False ในขณะที่การค้นหาสำเร็จและ Find.Found=True เหล่านั้น. ปลอดภัยกว่าที่จะเขียนแบบนี้:
ช่วง ค้นหา ดำเนินการ
ถ้า Range.Find.Found = True แล้ว ... - ในฐานะแมโคร คุณสามารถใช้ตัวเลือกการค้นหา "เลือกทั้งหมด..." สำหรับสไตล์ แบบอักษร หรือการจัดรูปแบบอื่นๆ ได้โดยใช้คำสั่ง SelectSimilarFormatting
- ตัวอย่าง. เลือกลักษณะ "หัวเรื่อง 1" ที่เกิดขึ้นทั้งหมด:
Selection.Find.Style = "หัวเรื่อง 1"
การเลือก ค้นหา ดำเนินการ
แอปพลิเคชันเรียกใช้ "SelectSimilarFormatting"
- ตัวอย่าง. เลือกลักษณะ "หัวเรื่อง 1" ที่เกิดขึ้นทั้งหมด:
- อักขระพิเศษ ^d (หรือเรียกอีกอย่างว่า ^19 - จุดเริ่มต้นของฟิลด์และยังมี ^21 - จุดสิ้นสุดของฟิลด์) ช่วยให้คุณสามารถค้นหาฟิลด์ใด ๆ รวมถึงฟิลด์ประเภทเฉพาะได้ นอกจากนี้ คุณยังสามารถค้นหา เลือก และประมวลผลฟิลด์บังคับที่มีการกรองอย่างเข้มงวดได้
- ตัวอย่างฟิลด์การประมวลผลประเภท AUTOTEXT:
- เปิดใช้งานโหมดการแสดงโค้ดฟิลด์ (Alt+F9)
- เปิดหน้าต่างการค้นหาขั้นสูง (Ctrl+F, Ctrl+H)
- ในช่อง "ค้นหา" ให้ป้อนข้อความ: ^d^wAUTOTEXT^w
- เปิดใช้งานแฟล็ก "เลือกองค์ประกอบทั้งหมด..."
- มาทำการค้นหากันดีกว่า ด้วยเหตุนี้ ฟิลด์ทั้งหมดของประเภท AUTOTEXT จะถูกเลือก ยิ่งไปกว่านั้น ไม่ใช่ส่วนโค้ดฟิลด์ที่จำเป็นที่ถูกเน้น แต่เป็นฟิลด์ทั้งหมด!
- กลุ่มฟิลด์ที่เลือกสามารถตัด คัดลอก ลบ จัดรูปแบบ ฯลฯ
- คุณสามารถสลับกลับไปยังโหมดสำหรับการแสดงค่าฟิลด์ (Alt+F9) ในกรณีนี้ ช่องต่างๆ จะยังคงเน้นอยู่
- ตัวอย่างฟิลด์การประมวลผลประเภท AUTOTEXT:
- หากคุณตั้ง Selection.Find.Wrap = wdFindContinueจากนั้นเมื่อการค้นหาผ่านขอบ (จุดเริ่มต้น/จุดสิ้นสุดของเอกสาร) พารามิเตอร์นี้จะรีเซ็ตตัวเองและกลายเป็น wdFindStop
แบบอักษร (แบบอักษร)
- คุณสมบัติ Range.Font จะไม่รวมข้อมูลเกี่ยวกับช่องว่างและอักขระว่างอื่นๆ ในพื้นที่ Range หากพื้นที่นั้นมีอักขระที่มองเห็นได้
- หากคุณเปลี่ยนการตั้งค่าแบบอักษรใน Range.Font การเว้นวรรคและอักขระว่างอื่นๆ ที่ปรากฏสุดท้ายในพื้นที่ช่วงหลังจากอักขระที่มองเห็นจะไม่มีการเปลี่ยนแปลงการตั้งค่าแบบอักษร
ข้อความที่ซ่อน (Font.Hidden)
- เมื่อมองเห็นข้อความที่ซ่อนไว้ (ShowHiddenText=True ) ข้อความจะทำงานเหมือนกับข้อความปกติ
- เมื่อมองไม่เห็นข้อความที่ซ่อน (ShowHiddenText=False ) ดังนั้น:
- ข้อความที่ซ่อนไม่รวมอยู่ในคุณสมบัติ:
ย่อหน้า
ช่วง.ตัวละคร
ช่วง.ข้อความ - ข้อความที่ซ่อนอยู่ยังคงอยู่ในคุณสมบัติ:
ช่วงเริ่มต้น
ช่วงสิ้นสุด
ช่วง.แบบอักษร
การเลือกประเภท
- ข้อความที่ซ่อนไม่รวมอยู่ในคุณสมบัติ:
- เมื่อสลับการมองเห็นข้อความที่ซ่อนอยู่ (ShowHiddenText) ให้ตรวจสอบและปรับพื้นที่ช่วง ขอแนะนำให้หลีกเลี่ยงสถานการณ์ที่ข้อความถูกซ่อนและขอบของพื้นที่อยู่ภายในข้อความที่ซ่อน
ตาราง
- คำสั่ง Select สำหรับการเลือกคอลัมน์ตาราง จะทำงานแตกต่างกันเมื่อตารางอยู่บนหน้าเดียวและเมื่ออยู่บนหลายหน้า
- ถ้าพื้นที่ถูกยุบและอยู่ที่จุดเริ่มต้นของย่อหน้าถัดจากตาราง พื้นที่นี้จะมี Range.Tables.Count = 1 ดังนั้นจึงเป็นการดีกว่าที่จะตรวจสอบว่าอยู่ในตารางโดยใช้ฟังก์ชันหรือไม่ ช่วงข้อมูล (wdWithInTable).
- ถ้า Selection อยู่ต่อจากเซลล์สุดท้ายของแถวตารางทันที ให้ทำดังนี้:
Selection.Cells.Count = 1
Selection.Range.Cells.Count = 0 - ใช้คำสั่งการนำทางย่อหน้าอย่างระมัดระวังในตารางที่มีเซลล์ที่ผสาน ตัวอย่างเช่น: Selection.Move Unit:=wdParagraph, นับ:=1- เมื่อค้นหาสามารถวนซ้ำได้
- การแทรกคอลัมน์ใหม่ลงในตารางอาจไม่สามารถทำได้เนื่องจากข้อผิดพลาด "เกินความกว้างสูงสุด" ดังนั้น เมื่อสร้างตารางโดยใช้มาโคร ควรตั้งค่าคอลัมน์ให้มีความกว้างคงที่ และหลังจากเติมแล้ว คุณสามารถเปิดใช้งานการเลือกความกว้างอัตโนมัติ ฯลฯ
สไตล์
- ขอแนะนำให้แยกช่องว่างออกจากชื่อสไตล์ที่ผู้ใช้สร้างขึ้น ตัวอย่างเช่น หากมีช่องว่าง ฟังก์ชัน "เลือกทั้งหมด" ของสไตล์จะใช้งานไม่ได้ สิ่งนี้ใช้ไม่ได้กับสไตล์ที่มีอยู่แล้วภายใน
- ชื่อของสไตล์ในตัวจะเชื่อมโยงกับการตั้งค่าภูมิภาคและเขียนด้วยภาษาอินเทอร์เฟซ ตัวอย่างเช่น ลักษณะ "หัวเรื่อง 1" ในคำภาษารัสเซียคือ "หัวเรื่อง 1" ในภาษาอังกฤษ ในแมโครสำหรับสไตล์ที่มีอยู่แล้วภายใน คุณต้องใช้หมายเลข wdBuiltinStyle เพื่อเพิ่มความเข้ากันได้
- ระวังสไตล์ที่ไม่ได้ใช้ (Style.InUse = False ) แม้ว่าสไตล์เหล่านี้จะอยู่ในคอลเลกชันเอกสาร (Document.Styles) แต่สไตล์เหล่านี้ยังไม่อยู่ในเอกสาร แต่จะเป็นการถูกต้องมากกว่าหากพิจารณาสไตล์เหล่านี้เป็นกลุ่มที่แยกจากกัน Word ติดตามสไตล์ดังกล่าวและแม้แต่การอ่านมาโครอย่างง่ายของคุณสมบัติ (ไม่ใช่ทั้งหมด แต่เช่น Style.Description ) ของสไตล์ที่ไม่ได้ใช้ทำให้สไตล์นี้เชื่อมต่อกับเอกสารโดยอัตโนมัติและการกำหนดค่าลูกโซ่ของสไตล์อื่น ๆ เป็นผลให้เอกสารมีการเปลี่ยนแปลง (Document.Saved = False) การเชื่อมต่อสไตล์ (BaseStyle, คุณสมบัติ LinkStyle) จะได้รับการกำหนดค่าใหม่ตามอัลกอริทึม Word ภายในบางอย่าง และการเปลี่ยนแปลงในการจัดรูปแบบเอกสารอาจปรากฏขึ้น
- พารามิเตอร์สไตล์ InUse หมายความว่าสไตล์นั้นเชื่อมต่อกับเอกสาร นี่ไม่ได้หมายความว่ามีการใช้สไตล์นี้อยู่ในขณะนี้ แต่เพียงพอที่จะใช้สไตล์ก่อนหน้านี้ นอกจากนี้ยังอาจเป็นสไตล์ที่สร้างหรือแก้ไขในเอกสารนี้ก็ได้
- ตัวอย่าง. หากคุณใช้สไตล์ลายเซ็นมาตรฐานกับเอกสาร แล้วลบแฟรกเมนต์ทั้งหมดที่กำหนดสไตล์โดยเอกสารนั้น พารามิเตอร์ InUse ของสไตล์ลายเซ็นจะยังคงตั้งค่าเป็น True
- กำหนดสไตล์ผ่านชื่อ ไม่ใช่ผ่านวัตถุ
- ข้อผิดพลาด (ความล้มเหลวจะเกิดขึ้นหากชื่อสไตล์คือ "005" นั่นคือตัวเลขบางตัวในรูปแบบข้อความ):
Selection.Find.Style = สไตล์ของฉัน - ขวา:
Selection.Find.Style = MyStyle.NameLocal
- ข้อผิดพลาด (ความล้มเหลวจะเกิดขึ้นหากชื่อสไตล์คือ "005" นั่นคือตัวเลขบางตัวในรูปแบบข้อความ):
- ในรูปแบบตาราง คุณไม่สามารถตั้งค่าทางโปรแกรม (ด้วยมาโคร) ได้:
- การจัดแนวข้อความของเซลล์ในแนวตั้ง
- ค่าระยะขอบของเซลล์เริ่มต้น (สำหรับทั้งตาราง) (TopPadding และอื่นๆ เปลี่ยนระยะขอบของเซลล์สไตล์ทั้งหมดในคราวเดียว)
- เช่นเดียวกับตัวเลือกทั้งตารางสำหรับระยะขอบของเซลล์
ชิ้นส่วนที่เลือก (การคัดเลือก)
- ออบเจ็กต์ Selection มีลักษณะเฉพาะ เช่นเดียวกับคุณสมบัติและวิธีการต่างๆ มากมาย ตัวอย่างเช่น ออบเจ็กต์ Range มีชุดเครื่องมือสำหรับการทำงานกับพื้นที่น้อยกว่า Selection อย่างมาก
- ข้อได้เปรียบที่ไม่อาจปฏิเสธได้ของ Selection คือสามารถทำงานกับชิ้นส่วนต่างๆ ที่เลือกไว้ในตำแหน่งต่างๆ ในเอกสารได้ ตรงกันข้ามกับ Range ที่สามารถประมวลผลเอกสารที่ต่อเนื่องได้เพียงส่วนเดียวเท่านั้น
- พยายามใช้ Selection ให้น้อยที่สุดเท่าที่จะเป็นไปได้ในมาโคร โดยเฉพาะมาโครที่ซับซ้อน เมื่อจำเป็นเท่านั้น เหตุผลก็คือ การดำเนินการอัตโนมัติของ Word จำนวนมากเชื่อมโยงกับการเปลี่ยนแปลงส่วนที่เลือก การใช้ Selection จะทำให้มาโครช้าลงอย่างมาก และอย่างเลวร้ายที่สุดจะทำให้เกิดข้อผิดพลาดหรือข้อขัดข้อง
- อย่าสับสนระหว่างคุณสมบัติและวิธีการเดียวกันของ Object.Properties และ Object.Range.Properties ตัวอย่างเช่น คุณสมบัติ Selection และคุณสมบัติ Selection.Range เดียวกันอาจแตกต่างกันอย่างมาก
- ด้วย Selection.Types บางอย่าง (เช่น หากเลือกผืนผ้าใบ) คำสั่ง ActiveDocument.Styles.Add จะไม่ทำงาน
- เมื่อ Selection.Range อยู่ที่จุดเริ่มต้นของย่อหน้า ให้ใช้คำสั่ง การเลือกยุบ wdCollapseStartบางครั้งเลื่อนเคอร์เซอร์ไปที่จุดสิ้นสุดของย่อหน้าก่อนหน้า
- คุณสมบัติการเลือกอ้างอิงถึงส่วนที่ใช้งานอยู่ของเอกสาร
- ตัวอย่าง:
ActiveDocument.StoryRanges(ดัชนี:=wdFootnotesStory)เลือก
Selection.Find.Execute "เรากำลังมองหาบางสิ่งบางอย่างและค้นหา...
" จนกว่าคำสั่ง Selection ถัดไปจะอยู่ใน FootnotesStory
" ข้อผิดพลาด:
ActiveDocument.Range (Selection.Start, Selection.End) เลือก
"เราเลือกสิ่งที่ไม่รู้จักในส่วนหลักของเอกสาร (wdMainTextStory)
" ขวา:
Selection.SetRange Selection.Start, Selection.End
- ตัวอย่าง:
- โดยไม่ต้องใช้บัฟเฟอร์ ส่วนที่เลือก (การเลือก) สามารถคัดลอกและย้ายภายในเอกสารได้โดยใช้คำสั่ง CopyText และ MoveText ตามลำดับ
วัตถุ
- การตรวจสอบวัตถุ:
- วัตถุไม่มีอะไร = จริงหากไม่ได้กำหนดวัตถุไว้
- IsObjectValid (วัตถุ)<>จริงถ้าวัตถุถูกลบ
- ฉันแนะนำให้ใช้การตรวจสอบนี้เมื่อประมวลผลวัตถุเป็นชุดใน For Each loop
- นอกจากสิ่งที่ถูกลบแล้ว การตรวจสอบนี้ยังตรวจจับวัตถุที่เสียหายด้วย (มีบางส่วนด้วยเช่นกัน)
- ตรวจสอบประเภทวัตถุ:
- ถ้า TypeOf Object ถูกพิมพ์แล้ว
- ชื่อประเภทวัตถุ:
- S = VBA.TypeName(วัตถุ)
- การบันทึกคุณสมบัติของวัตถุตามชื่อ:
- CallByName Selection.Find, "ข้อความ", vbLet, "เก้าอี้"
- อะนาล็อก: Selection.Find.Text = "เก้าอี้"
- อ่านคุณสมบัติของวัตถุตามชื่อ:
- S = CallByName(Selection.Find, "ข้อความ", vbGet)
- อะนาล็อก: S = Selection.Find.Text
- การเรียกวิธีการวัตถุตามชื่อ:
- CallByName Selection.Find, "ดำเนินการ", vbMethod, "เก้าอี้", True
- อะนาล็อก: Selection.Find.Execute "เก้าอี้" จริง
- การลบย่อหน้าจะเป็นการลบรูปภาพ คำจารึก และวัตถุอื่นๆ ที่แนบมาด้วย
- เมื่อทำงานกับภาพวาด (วัตถุ Shape และ InLineShape) คุณต้องพิจารณาเวอร์ชันของ Word อย่างจริงจัง ผลลัพธ์ของการเรียกใช้โค้ดเดียวกันใน Word เวอร์ชันต่างๆ อาจแตกต่างกันอย่างมาก
- วัตถุประเภทรูปร่างไม่ได้ผูกไว้กับย่อหน้า แต่เชื่อมโยงกับตำแหน่งในย่อหน้า ShapeRange ทำงานตามนั้น
- ตัวอย่าง. เครื่องหมายแบ่งหน้าแบ่งย่อหน้าออกเป็นสองส่วน (ไม่ใช่สองย่อหน้า) ส่วนแรกจะอยู่ในหน้าเดียว ส่วนที่สองจะอยู่ในอีกหน้าหนึ่ง และรูปภาพสามารถแทรกได้ทั้งในหน้าเดียวและอีกหน้าหนึ่งโดยอ้างอิงถึงย่อหน้าเดียวกัน ป้าย "ตัวแบ่งคอลัมน์" ก็ทำงานในลักษณะเดียวกัน
- พารามิเตอร์ Anchor มักถูกละเลยเมื่อสร้างรูปร่าง การตัดและวางรูปทรงช่วยได้ ในกรณีนี้ Anchor จะตรงกับตำแหน่งการแทรกเสมอ ซึ่งช่วยให้คุณสามารถผูกรูปร่างได้แม้กระทั่งกับอักขระตัวเดียว
- ตัวอย่างการแทรกและยึดรูปทรง “หัวใจ”:
Dim R เป็น Range, SH เป็นรูปร่าง
ตั้งค่า R = Selection.Range " สแน็ปตำแหน่ง
R.ยุบ wdCollapseStart
ตั้งค่า SH = ActiveDocument.Shapes.AddShape(msoShapeHeart, 0, 0, 100, 100, R) " รถบักกี้
ถ้า R.Start<>SH.Anchor.Start จากนั้น "ตรวจสอบและแก้ไข
SH.พุก.ตัด
R.วาง
ตั้งค่า SH = R.ShapeRange(1)
สิ้นสุดถ้า
- ตัวอย่างการแทรกและยึดรูปทรง “หัวใจ”:
- เมื่อวางตำแหน่งรูปร่างบนเพจ - เมื่อเปลี่ยนคุณสมบัติด้านบนและด้านซ้าย ให้ใช้ตัวแปรประเภทตัวแปร มิฉะนั้น ตำแหน่งรูปร่างอาจกระโดด เช่นเมื่อใช้แบบ Single
แบบฟอร์ม แผง เมนู
- ปล่อยให้พารามิเตอร์ TakeFocusOnClick สำหรับองค์ประกอบแบบฟอร์มที่ไม่ใช่โมดอล (ShowModal=False) เป็น True เสมอ มิฉะนั้น แบบฟอร์มจะไม่ได้รับการโฟกัสเมื่อไม่ได้ใช้งานอยู่ หรือจะสูญเสียโฟกัสเมื่อองค์ประกอบแบบฟอร์มเรียกกล่องโต้ตอบอื่น
- เมื่อสร้างองค์ประกอบแถบเครื่องมือ (ปุ่ม เมนู ฯลฯ) พารามิเตอร์ชั่วคราวในคำสั่ง CommandBarControls.Add จะถูกละเว้น Temporary จะเป็น False เหมือนเดิม
เบ็ดเตล็ด
- เมื่อตรวจสอบโค้ดอักขระ โปรดทราบว่าฟังก์ชัน AscW() อาจส่งคืนตัวเลขที่เป็นลบ เนื่องจากช่วง Unicode อยู่ระหว่าง -32768 ถึง 65535
- ตัวอย่างเช่น คุณต้องตรวจสอบว่ารหัสอักขระอยู่ระหว่าง 0 ถึง 32:
ถ้า AscW(S)<= 32 then " ошибка!
ถ้า AscW(S) >= 0 และ AscW(S)<= 32 then " правильно
- ตัวอย่างเช่น คุณต้องตรวจสอบว่ารหัสอักขระอยู่ระหว่าง 0 ถึง 32:
- เสริมคำสั่งคัดลอก ตัด วาง และคำสั่งอื่นๆ ที่ทำงานกับคลิปบอร์ดด้วยคำสั่ง DoEvents มิฉะนั้น อาจเกิดข้อผิดพลาด “ไม่มีข้อมูลในบัฟเฟอร์หรืออยู่ในรูปแบบที่ไม่ถูกต้อง” โดยเฉพาะอย่างยิ่งเมื่อใช้บัฟเฟอร์ในลูป
- หากคุณเปิดเอกสารในโหมดอ่านอย่างเดียว การเปลี่ยนแปลงอาจยังคงเกิดขึ้น ในกรณีนี้ คุณสมบัติ Document.Saved จะกลายเป็นเท็จ สิ่งนี้เกิดขึ้นเนื่องจากการตั้งค่าเอกสารและ Word ตัวอย่างเช่น เมื่อตัวเลือก "อัปเดตการเชื่อมต่ออัตโนมัติเมื่อเปิด" ทำงานอยู่
- คอลเลกชัน Application.Documents ยังรวมถึงเอกสารที่ซ่อนอยู่ซึ่งไม่สามารถเปิดใช้งานได้ (ActiveDocument)
- โปรดทราบว่า Range.Start และ Range.Characters.First.Start จะไม่เหมือนกันเสมอไป ตัวอย่างเช่น เมื่อ Range.Start อยู่ภายในตัวอ้างอิงโยง ไฮเปอร์ลิงก์ ฯลฯ
- แม้ว่าพื้นที่ Range จะถูกยุบ Range.Characters.Count=1 ดังนั้น ควรตรวจสอบความยาวเป็นศูนย์ของพื้นที่ดังนี้
ถ้า Range.Start = Range.End แล้ว ... - อย่าสับสน Len(Range.Text) กับ Range.Characters.Count ตัวละครหนึ่งตัวสามารถมีอักขระได้หลายตัว ซึ่งหมายความว่าสถานการณ์จะเกิดขึ้นได้เมื่อ: Len(Range.Text) > Range.Characters.Count
- ฟังก์ชัน InRange จะส่งกลับค่า False ถ้าขอบเขตที่กำลังตรวจสอบถูกยุบและอยู่ที่ส่วนท้ายของขอบเขตหลัก แต่จะส่งคืนค่า True ถ้าพื้นที่ยุบอยู่ที่จุดเริ่มต้น ตรรกะอันชาญฉลาดเช่นนี้ไม่ได้เขียนไว้ในเอกสารประกอบ
- คำสั่ง Application.Run ไม่ส่งคืนพารามิเตอร์ Variant ระบุประเภทให้ชัดเจน
- ตัวอย่างที่มีข้อผิดพลาด:
ย่อย AAA()
Dim V As Variant "ควรเขียนว่า As Long
แอปพลิเคชันเรียกใช้ MacroName: = "BBB", VarG1: = V
MsgBox วี
จบหมวดย่อย
ย่อย BBB(ByRef V)
วี=123
จบหมวดย่อย
- ตัวอย่างที่มีข้อผิดพลาด:
- คำสั่ง InsertParagraphBefore/After ใช้งานไม่ได้ในบางครั้ง แทนที่ด้วย: InsertBefore Text:=vbCr ช่วยได้
- พื้นที่ที่มีอักขระตัวสุดท้ายของเอกสารทำงานไม่เป็นมาตรฐาน ซึ่งอาจทำให้เกิดการวนซ้ำได้
- ตัวอย่าง:
ActiveDocument.Range.Characters.Last.Select
Selection.Collapse Direction:=wdCollapseEnd " ผิดพลาดที่นี่
- ตัวอย่าง:
- คำสั่ง With ... End With คล้ายกับการประกาศและปล่อยตัวแปรใหม่ ดูเหมือนว่าชื่อตัวแปรจะว่างเปล่า และในการเข้าถึงคุณสมบัติของตัวแปร คุณเพียงแค่ต้องพิมพ์จุด
- ตัวอย่างที่มีข้อผิดพลาด:
Dim C As Cell ฉันตราบเท่าที่
ด้วยการคัดสรร
สำหรับ i = 1 ถึง Selection.Cells.Count "หลายเซลล์
.เซลล์(i).ช่วง.ข้อความ = "X"
ถัดไป
จบด้วย - ตัวอย่างที่แก้ไข:
Dim C As Cell ฉันตราบเท่าที่
ด้วยการเลือกเซลล์
สำหรับ i = 1 ถึง .นับ
.Item(i).Range.Text = "X"
ถัดไป
จบด้วย
- ตัวอย่างที่มีข้อผิดพลาด:
- ไปที่จุดเริ่มต้นของหน้าที่ N ของเอกสาร:
ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, N) เลือก
หรือ
Selection.GoTo(wdGoToPage, wdGoToAbsolute, N) - เมื่อแอปพลิเคชัน Word หลายแอปพลิเคชันที่ใช้ Add-in เดียวกันทำงานพร้อมกัน คุณจะไม่สามารถเรียกใช้คำสั่ง Document.Save บน Add-in นั้นได้ และแอปพลิเคชัน Word อื่นๆ จะบล็อกแอปพลิเคชันดังกล่าว นั่นคือ ถ้าคุณเก็บข้อมูลบางอย่างไว้ในเนื้อความของ Add-in เช่น ในตัวแปร คุณจะไม่สามารถบันทึกได้ นี่อาจจะดี แต่ถ้าคุณต้องการบันทึก ให้ใช้ไฟล์ ini, รีจิสตรี หรืออย่างอื่น
วันก่อน ฉันพัวพันกับความวิปริตทางเพศทุกประเภทด้วยข้อความในเอกสารรับรองทางการแพทย์ล่าสุดใน MS Word และฉันต้องค้นหาและแทนที่ภาษาลามกอนาจารและคำพูดที่ไม่มีความหมายทุกประเภทเพราะผู้เขียนส่วนใหญ่ไม่ได้รับการฝึกฝนในภาษารัสเซียไม่ดีเลย (ทุกคนพยายามเขียนเป็นภาษาอังกฤษเป็นภาษาซีริลลิก ฯลฯ ) และพวกเขาไม่ทราบวิธีจัดรูปแบบข้อความให้อ่านง่าย มีหลายสิ่งที่จำเป็นต้องเปลี่ยนและเปลี่ยนแปลง และเครื่องมือค้นหามาตรฐานที่เป็นที่รู้จักซึ่งสร้างไว้ในโปรแกรมแก้ไขนั้นไม่เพียงพออีกต่อไป ดังนั้นจึงจำเป็นต้องหันไปใช้ แต่เป็น? โปรแกรม Word ที่มีมนต์ขลังเริ่มสบถใส่หน้ากากที่ฉันเคยรู้จักมาก่อน และเช่นเคย Google ก็เข้ามาช่วยเหลือ หลังจากขุดลึกลงไปเล็กน้อย ฉันพบว่านักเขียน MS Office ตัวน้อยที่เก่งกาจต่างก็เดินทางมาที่นี่เช่นกัน โดยเรียกนิพจน์ดังกล่าวว่าเป็นไวด์การ์ดและเปลี่ยนไวยากรณ์เล็กน้อย โดยทั่วไปคุณสามารถเข้าใจได้
มันค่อนข้างง่าย (ฉันมี Office 2007 แต่ฉันคิดว่ามันจะเป็นจริงสำหรับเวอร์ชันก่อนหน้ายกเว้นว่าชื่อของรายการจะมีความแตกต่างเล็กน้อย แต่ฉันเชื่อว่าคุณจะเข้าใจเอง) ). และโดยมากแล้ว ไม่จำเป็นต้องไปหาที่ไหนอีกแล้ว นอกเหนือจากสิ่งที่มองเห็นได้ทันที หากคุณเรียกหน้าต่าง "ค้นหา" (Ctrl+F) หรือ "ค้นหาและแทนที่" (Ctrl+H) ใน Word ให้วางเคอร์เซอร์ในช่อง "ค้นหา" แล้วคลิก "เพิ่มเติม" จากนั้น "พิเศษ" "อักขระพิเศษมีตัวเลือกอื่นซึ่งจะกล่าวถึงด้านล่าง มันค่อนข้างง่าย (ฉันมี Office 2007 แต่ฉันคิดว่ามันจะเป็นจริงสำหรับเวอร์ชันก่อนหน้ายกเว้นว่าจะมี มีความแตกต่างเล็กน้อยในชื่อของรายการ แต่ฉันเชื่อว่าคุณจะเข้าใจได้ ;)) และโดยมากแล้ว ไม่จำเป็นต้องไปหาที่ไหนอีกแล้ว นอกเหนือจากสิ่งที่มองเห็นได้ทันที หากคุณเรียกหน้าต่าง "ค้นหา" (Ctrl+F) หรือ "ค้นหาและแทนที่" (Ctrl+H) ใน Word ให้วางเคอร์เซอร์ในช่อง "ค้นหา" แล้วคลิก "เพิ่มเติม" จากนั้นปุ่ม "พิเศษ" "ซึ่งเป็นอักขระพิเศษจะมีอีกหนึ่งตัวเลือกซึ่งจะกล่าวถึงด้านล่าง
อันดับแรก เกี่ยวกับมาสก์การค้นหามาตรฐาน:
-
- สัญญาณใด ๆ
^# - หมายเลขใดก็ได้
^$ - จดหมายใดก็ได้
^t - อักขระแท็บ (→) (หากเลือกตัวเลือก Wildcards ให้แทนที่ด้วย ^9 )
^+ — ขีดกลางยาว (—)
^= — เครื่องหมายขีดกลาง (-)
^^ — เครื่องหมายหมวก (^)
^l - บังคับให้ขึ้นบรรทัดใหม่ (สัญลักษณ์ ↵ หรือ 0xBF) สิ่งนี้จะเกิดขึ้นหากคุณกด Shift+Enter (หากเลือกตัวเลือก "Wildcards" ให้แทนที่ด้วย ^11)
^n - ตัวแบ่งคอลัมน์ (หากเลือกตัวเลือก Wildcards ให้แทนที่ด้วย ^14 )
^12 - ส่วนหรือตัวแบ่งหน้า (เมื่อแทนที่ จะเพิ่มตัวแบ่งหน้า)
^m - บังคับตัวแบ่งหน้า (ใช้เพื่อค้นหาและแทนที่ตัวแบ่งส่วนหากเลือกตัวเลือก Wildcards)
^s - ช่องว่างไม่แยก (°) (Ctrl+Shift+Space)
^~ — เครื่องหมายยัติภังค์ต่อเนื่อง (หยาบคาย)
^- — การโอนอ่อน (ฌ)
ตอนนี้เรามาดูที่ช่อง "แทนที่ด้วย" กัน โดยจะมีสองตัวเลือกปรากฏที่นี่:
^& — ข้อความค้นหา
^c - เนื้อหาคลิปบอร์ด
สิ่งนี้สามารถนำไปใช้ได้อย่างไร? ตัวอย่างเช่น สมมติว่าคุณต้องค้นหาข้อความ “Achtung!” และ "อัคตุง"? ทาสีเขียวแล้วแทนที่ด้วย “อัคตุง มิเนน! "(แดงจริงๆ). นอกจากนี้ในข้อความคุณเพียงแค่มีคำว่า "achtung" ด้วยตัวอักษรตัวเล็กซึ่งไม่จำเป็นต้องเปลี่ยน สารละลาย:
เขียนด้วยสีแดงว่า “minen! "และตัดไปที่คลิปบอร์ด
ค้นหา (โดยทำเครื่องหมายที่ช่อง "Match case"): Achtung
แทนที่ด้วย (เลื่อนเคอร์เซอร์ไปที่ช่องนี้แล้วคลิกปุ่ม "รูปแบบ" จากนั้นเลือก "แบบอักษร" และมีสีเขียว):
ค้นหาตอนนี้: Achtung^?
แทนที่ด้วย: Achtung, ^c
ด้วยเหตุนี้ทุกอย่างจึงเรียบง่ายและชัดเจน และหากจำเป็นในรายการวรรณกรรมมากมายเช่น
Reynolds J. V. , Murchan P. , Leonard N. และคณะ interlenkin-2 ขนาดสูงส่งเสริมการเคลื่อนย้ายแบคทีเรียจากลำไส้ // Brit. เจ. แคนเซอร์.-1995. -ฉบับ 72, N 3. - หน้า 634-636.
ทำให้ทุกอย่างกลับมาเป็นปกติ
Reynolds° J.V., Murchan° P., Leonard° N. และคณะ interlenkin-2 ขนาดสูงส่งเสริมการเคลื่อนย้ายแบคทีเรียจากลำไส้ // Brit. เจ. มะเร็ง.°— 1995.°— V.72(3).°— P.° 634-636.
ฉันควรทำอย่างไรดี? การแก้ไขแต่ละบรรทัดด้วยตนเองจะใช้เวลานานและน่าเบื่อมาก แต่สามารถทำได้โดยการค้นหาและแทนที่
หากคุณทำเครื่องหมายที่ช่อง "Wildcards" ในหน้าต่างค้นหาและแทนที่ เนื้อหาของปุ่ม "พิเศษ" สำหรับช่อง "ค้นหา" จะอยู่ในรูปแบบที่แตกต่างออกไปเล็กน้อย:
-
- สัญญาณใด ๆ
<
— в начале слова
[ - ] — ลงชื่อเข้าใช้ในช่วง
> - ในตอนท้ายของคำ
() - พิสัย
[!] - ไม่
(; ) — จำนวนครั้งที่เกิดขึ้น
@ - ก่อนหน้า 1 ขึ้นไป
* - จำนวนอักขระเท่าใดก็ได้
และสำหรับช่อง "แทนที่ด้วย" รายการเพิ่มเติมจะปรากฏขึ้น
\n คือนิพจน์ที่ต้องการ
วิธีการใช้งาน? แค่. ฉันจะเริ่มตามลำดับ -สำหรับการค้นหาจะหมายถึง "[space] wasp", "scythe", "fox" และสิ่งอื่นๆ อีกมากมายที่มีอักขระสองตัวอยู่ข้างหน้า "sa" และการแสดงออก *สาจะเน้นข้อความทั้งหมดให้คุณตั้งแต่ตำแหน่งเคอร์เซอร์ในข้อความไปจนถึงตัว “sa” ตัวแรกที่เจอ รวมถึง “[เคอร์เซอร์] สัตว์ที่มีเลข 25 วิ่งข้ามทุ่ง มันคือสุนัขจิ้งจอก”
สัญลักษณ์ @ มีความหมายใกล้เคียงกันกับสัญลักษณ์ก่อนหน้า ที่นี่ฉันมีจินตนาการไม่เพียงพอสำหรับตัวอย่าง ฉันจะยืมจากสิ่งเล็ก ๆ น้อย ๆ : มากจะช่วยคุณค้นหา "ล็อต" หรือ "ปล้น" เต็ม@จะช่วยให้คุณค้นหา "เต็ม" หรือ "เต็ม" ฯลฯ -
เกือบจะมาจากตัวละครโอเปร่าคนเดียวกัน<
и >
: <ок
จะช่วยคุณค้นหาทุกสิ่ง "รอบตัว" และ ตกลง>- "ช็อต" ทุกประเภท
สำนวนนี้จะช่วยคุณค้นหาตัวอักษรของตัวอักษรภาษาอังกฤษเป็นตัวพิมพ์ใหญ่ และตัวอักษรใด ๆ ทั้งในภาษารัสเซียและภาษาอังกฤษ นิพจน์ (;) ยังใช้แยกไม่ออกกับสิ่งนี้ ดูเหมือนว่านี้ สมมติว่าคุณต้องค้นหาคำทั้งหมดที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่และมีความยาว 4 ถึง 5 ตัวอักษรและลงท้ายด้วยเครื่องหมายคำถาม วิธีแก้ไขคือค้นหาโดยใช้มาสก์ต่อไปนี้:
{1;1}{3;4}
\?
นั่นคือหาอักษรตัวใหญ่หนึ่งตัวและตัวพิมพ์เล็กอีก 3 หรือ 4 ตัวตามด้วยเครื่องหมายคำถาม มีความละเอียดอ่อนเล็กๆ น้อยๆ อย่างหนึ่งที่นี่ - เนื่องจากสัญลักษณ์ “?” ถูกใช้เป็นไวด์การ์ด ดังนั้นเพื่อให้การค้นหารับรู้ว่าเป็นเครื่องหมายคำถาม และไม่ใช่อักขระใด ๆ คุณต้องใส่ "\" ไว้ข้างหน้า หากคุณต้องการค้นหาอักขระ “\” ในข้อความก็จะมีลักษณะเช่นนี้ \\
เอ่อ ฯลฯ
ตัวอย่างเช่น การใช้ [!] คุณสามารถค้นหาทุกสิ่งยกเว้นตัวพิมพ์ใหญ่: [!A-Z]
ตอนนี้เกี่ยวกับโอเปอเรเตอร์การค้นหาที่น่าสนใจที่สุด - () . ด้วยความช่วยเหลือนี้ คุณสามารถค้นหานิพจน์ต่างๆ และจัดกลุ่มนิพจน์เหล่านั้นได้โดยใช้ตัวดำเนินการ \n ตัวอย่างง่ายๆ: สมมติว่าคุณต้องแทนที่ "นามสกุลและ O" ด้วย "I.O.°นามสกุล" ตลอดทั้งข้อความ สารละลาย:
หา: ({1;1}{2;11} )
({1;1} )
({1;1} )
แทนที่ด้วย: \2.\3.^s\1
กล่าวคือ แต่ละนิพจน์ในวงเล็บในช่องค้นหาจะสอดคล้องกับตัวดำเนินการ \n ในช่องแทนที่ด้วย
ตอนนี้ฉันคิดว่าคุณสามารถจัดการงานที่ได้รับข้างต้นได้ด้วยตัวเอง;)