اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم ...

كثرت التساؤلات في الفترة الأخيرة عن كيفية حفظ و فتح مصنف الاكسل بواسطة الكود ، لذلك سأتناول إن شاء الله في هذا الموضوع الطرق المختلفة لحفظ وفتح مصنفات الاكسل .

- أبسط الطرق المستخدمة لحفظ وفتح المصنفات تستخدم الأسلوبين 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

أرجو أن أكون قد وفقت في نقل المعلومة .

تحياتي :fff:

  • 2 weeks later...
قام بنشر

السلام عليكم ورحمة االله وبركاته

الأخ محمد حجازي

عندما جربت SaveCopyAs نجحت ونسخ الملف ولكن تكون أيقونة الملف غير معروفة أنها ملف إكسل فهل يمكن تعييرها.

تحياتي،،

منسق

قام بنشر

السلام عليكم ...

أخ منسق مشكلتك بسيطة و يمكنك حلها عن طريق برامترات التعليمة 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

قام بنشر

السلام عليكم ورحمة الله وبركاته

شكراً جزيلاً أخي محمد حجازي

هذا ما كنت أبحث عنه

تحياتي،،

منسق

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information