آموزش اکسس

آموزش مایکروسافت اکسس - Access Training

آموزش اکسس

آموزش مایکروسافت اکسس - Access Training

آموزش اکسس

ارائه آموزش‌ها و نکات کلیدی مربوط به نرم افزار اکسس.
جزییات و نکات ریز اکسس را با ما داشته باشید و پویایی دوباره‌ای به برنامه خودتان دهید.

آخرین نظرات

بسم الله الرحمن الرحیم

سلام

در تاریخ 1401/08/09 بازبینی شد

احتمال می‌دهم این آموزش یکی از آموزش‌های کامل و مفصل در مورد تابع FileDialog باشد. چون خودم به نوعی نیاز به این تابع داشتم و در منابع فارسی چیز زیادی در موردش پیدا نکردم، این آموزش را منتشر می‌کنم تا نیاز دوستان را مرتفع کند.

VBA FileDialog - باز کردن، انتخاب و ذخیره فایل‌ها و پوشه‌ها

#1 تابع Application.FileDialog

قبل از هر چیزی بیایید در مورد Application.FileDialog بیشتر بدانیم!

 

#1.1 Syntax یا نحوه نگارش

نحوه نگارش و قرارگیری کلمات و عبارات به صورت درست در تابع Application.FileDialog به صورت زیر است:

Application.FileDialog( fileDialogType as MsoFileDialogType )

 

#1.2 Parameter یا پارامتر

MsoFileDialogType

شما در این بخش مشخص میکنید که دیالوگ باکس یا کادر محاوره‌ای به چه منظور باز شود:

جدول شماره یک
مقدار توضیحات
msoFileDialogOpen کادر محاوره‌ای برای باز کردن
msoFileDialogSaveAs کادر محاوره‌ای برای ذخیره با عنوان
msoFileDialogFilePicker کادر محاوره‌ای انتخاب پرونده
msoFileDialogFolderPicker کادر محاوره‌ای انتخاب پوشه

 

 

#2 خواص و توابع موجود در Application.FileDialog

#2.1 خصوصیت‌های موجود در FileDialog

در جدول زیر خصوصیت‌های موجود در تابع FileDialog به صورت کامل موجود است که میتوانید علاوه بر آشنایی با آنها، در موارد مناسب نیز به کارگیری شود.

 

جدول شماره دو
خصوصیت توضیحات
AllowMultiSelect

اجازه دهید بیش از یک فایل یا پوشه را انتخاب کنید.

ButtonName

متن دکمه انتخاب یا دکمه عمل کننده در کادر محاوره‌ای را مشخص میکند.

DialogType

تغییر عملکرد MsoFileDialogType (جدول شماره یک)

Filter

یک فیلتر خاص برای نمایش و نوع فایل‌های مورد نظر ایجاد میکند. مثلا زمانی که نیاز است در کادر محاوره‌ای

فقط تصاویر با فرمت‌های PNG، JPG و یا JPEG نمایش داده شود.

InitialFileName

مسیر اولیه‌ای که کادر محاوره‌ای به صورت پیشفرض آدرس آن مسیر را نمایش میدهد. مثلا درایور C

InitialView

نمایش پرونده اولیه میتواند بصورت یکی از حالات زیر باشد:

 

مقدار

توضیحات

msoFileDialogViewDetails

نمایش پرونده‌ها با جزییات

msoFileDialogViewLargeIcons

نمایش پرونده‌ها با آیکن بزرگ

msoFileDialogViewList

نمایش پرونده‌ها بصورت لیست

msoFileDialogViewPreview

نمایش پرونده‌ها بصورت پیشنمایش

msoFileDialogViewProperties

نمایش پرونده‌ها بهمراه خصوصیت‌ها

msoFileDialogViewSmallIcons

نمایش پرونده‌ها با آیکن کوچک

msoFileDialogViewThumbnail

نمایش پرونده‌ها با تصاویر بندانگشتی

msoFileDialogViewWebView

نمایش پرونده‌ها در حالت وب

SelectedItems مجموعه‌ای از نوع FileDialogSelectedItems و با تمامی موارد انتخاب شده.
Title عنوان پنجره کادر محاوره‌ای باز شده.

 

#2.2 FileDialog Show

Application.FileDialog دارای دو functions عملکرد Show و Execute است. در عمل شما فقط به تابع Show نیاز دارید. اما عملکرد تابع Show چیست؟

تابع Show در واقع مشخص میکند که در کادر محاوره‌ای پرونده یا پوشه‌ای انتخاب شده است یا خیر.

در واقع تابع Show در صورت تایید یا انصراف دو مقدار زیر را بر میگرداند:

  • (-1) کاربر دکمه انتخاب یا OK را فشار داده
  • (0) کاربر دکمه انصراف، Cancel و یا هر چیز دیگری را فشرده است.

 

#3 انتخاب فایل در msoFileDialogFilePicker

