แมโคร VBA เพื่อค้นหาและแทนที่สตริงข้อความในไฟล์คำใดๆ ภายในโฟลเดอร์ที่เลือก

มาโคร VBA: แทนที่ข้อความในไฟล์คำในทั้งหมด โฟลเดอร์ย่อย

ฉันยังใหม่กับ VBA มาก สิ่งที่ฉันต้องการให้ได้คือมาโครที่แนบมากับปุ่มใน Excel ที่สามารถ 'เมื่อคลิก':

  1. อนุญาตให้ฉันนำทางไปยังโฟลเดอร์
  2. ค้นหาโฟลเดอร์นั้นเพื่อหาไฟล์คำใด ๆ (.doc)
  3. จากนั้นทำการค้นหาและแทนที่สตริงข้อความเฉพาะที่อาจอยู่ในไฟล์ .doc เหล่านั้นในโฟลเดอร์
  4. ปิดและบันทึก .doc ที่แก้ไขแล้ว

ฉันพบคำถาม (โปรดดูลิงก์) ซึ่งดูเหมือนโค้ดที่คล้ายกันมากกับสิ่งที่ฉันต้องการ แม้ว่าฉันไม่จำเป็นต้องผ่านโฟลเดอร์ย่อยใดๆ แต่เพียงต้องการค้นหาในโฟลเดอร์เดียวที่ฉันนำทางไปเมื่อเริ่มต้นกระบวนการ

ฉันไม่รู้เกี่ยวกับ VBA มากพอที่จะแก้ไขโค้ดได้อย่างมั่นใจ และขอขอบคุณสำหรับความช่วยเหลือของคุณในการแก้ปัญหา

ขอบคุณ,

อเล็กซ์


person Alex H    schedule 02.10.2013    source แหล่งที่มา


คำตอบ (1)


เรายินดีที่จะช่วยเหลือในการแก้ปัญหา แต่คุณต้องแสดงให้เห็นถึงความเข้าใจเพียงเล็กน้อยเกี่ยวกับปัญหาที่กำลังแก้ไข ดูรายการตรวจสอบคำถาม SO สำหรับรายละเอียด โปรดทราบว่าคำถามของคุณไม่เป็นไปตามหลักเกณฑ์ของ Stack Overflow ในขณะนี้ แต่แก้ไขได้ง่าย! หลังจากที่คุณอ่านหลักเกณฑ์แล้ว คลิก "แก้ไข" ใต้คำถามของคุณ และขัดเกลาเล็กน้อย

ทุกคนเริ่มเป็นคนใหม่ในบางสิ่งบางอย่าง เนื่องจากคุณเพิ่งเริ่มใหม่ คุณมีตัวเลือกดีๆ สองสามทางในการเริ่มต้นโครงการ

คุณอาจลองใช้โค้ดในลิงก์ที่คุณวางด้านบนเพื่อเริ่มต้น และลองแก้ไขบางส่วนตามวัตถุประสงค์ของคุณเอง

หนึ่งในตัวเลือกที่ดีที่สุดคือการบันทึกแมโคร จากนั้นไปที่โปรแกรมแก้ไข VBA (โดยการกด Alt-F11) เพื่อดูโค้ดที่แมโครสร้างขึ้น ซึ่งช่วยให้คุณเห็นวิธีการตั้งค่าโค้ดและเป็นจุดเริ่มต้นในการเขียนโค้ดของคุณเอง

นอกจากนี้ คุณสามารถดูไฟล์วิธีใช้ของ Microsoft ได้จากเมนูวิธีใช้ในตัวแก้ไข VBA มีเว็บไซต์ Excel VBA มากมายทางออนไลน์เช่นกัน


แก้ไข: หากต้องการใช้โค้ดในลิงก์ที่คุณโพสต์ คุณสามารถข้ามส่วนที่ค้นหาโฟลเดอร์ย่อยและเพิ่มลงในคอลเลกชันได้ ในตอนต้นของส่วนถัดไปที่วนซ้ำไฟล์ต่างๆ มีคำสั่ง:

For Each varItem In colSubFolders

นำสิ่งนี้ออกสำหรับ... แต่ละวงที่ค้นหาผ่านไดเรกทอรีปัจจุบันของโฟลเดอร์ย่อยและเพียงใช้โค้ดที่อยู่ภายในซึ่งดูผ่านเอกสาร Word ในโฟลเดอร์ย่อย (ตอนนี้ดูผ่านเอกสาร Word ในโฟลเดอร์ หนึ่ง เท่านั้น ไม่ใช่ทุกโฟลเดอร์ย่อย)

person Aaron Thomas    schedule 02.10.2013
comment
@DavidZemens สิ่งนี้จะไม่ตอบคำถามที่ฉันไม่รู้เกี่ยวกับ VBA เพียงพอที่จะแก้ไขโค้ดอย่างมั่นใจได้อย่างไรและขอขอบคุณสำหรับความช่วยเหลือของคุณในการแก้ปัญหา :( - person Aaron Thomas; 02.10.2013
comment
เนื่องจากคำถามระบุไว้ในจุดที่ 1, 2 และ 3 ใน OP: เขาต้องการวิธีแก้ไขปัญหาเฉพาะเจาะจง แต่ยังมีข้อแม้ว่า ฉันไม่รู้เกี่ยวกับ VBA มากพอที่จะแก้ไขโค้ดได้อย่างมั่นใจ คำตอบของคุณคือความคิดเห็น/ข้อเสนอแนะเกี่ยวกับข้อแม้นั้น แต่ไม่ได้ใกล้เคียงกับการให้คำตอบสำหรับปัญหาที่เกิดขึ้นจริง - person David Zemens; 02.10.2013
comment
ขอบคุณสำหรับการตอบกลับของคุณ. ฉันได้พยายามที่จะใช้และแก้ไขโค้ดที่ฉันพบ แม้ว่ามาโครจะไม่ทำงานและไม่ก่อให้เกิดข้อผิดพลาดใดๆ ในการแก้ไขข้อบกพร่อง ฉันรู้ว่าฉันยังไม่รู้เกี่ยวกับ vba มากพอที่จะแก้ไขโค้ดเพื่อจุดประสงค์ของฉันเอง นั่นคือสาเหตุที่ฉันโพสต์คำถาม แต่ไม่ต้องกังวล ตอนนี้ฉันได้อ่าน 'รายการตรวจสอบคำถาม SO' แล้ว และจะนำประเด็นเหล่านั้นไปใช้ในครั้งต่อไปและค้นคว้ารายละเอียดเพิ่มเติมก่อนโพสต์ - person Alex H; 02.10.2013
comment
@AaronThomas โดยไม่ต้องทดสอบ ฉันคิดว่าเขาต้องลบโค้ดที่ขึ้นต้นด้วย ' Loop through the subfolders and fill Collection object และตลอดบรรทัดที่คุณระบุ เช่นเดียวกับการลบคำสั่ง Next ที่เกี่ยวข้องกับลูปนั้น ฉันคิดว่าจำเป็นต้องแก้ไขฟังก์ชัน Dir และ Do...While loop เล็กน้อย - person David Zemens; 02.10.2013
comment
ขอบคุณสำหรับความช่วยเหลือของคุณ จะลองดู - person Alex H; 02.10.2013