VBA FileDialog | วิธีเปิด FilesDialog Box โดยใช้รหัส VBA

ไฟล์ Excel VBA

ใน VBA fieldialog เป็นคุณสมบัติที่ใช้แทนอินสแตนซ์ที่แตกต่างกันใน fileialog มีค่าคงที่แตกต่างกันสี่ประเภทซึ่งเรียกว่า msofiledialogfilepicker ซึ่งใช้เพื่อเลือกไฟล์จากพา ธ ที่กำหนดตัวที่สองคือ msofiledialogfolderpicker ซึ่งชื่อที่แนะนำจะใช้ในการเลือก โฟลเดอร์และโฟลเดอร์ที่สามคือ msofiledialog เปิดเพื่อเปิดไฟล์และสุดท้ายคือ msofiledialogsaveas ซึ่งใช้บันทึกไฟล์เป็นไฟล์ใหม่

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

ในฐานะส่วนหนึ่งของโครงการ VBA เราอาจต้องเปิดสมุดงานอื่นและดำเนินการบางอย่างกับพวกเขา ในบทความก่อนหน้านี้ของเรา "VBA Workbook.Open" เราได้แสดงวิธีการเปิดไฟล์ด้วยเส้นทางที่ระบุและไฟล์เฉพาะ เราจำเป็นต้องจัดหาพา ธ โฟลเดอร์และชื่อไฟล์พร้อมนามสกุล แต่ถ้าทุกครั้งที่ผู้ใช้ต้องเลือกไฟล์ต่างๆจากโฟลเดอร์ต่างๆ นี่คือที่ที่ตัวเลือก“ FileDialog” เข้ามาในรูปภาพ

VBA FileDialog Option ทำงานอย่างไร

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

คุณสามารถดาวน์โหลดเทมเพลต VBA FileDialog Excel ได้ที่นี่ - เทมเพลต VBA FileDialog Excel

“ FileDialog”เป็นวัตถุใน VBA ในการใช้ตัวเลือกนี้ก่อนอื่นเราต้องกำหนดตัวแปรเป็น FileDialog

เมื่อตัวแปรถูกประกาศเป็น“ FileDialog” แล้วจะเป็นตัวแปรออบเจ็กต์ ในการเริ่มใช้สิ่งนี้เราต้องตั้งค่าวัตถุโดยใช้ Application.FileDialog

ดังที่เราเห็นในภาพด้านบน FileDialog มีสี่ตัวเลือกด้วย

  • msoFileDialogFilePicker:ตัวเลือกนี้จะเปิดหน้าต่างตัวเลือกไฟล์ต่อหน้าผู้ใช้เพื่อเลือกไฟล์ที่ต้องการตามความต้องการ
  • msoFileDialogFolderPicker:ตัวเลือกนี้จะเปิดกล่องโต้ตอบหรือหน้าต่างด้านหน้าผู้ใช้เพื่อเลือกโฟลเดอร์
  • msoFileDialogOpen:สิ่งนี้จะอนุญาตให้ผู้ใช้เปิดไฟล์ที่เลือกจากโฟลเดอร์
  • msoFileDialogSaveAs:สิ่งนี้จะอนุญาตให้ผู้ใช้บันทึกไฟล์เป็นสำเนาอื่น

ณ ตอนนี้ฉันได้เลือกตัวเลือกของmsoFileDialogFilePicker

ตอนนี้เราต้องออกแบบกล่องโต้ตอบที่ปรากฏต่อหน้าเรา

การใช้ด้วยคำชี้แจงเราสามารถออกแบบกล่องโต้ตอบ

ภายในด้วยคำสั่งใส่จุดเพื่อดูรายการ IntelliSense ของคุณสมบัติและวิธีการของตัวเลือก FileDialog

หากต้องการดูเฉพาะไฟล์ excel เมื่อกล่องโต้ตอบไฟล์เปิดขึ้นเราจำเป็นต้องลบตัวกรองใด ๆ ที่ใช้ก่อน

ตอนนี้เราต้องใช้ตัวกรองใหม่เป็น "ไฟล์ Excel" พร้อมส่วนขยายสัญลักษณ์แทนของไฟล์ excel

ตอนนี้เรามาเปลี่ยนชื่อของกล่องโต้ตอบไฟล์

เราสามารถอนุญาตให้ผู้ใช้เลือกไฟล์ทีละไฟล์เท่านั้นหรือเราสามารถอนุญาตให้เลือกไฟล์หลายไฟล์ได้เช่นกัน สำหรับสิ่งนี้เราต้องใช้“ Allow Multi-Select”

เรามีสองทางเลือกที่นี่ หากเลือก TRUE จะอนุญาตให้ผู้ใช้เลือกไฟล์หลายไฟล์หากเป็น FALSE ผู้ใช้สามารถเลือกได้ทีละไฟล์เท่านั้น

อีกสิ่งหนึ่งที่เราสามารถออกแบบด้วย FileDialog คือเราสามารถยืนยันสิ่งที่ควรเป็นโฟลเดอร์เริ่มต้นเมื่อกล่องโต้ตอบไฟล์ปรากฏขึ้น สำหรับสิ่งนี้ให้ใช้ Initial File Name

สำหรับสิ่งนี้เราต้องพูดถึงโฟลเดอร์เริ่มต้นที่จะเปิดเส้นทางที่อยู่

ในที่สุดเราก็ต้องใช้วิธีการ“ แสดง” เพื่อดูกล่องโต้ตอบไฟล์

รหัส:

ย่อย DoEvents_Example1 () Dim Myfile As FileDialog Set Myfile = Application.FileDialog (msoFileDialogFilePicker) ด้วย Myfile .Filters.Clear .Filters เพิ่ม "ไฟล์ Excel", "* .xlsx?", 1 .Title = "เลือกไฟล์ Excel ของคุณ !! !” .AllowMultiSelect = False .InitialFileName = "D: \ Excel Files" แสดงท้ายด้วย End Sub

ตอนนี้เรียกใช้รหัส VBA เพื่อดูผลลัพธ์

ดังที่เราเห็นในกล่องโต้ตอบไฟล์รูปภาพด้านบนได้เปิดโฟลเดอร์ที่กล่าวถึงตามค่าเริ่มต้น

ตอนนี้เราสามารถเลือกโฟลเดอร์ย่อยและเลือกไฟล์ excel ได้

ดูภาพด้านบนเนื่องจากเราใช้พารามิเตอร์ตัวกรองเป็น "ไฟล์ Excel" เท่านั้น

นี่จะเป็นการเลือกไฟล์จากโฟลเดอร์ที่กล่าวถึง ในการจัดเก็บเส้นทางแบบเต็มเราจำเป็นต้องประกาศตัวแปรอีกหนึ่งตัวเป็นสตริง

Now inside the with statement select “SelectedItems”. Assign the selected items folder path to the newly defined variable.

Now finally show the selected folder path in the VBA message box.

Now I will run the program to see the dialogue box.

Now I have selected the File Name as “1. Charts.xlsx” in the subfolder “Charts”. If I click on OK, we can see the full folder path in the message box.

So, like this, we can use the FileDialog option to select the files from the folder in Excel. Use below code to select the files.

Code:

 Sub DoEvents_Example1() Dim Myfile As FileDialog Set Myfile = Application.FileDialog(msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "*.xlsx?", 1 .Title = "Choose Your Excel File!!!" .AllowMultiSelect = False .InitialFileName = "D:\Excel Files" .Show FileAddress = .SelectedItems(1) End With MsgBox FileAddress End Sub