Excel / VBA - ดึงข้อมูลจากสมุดงานที่ปิด
[Excel-VBA] อ่านในสมุดงานที่ปิด
มีหลายวิธีภายใต้ VBA เพื่ออ่านข้อมูลจากสมุดงาน Excel โดยไม่ต้องเปิดในภายหลัง วิธีการเหล่านี้ส่วนใหญ่เป็นที่รู้จักกันดีในเรื่องความซับซ้อน แต่มีเคล็ดลับเล็กน้อยในการหลีกเลี่ยงปัญหานี้โดยไม่ต้องใช้การเชื่อมต่อ OLE DB (โหมดอ่านอย่างเดียว)บทนำ
เราจะพยายามดึงข้อมูลไปยังสมุดงาน "สรุป" ของเรา ข้อมูลอยู่ในช่วงของเซลล์ "A1: F10" ของสมุดงาน "Sheet1" จาก "แหล่งที่มา" ต่อไป นี้อยู่ในไดเรกทอรี "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"
- ก่อนเปิดสมุดงานและป้อน "Pijaku" ใน Sheet1 จากเซลล์ A1 ถึงเซลล์ F10 และบันทึกเป็น "source.xls" ใน "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"
- ให้เราปิดสมุดงานนี้
- เปิดสมุดงานที่สองและบันทึกเป็น " Recap.xls " (บนเดสก์ท็อป)
วิธีการโดย Excel:
ในสมุดงาน Recap.xls ของคุณ:
ใส่ชื่อที่กำหนดไว้
- เมนู: ใส่
- ตัวเลือก: ชื่อ
- คลิกที่: ตั้ง
- ชื่อในสมุดงาน => type: range
- หมายถึง => Enter = 'C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \ [source.xls] Feuil1'! $ A $ 1: $ F $ 10
- คลิกที่เพิ่ม
- ในสมุดงานของคุณป้อนสูตรในช่วง A1: =
- และตรวจสอบ
- ยืดสูตรนี้จาก A1 ถึง F10 ...
รหัส VBA
ผู้นำเข้ารายย่อย DonneesSOOuvrir ()Dim Chemin As String, Fichier As String
Chemin = "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"
Fichier = "source.xls"
ThisWorkbook.Names.Add "plage", _
RefersTo: = "= '" & Chemin & "[" & Fichier & "] Feuil1'! $ A $ 1: $ F $ 10"
ด้วยผ้าปูที่นอน ("Feuil2")
. [A1: F10] = "= ทุ่งหญ้า"
. [A1: F10] .Copy
แผ่นงาน ("Feuil1") ช่วง ("A1") PasteSpecial พิเศษ xlPasteValues
. [A1: F10] .Clear
จบด้วย
ส่วนท้าย
สังเกตได้ว่า
เหนือสิ่งอื่นใดตรวจสอบให้แน่ใจว่าเส้นทางไปยังไดเรกทอรีการสะกดมีความเกี่ยวข้องกัน ตรวจสอบด้วยว่า "\" มีอยู่ระหว่างเส้นทางไดเรกทอรีและชื่อของสมุดงาน
ตัวอย่างการใช้งาน
รหัสนี้จะวนสมุดงานทั้งหมดในไดเรกทอรีและแยกเนื้อหาของเซลล์ A1 (แผ่นที่ 1) ในกรณีนี้เช่นวันที่
ตัวเลือกที่ชัดเจนวันผู้นำเข้าย่อย ()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String
ตั้งค่า objShell = CreateObject ("Shell.Application")
ตั้งค่า objFolder = objShell.BrowseForFolder (& H0 &, "Choisir un répertoire", & H1 &)
ถ้า objFolder ไม่มีอะไรแล้ว
MsgBox "ละทิ้งopérateur", vbCritical, "Annulation"
อื่น
คอลัมน์ (1) .NumberFormat = "m / d / yyyy"
Chemin = objFolder.ParentFolder.ParseName (objFolder.Title) .Path & "\"
[B1] = Chemin
fichier = Dir (Chemin & "* .xls")
ทำในขณะที่เลน (fichier)> 0
ถ้า fichier ThisWorkbook.Name แล้ว
ThisWorkbook.Names.Add "Plage", _
RefersTo: = "= '" & Chemin & "[" & fichier & "] Feuil1'! $ A $ 1"
ด้วยผ้าปูที่นอน ("Feuil2")
. [A1] = "= Plage"
. [A1] .Copy
แผ่นงาน ("Feuil1") ช่วง ("A" และแถวจำนวน). สิ้นสุด (xlUp) .Offset (1, 0) .PasteSpecial xlPasteValues
แผ่นงาน ("Feuil1"). ช่วง ("A" & Rows.Count) .End (xlUp) .Offset (0, 1) = fichier
จบด้วย
สิ้นสุดถ้า
fichier = Dir ()
ห่วง
สิ้นสุดถ้า
ส่วนท้าย
ดาวน์โหลด
คุณสามารถดาวน์โหลด:
- สมุดงานต้นฉบับ
- สรุปสมุดงาน
- ยังสามารถดาวน์โหลดไฟล์ Zip ที่แสดงการวนซ้ำได้อีกด้วย