نوع کادر محاوره‌ای msoFileDialogFilePicker اجازه می‌دهد تا یک یا چند پرونده را انتخاب کنید.

#3.1 انتخاب یک پرونده در VBA

رایجترین روند انتخاب یک پرونده که از کاربر میخواهد فقط یک پرونده را انتخاب کند، در قطعه کد زیر موجود است:

Dim fDialog As FileDialog, result As Integer
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    
   'اختیاری: ویژگی‌های کادر محاوره‌ای
   fDialog.AllowMultiSelect = False
   fDialog.title = "Select a file"
   fDialog.InitialFileName = "C:\"

   'اختیاری: افزودن فیلترهای مختلف
   'خط زیر تمامی فیلتر‌های احتمالی را حذف میکند و دو خط بعد آن فیلتر مورد نظر را اعمال میکند
   fDialog.Filters.Clear
   fDialog.Filters.Add "Excel files", "*.xlsx"
   fDialog.Filters.Add "All files", "*.*"

   'وضعیت انتخاب پرونده را مشخص میکند که -1 به معنای موفقیت آمیز بودن است
   If fDialog.Show = -1 Then
      Debug.Print fDialog.SelectedItems(1)
   End If

 

که نتیجه کد بالا میتواند چیزی شبیه زیر باشد:

C:\New Folder\Stu List.xlsx

 

#3.2 انتخاب چند فایل در VBA

روند انتخاب یک پرونده که از کاربر میخواهد یک یا چند پرونده را انتخاب کند، در قطعه کد زیر موجود است. فقط در نظر داشته باشید خصوصیت AllowMultiSelect برابر با True باشد.

Dim fDialog As FileDialog, result As Integer
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    
   'دقت کنید!
   fDialog.AllowMultiSelect = True

   'اختیاری: ویژگی‌های کادر محاوره‌ای
   fDialog.title = "Select a file"
   fDialog.InitialFileName = "C:\"

   'اختیاری: افزودن فیلترهای مختلف
   'خط زیر تمامی فیلتر‌های احتمالی را حذف میکند و دو خط بعد آن فیلتر مورد نظر را اعمال میکند
   fDialog.Filters.Clear
   fDialog.Filters.Add "Excel files", "*.xlsx"
   fDialog.Filters.Add "All files", "*.*"

   'وضعیت انتخاب پرونده را مشخص میکند که -1 به معنای موفقیت آمیز بودن است
   If fDialog.Show = -1 Then
      For Each it In fDialog.SelectedItems
         Debug.Print it
      Next it
   End If

 

که نتیجه کد بالا میتواند چیزی شبیه زیر باشد:

C:\New Folder\Stu List Class1.xlsx 
C:\New Folder\Stu List Class2.xlsx 
C:\New Folder\Stu List Class3.xlsx

 

#4 انتخاب پوشه در msoFileDialogFilePicker

انتخاب پوشه از انتخاب پرونده راحتتر است. لذا شما فقط مجاز به انتخاب یک پوشه در کار محاوره‌ای می‌باشید.

#4.1 انتخاب یک پوشه در VBA

کادر محاوره‌ای زیر از کاربر درخواست انتخاب یک پوشه را میکند:

Set fDialog = Application.FileDialog (msoFileDialogFolderPicker)

'انتخابی: ویژگی کادر محاوره‌ای
fDialog.title = "Select a folder"
fDialog.InitialFileName = "C:\"

If fDialog.Show = -1 Then
  Debug.Print fDialog.SelectedItems(1)
End If
کادر محاوره‌ای msoFileDialogFolderPicker به شما فقط مجوز انتخاب یک پوشه را میدهد و روشن است که شما در این حالت نمی‌توانید اقدام به انتخاب هیچ پرونده‌ای کنید.

 

#5 بازکردن پرونده در msoFileDialogOpen

بازکردن پرونده بسیار ساده است چراکه معمولا شامل یک پرونده می‌شود. تنها تفاوت آن، تعیین برچسب و متن دکمه است که در حالت انتخاب پرونده و بازکردن پرونده متفاوت است.

کادر محاوره‌ای بازکردن پرونده در واقع هیچ پرونده‌ای را باز نمی‌کند! بلکه فقط به کاربر اجازه می‌دهد تا پرونده‌هایی را برای بازکردن انتخاب کند. در این صورت شما باید پرونده‌هایی را برای خواندن یا نوشتن باز کنید.

نگاهی به دو مورد زیر بیاندازید:

 

#5.1 بازکردن پرونده در VBA

کادر محاوره‌ای زیر از کاربر میخواهد تا یک فایل را برای بازکردن انتخاب کند:

Dim fDialog As FileDialog, result As Integer, it As Variant
Set fDialog = Application.FileDialog (msoFileDialogOpen)
    
'انتخابی: ویژگی کادر محاوره‌ای
fDialog.title = "Select a file"
fDialog.InitialFileName = "C:\"
    
