Word ระบุช่วงสำหรับการเปลี่ยน การใช้ไวด์การ์ด การสร้างจดหมายส่วนตัวสำหรับผู้สื่อข่าวจำนวนมาก

วันที่: 14 กันยายน 2017

เมื่อทำงานกับข้อความขนาดใหญ่ การค้นหาและแทนที่ใน 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 เป็นประเภทอื่นที่ไม่ใช่บูลีน โค้ดอาจไม่ทำงาน
  • การเพิ่มประสิทธิภาพของการวนซ้ำบนอาร์เรย์ (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 ให้เป็นสถานะดั้งเดิม
  • การเข้าถึงองค์ประกอบเอกสารด้วยดัชนีนั้นช้ามาก เรากำลังพูดถึงสัญลักษณ์ คำ ประโยค ย่อหน้า ฯลฯ ยิ่งมีองค์ประกอบในเอกสารมากเท่าไร “เบรก” ก็จะยิ่งสังเกตเห็นได้ชัดเจนมากขึ้นเท่านั้น
    • ตัวอย่าง. แทนที่จะอ้างอิงถึงป้ายโดยตรง:
      เอกสาร.อักขระ(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).เปิดใช้งาน
  • การเลือกทำงานแตกต่างกันในโหมดการดูเอกสารที่แตกต่างกัน
  • เมื่อประมวลผลด้วยมาโคร ให้ลองใช้โหมดมุมมอง "ปกติ" (wdNormalView) สิ่งนี้ช่วยปรับปรุงประสิทธิภาพ โดยเฉพาะเมื่อทำงานกับโต๊ะ
  • เมื่อเปลี่ยนโหมดมุมมอง Selection.Range อาจเปลี่ยนแปลงได้เนื่องจาก มีโหมดบางโหมดที่ไม่ได้แสดงองค์ประกอบของเอกสารทั้งหมด
    • ตัวอย่าง. วัตถุไม่สามารถมองเห็นได้ในโหมดมุมมองปกติ/แบบร่าง (wdNormalView) และหากในโหมด "เค้าโครงหน้า" (wdPrintView) คุณเลือกข้อความภายในป้ายกำกับ จากนั้นเมื่อคุณเปลี่ยนโหมดเป็น "ปกติ" Selection.Range จะยุบลง

ค้นหา (ค้นหาช่วง)

  • สัญลักษณ์แทน
    • สำหรับรูปแบบเดียวกัน การใช้ไวด์การ์ด การค้นหาไปข้างหน้าและข้างหลังอาจให้ผลลัพธ์ที่แตกต่างกัน ทดสอบรูปแบบการค้นหาเพื่อดูว่ารูปแบบใดเหมาะสำหรับการค้นหาไปข้างหน้า และรูปแบบใดเหมาะสำหรับการค้นหาย้อนหลัง
    • ค้นหาด้วยไวด์การ์ด "@" และ "(1;)"
      • มันไม่ได้ให้สิ่งเดียวกัน
        • ตัวอย่าง. เมื่อค้นหาไปข้างหน้าในข้อความ "111+222+333":
          • โดยใช้รูปแบบ "1@" จะพบอักขระหนึ่งตัว "1" และใช้ "1(1;)" - ชุดอักขระ "111"
          • โดยใช้รูปแบบ "[!2]@+" จะพบข้อความ "111+" และใช้รูปแบบ "[!2](1;)+" จะไม่พบสิ่งใดเลย
      • สำหรับการค้นหาที่ซับซ้อน โดยเฉพาะในทิศทางตรงกันข้าม "@" จะเหมาะสมกว่า
        • ตัวอย่าง. ค้นหาย้อนหลังในข้อความ "หนึ่ง สอง สาม" โดยใช้รูปแบบ "<[А-Я]{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"
    • อักขระพิเศษ ^d (หรือเรียกอีกอย่างว่า ^19 - จุดเริ่มต้นของฟิลด์และยังมี ^21 - จุดสิ้นสุดของฟิลด์) ช่วยให้คุณสามารถค้นหาฟิลด์ใด ๆ รวมถึงฟิลด์ประเภทเฉพาะได้ นอกจากนี้ คุณยังสามารถค้นหา เลือก และประมวลผลฟิลด์บังคับที่มีการกรองอย่างเข้มงวดได้
      • ตัวอย่างฟิลด์การประมวลผลประเภท AUTOTEXT:
        • เปิดใช้งานโหมดการแสดงโค้ดฟิลด์ (Alt+F9)
        • เปิดหน้าต่างการค้นหาขั้นสูง (Ctrl+F, Ctrl+H)
        • ในช่อง "ค้นหา" ให้ป้อนข้อความ: ^d^wAUTOTEXT^w
        • เปิดใช้งานแฟล็ก "เลือกองค์ประกอบทั้งหมด..."
        • มาทำการค้นหากันดีกว่า ด้วยเหตุนี้ ฟิลด์ทั้งหมดของประเภท AUTOTEXT จะถูกเลือก ยิ่งไปกว่านั้น ไม่ใช่ส่วนโค้ดฟิลด์ที่จำเป็นที่ถูกเน้น แต่เป็นฟิลด์ทั้งหมด!
        • กลุ่มฟิลด์ที่เลือกสามารถตัด คัดลอก ลบ จัดรูปแบบ ฯลฯ
        • คุณสามารถสลับกลับไปยังโหมดสำหรับการแสดงค่าฟิลด์ (Alt+F9) ในกรณีนี้ ช่องต่างๆ จะยังคงเน้นอยู่
    • หากคุณตั้ง 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
  • ในรูปแบบตาราง คุณไม่สามารถตั้งค่าทางโปรแกรม (ด้วยมาโคร) ได้:
    • การจัดแนวข้อความของเซลล์ในแนวตั้ง
    • ค่าระยะขอบของเซลล์เริ่มต้น (สำหรับทั้งตาราง) (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 " правильно
  • เสริมคำสั่งคัดลอก ตัด วาง และคำสั่งอื่นๆ ที่ทำงานกับคลิปบอร์ดด้วยคำสั่ง 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 ในช่องแทนที่ด้วย
ตอนนี้ฉันคิดว่าคุณสามารถจัดการงานที่ได้รับข้างต้นได้ด้วยตัวเอง;)