السلام عليكم ورحمة الله وبركاته
إذا كنت بصدد بناء برنامج أو مشروع في الإكسيل ، فإنه لابد أن تصادف إمكانية استخدامك لملفات أخرى ، وتكون الملفات ضمن مجلد محدد أو مجموعة من المجلدات ..
لذا في الأكواد يمكنك وضع مسار المجلد الذي تريد التعامل معه بشكل ثابت بأن تحدد مكان المجلد بالضبط
والسؤال ماذا لو كان المجلد متغير أي ليس له مكان ثابت أو أنك سترسل مشروعك لمستخدمين آخرين أو كان لديك العديد من المجلدات التي ستتعامل معها؟
في هذه الحالة لابد من طريقة أسهل تحدد بها مسار المجلد بدلاً من تحديده في الكود ...
والمفهوم العام للموضوع هو إمكانية عمل استعراض للمجلدات Browse ، باستخدام الخاصية
CODE
Application.FileDialog(msoFileDialogFolderPicker)<br />
الملف المرفق به فورم وعلى الفورم يوجد تكست بوكس txtPath والذي سيحمل مسار المجلد .. وزر أمر cmdBrowse والذي سيمكنك من اختيار المجلد الذي تريده
وبعد اختيار المجلد يتم وضع مسار المجلد في التكست بوكس
وعند بدء تشغيل الفورم يتم وضع قيمة افتراضية في التكست بوكس وهو سط المكتب للمستخدم أياً كان اسم المستخدم
CODE
Private Sub UserForm_Initialize()
txtPath = Environ("USERPROFILE") & "Desktop"
End Sub
أما الكود المستخدم في زر الأمر cmdBrowse فهو بالشكل التالي
CODE
Private Sub cmdBrowse_Click()
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select Folder"
.ButtonName = "Confirm"
.InitialFileName = Environ("USERPROFILE") & "Desktop"
If .Show = -1 Then
txtPath = .SelectedItems(1) & ""
End If
End With
End Sub
حيث يقوم بفتح نافذة لاستعراض المجلدات ويبدأ تلك النافذة من مسار افتراضي يمكنك تحديد في الكود من خلال السطر التالي
CODE
.InitialFileName = Environ("USERPROFILE") & "Desktop"
وإليكم صورة توضيحية لعمل الكود
أرجو أن يكون الكود مفيد لكم في بناء برامجكم في الإكسيل
رابط الملف من هنا
إعداد وتقديم / ياسر خليل أبو البراء