'اختیاری: افزودن فیلترهای مختلف
'خط زیر تمامی فیلتر‌های احتمالی را حذف میکند و دو خط بعد آن فیلتر مورد نظر را اعمال میکند
fDialog.Filters.Clear
fDialog.Filters.Add "All files", "*.*"
fDialog.Filters.Add "Excel files", "*.xlsx"
  
If fDialog.Show = -1 Then
  Debug.Print fDialog.SelectedItems(1)
End If

 

#6 ذخیره پرونده در msoFileDialogSaveAs

ذخیره سازی یک پرونده هم به همین سادگیست، و تنها همان برچسب و متن دکمه‌ها هست که متفاوت میباشند.

کادر محاوره‌ای با عنوان ذخیره پرونده، مانند مورد قبلی در واقع هیچ پرونده‌ای را ذخیره نمیکند، بلکه به کاربر فقط اجازه میدهد تا یک نام را برای پرونده مشخص کند. لذا شما باید پرونده‌ها را برای خواندن یا نوشتن باز کنید. (در مورد نوشتن پرونده در VBA بیشتر بدانید)

#6.1 ذخیره سازی پرونده در VBA

کادر محاوره‌ای زیر از کاربر یک مسیر را برای ذخیره سازی پرونده‌ها انتخاب کند:

Dim fDialog As FileDialog, result As Integer, it As Variant
Set fDialog = Application.FileDialog(msoFileDialogSaveAs)

'انتخابی: ویژگی کادر محاوره‌ای
fDialog.title = "Save a file"
fDialog.InitialFileName = "C:\"

If fDialog.Show = -1 Then
  Debug.Print fDialog.SelectedItems(1)
End If
دقت کنید که کادر محاوره‌ای msoFileDialogSaveAs از خصوصیت فیلتر پشتیبانی نمی‌کند.

 

#7 فیلترهای FileDialog

شاید یکی از مشکلات کار با Application.FileDialog، اعمال فیلترهای مختلف بر روی کادر محاوره‌ای باشد. در زیر برخی از نمونه‌های معمول جهت فیلترهای چندگانه پرونده که به درستی اعمال شده‌اند موجود است.

دقت کنید برای استفاده از چند فیلتر پرونده لازم است از Semicolor یا (;) استفاده کنید.

Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogOpen)

'...

'انتخابی: ویژگی کادر محاوره‌ای
fDialog.Filters.Clear
fDialog.Filters.Add "All files", "*.*"
fDialog.Filters.Add "Excel files", "*.xlsx;*.xls;*.xlsm"
fDialog.Filters.Add "Text/CSV files", "*.txt;*.csv"

'...

نکته‌ای که در مورد فیلترهای FileDialog باید مورد توجه قرار بگیرد این است که: همانطور که در توضیحات کدهای قبلی ذکر شد، حتما قبل از اعمال فیلتر در کادر محاوره‌ای FileDialog از دستور Clear جهت حذف فیلترهای سابق استفاده کنید. FileDialog با تمام خصوصیت‌هایی که دارد، ممکن است تا در برخی از موارد فیلترهای سابق را همچنان بر روی کادر محاوره‌ای خود اعمال کند، لذا استفاده از این دستور را فراموش نکنید!.

 

این مقاله با ویرایش‌های بسیاری از سایت analystcave.com منتشر شده است.

لذا در صورت استفاده از متن این مقاله حتما آدرس این صفحه را به عنوان منبع ذکر کنید.

  • میـMiRـزا
  • http://access-training.blog.ir/post/41

FileDialog

نظرات  (۵)

سلام با تشکر از مطالب مفیدتون
من میخام محدوده مورد نظر در چاپ بصورت JPG ذخیره بشه

چه کدی باید بنویسم که کامند باتوم را که زدم نام فایل را سوال کنه و بعدا ذخیره کنه

با سلام

چطور آدرس فایل انتخاب شده + اسم و پسوند فایل انتخابی را در یک تکست باکس کپی کنیم.

 

سپاس

پاسخ:
سلام
موردی که مد نظرتون هست در بند شماره #3 راهنمایی شده!

دمت گرم آقا خیلی بکارم اومد.

پاسخ:
نوش جونتون
  • علی شعبانی فرد
  • سلام، با تشکر ، چطور با آدرس های فارسی کار کنیم، جای فولدر های فارسی تغییر میکند. و آدرس اشتباه میشود.

     

     

    پاسخ:
    سلام
    خواهش میکنم؛ با این فرمونی که مایکروسافت آفیس داره پیش میره، هنوز مشکلات زیادی با یونیکد فارسی در بخش کدنویسی داره. انگلیسی استفاده کنید.
    دوستان دقت کنند برای استفاده از قابلیت کادر محاوره‌ای در برنامه اکسس لازم است تا کتابخانه زیر را در بخش رفرنس‌های VBA فعال کنید.

    Microsoft Office xx.x Object Library

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">