محمد حجازي قام بنشر فبراير 19, 2005 قام بنشر فبراير 19, 2005 السلام عليكم ... كثرت التساؤلات في الفترة الأخيرة عن كيفية حفظ و فتح مصنف الاكسل بواسطة الكود ، لذلك سأتناول إن شاء الله في هذا الموضوع الطرق المختلفة لحفظ وفتح مصنفات الاكسل . - أبسط الطرق المستخدمة لحفظ وفتح المصنفات تستخدم الأسلوبين SaveAs، Open المبسطين: Sub SaveWorkBook() Workbooks("MAH").SaveAs Filename:="C:\MY WORK\New_MAH" End Sub Sub OpenWorkbook() Workbooks.Open Filename:="C:\MY WORK\MAH" End Sub نلاحظ أنه يجب علينا الإشارة بشكل صريح إلى الملف الواجب حفظه(خلافاً لأسلوب فتح الملف) ، كما نلاحظ أنه يمكننا حفظ الملف باسم مخالف للاسم الأصلي (New_MAH مثلاً). يمكننا الاستفادة من الأسلوب Open في القيام بعمليات على الملف المفتوح وذلك من خلال إسناد الملف المفتوح في متغير: Sub OpenWorkbook() Set MyBook = Workbooks.Open(Filename:="C:\MY WORK\MAH") MsgBox MyBook.Sheets(1).Range("A1").Value End Sub في الكود السابق قمنا بفتح الملف MAH ومن ثم قمنا بعرض محتويات الخلية A1 الموجودة في أول ورقة عمل في هذا الملف . لاحظ أننا استخدمنا القوسين في الأسلوب Open وذلك لأننا نتعامل هنا مع القيم المسترجعة من هذا الأسلوب. - عندما يكون مسار الملف (المفتوح/المحفوظ) متغيراً بصورة مستمرة ، في هذه الحالة يمكننا استخدام متغير نصي لإرجاع المسار واسم الملف وبذلك يمكننا تغيير المسار متى نشاء (طبعاً تبعاً لما تمليه علينا الظروف) : Sub OpenWorkbook() Dim MyPath As String MyPath = "C:\MY WORK\MAH" Workbooks.Open Filename:=MyPath End Sub يمكننا تغيير محتويات المتغير MyPath بواسطة كود نكتبه لتلك المهمة ، كما يمكننا الاستعانة بعدد من الأساليب لإسناد مسار الملف المطلوب في المتغير MyPath : 1. يمكننا الاعتماد على مستكشف (شبيه بمستكشف الويندوز) من أجل تحديد مسار الملف ، وذلك من خلال الاستعانة بالأسلوبين GetSaveAsFilename و GetOpenFilename : Sub SaveWorkBook() Dim MyPath As String MyPath = Application.GetSaveAsFilename If MyPath = "False" Then Exit Sub Workbooks("MAH").SaveAs Filename:=MyPath End Sub Sub OpenWorkbook() Dim MyPath As String MyPath = Application.GetOpenFilename If MyPath = "False" Then Exit Sub Workbooks.Open Filename:=MyPath End Sub لاحظ أننا أضفنا الشرط IF من أجل تلافي الخطأ الذي قد يحصل عندما لا يرجع المستكشف أي قيمة (عندما نقوم بالضغط على الزر Cancel). 2. يمكننا الاعتماد على مسار ملف نشط (قيد الاستخدام) ، وذلك من خلال استخدام الأسلوب Path مع الهدف Workbooks : Sub SaveWorkBook() Dim MyPath As String MyPath = Workbooks("MAH").Path & "\New_MAH" Workbooks("MAH").SaveAs Filename:=MyPath End Sub 3. يمكنك الاعتماد على مسار فهرس المكتبة الخاصة بالاكسل (المجلد الذي يحتوي على الملف التنفيذي للاكسل) ، وذلك من خلال استخدام الأسلوب Path مع الهدف Application : Sub OpenWorkbook() Dim MyPath As String MyPath = Application.Path & "\MAH" Workbooks.Open Filename:=MyPath End Sub عند القيام بحفظ ملف فوق آخر موجود تظهر لك رسالة تخبرك بأنك على وشك الحفظ فوق ملف موجود بالفعل وتسألك فيما إذا كنت ترغب بالمتابعة. إذا كنت لا ترغب بظهور الرسالة السابقة ، فعليك هنا إضافة سطرين إضافيين للكود ، السطر الأول لإزالة الخاصية DisplayAlerts من التطبيق و الثاني لإعادة تمكينها (بعد الانتهاء من حفظ الملف) ، مثال: Sub SaveWorkBook() Dim MyPath As String MyPath = Application.GetSaveAsFilename If MyPath = "False" Then Exit Sub Application.DisplayAlerts = False Workbooks("MAH").SaveAs Filename:=MyPath Application.DisplayAlerts = True End Sub لاحظ أن الأسلوب SaveAs يقوم بتنشيط الملف المنشأ (المحفوظ للتو) ويضعه بالوضعية النشطة الجاهزة للاستخدام ويقوم بالوقت ذاته بإغلاق الملف الأصلي (المصدر) ، ويمكنك الاستعاضة عن الأسلوب SaveAs بالأسلوب SaveCopyAs وذلك في حالة رغبتك بالإبقاء على الملف الأصلي في حالة نشطة بعد عملية التخزين. مثال: Sub SaveWorkBook() Workbooks("MAH").SaveCopyAs Filename:="C:\MY WORK\MAH_NEW.xls" End Sub بفرض أن مسار الملف موجود في في خلية ما من ورقة العمل (الخلية A1 الموجودة في ورقة العمل الأولى): Sub SaveWorkBook() Workbooks("MAH").SaveAs Filename:=Sheets(1).Range("A1").Value End Sub أرجو أن أكون قد وفقت في نقل المعلومة . تحياتي
منسق قام بنشر مارس 1, 2005 قام بنشر مارس 1, 2005 السلام عليكم ورحمة االله وبركاته الأخ محمد حجازي عندما جربت SaveCopyAs نجحت ونسخ الملف ولكن تكون أيقونة الملف غير معروفة أنها ملف إكسل فهل يمكن تعييرها. تحياتي،، منسق
محمد حجازي قام بنشر مارس 1, 2005 الكاتب قام بنشر مارس 1, 2005 السلام عليكم ... أخ منسق مشكلتك بسيطة و يمكنك حلها عن طريق برامترات التعليمة GetSaveAsFilename ، لاحظ الكود (مع توضيح لعدد من برامترات التعليمة GetSaveAsFilename) : Sub SaveWorkBook() Dim MyPath As String MyPath = Application.GetSaveAsFilename(InitialFileName:="mah", FileFilter:="Excel Files (*.xls), *.xls", Title:="أدخل اسم الملف الذي تريد حفظه") If MyPath = "False" Then Exit Sub Application.DisplayAlerts = False Workbooks("MAH").SaveCopyAs Filename:=MyPath Application.DisplayAlerts = True End Sub
منسق قام بنشر مارس 2, 2005 قام بنشر مارس 2, 2005 السلام عليكم ورحمة الله وبركاته شكراً جزيلاً أخي محمد حجازي هذا ما كنت أبحث عنه تحياتي،، منسق
الردود الموصى بها