วิธีค้นหาและแทนที่เส้นทางเชื่อมโยงในไฟล์ Excel หลายไฟล์พร้อมกัน


4

เรามีโฟลเดอร์ขนาดใหญ่ที่มีเอกสาร office บนเซิร์ฟเวอร์ของเรา มันต้องการที่จะเปลี่ยนชื่อของโฟลเดอร์จากไปMehper_repository Planning_reportsเนื่องจากส่วนใหญ่ของ Excel ไฟล์ในโฟลเดอร์ย่อยที่มีการเชื่อมโยงกับแต่ละอื่น ๆ ผมต้องไปหาและแทนที่ทุกเนื้อหาเซลล์เดียวที่มีการ\\FileSrv\Mehper_repository\ \\FileSrv\Planning_reports\ปัญหาคือยูทิลิตี้ค้นหา / แทนที่ของ Excel สามารถค้นหาได้เฉพาะในแผ่นงานหรือสมุดงาน ฉันจะค้นหาภายในโฟลเดอร์ / โฟลเดอร์ย่อยเพียงแค่ค้นหาในสูตรและแทนที่นิพจน์นั้นได้อย่างไร

คำตอบ:


2

ฉันขอแนะนำผลิตภัณฑ์PowerGREPเชิงพาณิชย์:

PowerGREP เป็นเครื่องมือ grep Windows ที่ทรงพลัง ค้นหาไฟล์จำนวนมากอย่างรวดเร็วบนพีซีหรือเครือข่ายของคุณรวมถึงไฟล์ข้อความและไบนารีไฟล์เก็บถาวรที่บีบอัดเอกสาร MS Word, สเปรดชีต Excel , ไฟล์ PDF, ไฟล์ OpenOffice เป็นต้นค้นหาข้อมูลที่คุณต้องการด้วยรูปแบบข้อความที่มีประสิทธิภาพ (นิพจน์ทั่วไป) การระบุรูปแบบของสิ่งที่คุณต้องการแทนที่จะเป็นตัวอักษร ค้นหาและแทนที่ด้วยนิพจน์ปกติหนึ่งหรือหลายนิพจน์เพื่อบำรุงรักษาเว็บไซต์ซอร์สโค้ดรายงาน ฯลฯ แยกสถิติและความรู้ออกจากไฟล์บันทึกและชุดข้อมูลขนาดใหญ่

ภาพ


3

สร้างคำตอบของ TomWij วนรอบทุกเซลล์ค้นหาการอ้างอิงถึง "\ FileSrv \ Mehper_repository \" และแทนที่ด้วย "\ FileSrv \ Planning_reports \" คุณอาจสามารถใช้คอลเลกชัน Cells เพื่อทำมันได้เร็วขึ้น แต่นั่นอาจทำให้คุณสับสนกับสูตรในลักษณะที่ไม่ดี (โดยเฉพาะอย่างยิ่งเนื่องจากสตริงนั้นจะไม่ถูกแยกออก)

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


3

วิธีการแมโคร:

ฉันไม่สามารถตอบคำถามนี้ได้อย่างแน่นอน แต่สิ่งที่เกี่ยวกับการใช้โปรแกรมแมโครดังนั้นสิ่งเดียวที่คุณต้องทำคือเปิดไฟล์แบบหนึ่งต่อหนึ่งและเรียกใช้แมโคร นั่นอาจเป็นไปได้ถ้าคอลเลกชันไม่ใหญ่เกินไปถ้าไม่คุณอาจจะต้องเขียนโปรแกรมโซลูชันที่กำหนดเอง ...


การเขียนโปรแกรมโซลูชันอัตโนมัติที่กำหนดเอง:

การสร้างคำตอบของ A. Scagnelli คุณสามารถใช้ภาษา. NET ที่คุณโปรดปรานและทำ (ตัวอย่าง C #):

รหัสหลอก:

openExcel

// Fills the list recursively with aboslute paths of the subfolders of path.
enumerateFolder(list, path)

// Enumerate paths. 
foreach(path in list)
{
   // Enumerate files
   foreach(file in path)
   {
      openFileInExcel
      replaceFileContents
      closeFileInExcel
   }
}

closeExcel

คำอธิบาย:

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

เปิด Excel ไว้ระหว่างอัลกอริทึมทั้งหมดเพียง 'เปิดแทนที่และปิด' ในลูปด้านใน


ขอบคุณสำหรับคำแนะนำของคุณทอม ปัญหาคือการรวบรวมมีขนาดใหญ่เกินไป ดังนั้นฉันเดาว่าฉันต้องการโซลูชันการเขียนโปรแกรม
Mehper C. Palavuzlar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.