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

ماكرو لحفظ الملف باسم تلقائى


إذهب إلى أفضل إجابة Solved by محمد عبد الشفيع,

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

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

رمضان كريم وكل عام وانتم بخير

اريد عمل ماكرو في ملف يقوم بفتح ملف جديد ويحفظه باسم تلقائى بحيث عندما اكرر عملية الضغط علي زر الماكرو لا يعطيني شاشة الاستبدال لوجود الملف مسبقا بل يقوم الماكرو بتغيير اسم الملف تلقائياmacro.zip

تم تعديل بواسطه medo_ab
رابط هذا التعليق
شارك

أخي الحبيب يرجى تغيير اسم الظهور للغة العربية

 

جرب الكود التالي

Sub Create_Save_Workbook()
'يقوم الكود بإنشاء مصنف في نفس مسار المصنف الذي يحوي الكود ويحفظه باسم تلقائي
'----------------------------------------------------------------------------
    Dim WB As Workbook
    Set WB = Workbooks.Add
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        WB.SaveAs Filename:=ThisWorkbook.Path & "\Yasser_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xlsx"
        WB.Close True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

  • Like 2
رابط هذا التعليق
شارك

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

مزيد من التوضيح لكي لا يطول الموضوع بدون داعي

رابط هذا التعليق
شارك

شكرا يا استاذ ياسر الفكرة كما قلت هي انشاء نلف جديد ليحتوي علي جدول او تقرير يتم نسخه من الملف الاصلي للملف الجديد ويقوم بحفظ الملف الجديد باسم يتغير في كل مرة اريد تكرار نفس العملية حيث ان جدول البيانات يتغير كل فترة فيكون الملف الجديد بمثابة تقرير منفصل وانا لم اجرب الكود الذي ارفقته وربما يكون هو المطلوب

رابط هذا التعليق
شارك

شكرا لتعبك معايا انا خدت الجزء بتاع اسم الفايل من الكود بتاعك وكتبتبه عندي وتم المطلوب وده الملف للافادة بس الفولدر يكون علي d

Macro.rar

رابط هذا التعليق
شارك

اجابة سيادتك اخذت جزء اسم الفايل من كودك وحطيته في الكود بتاعي والمرفق الاخير هو الاجابة والحل النهائي انا حطيته للافادة للي يحب يطلع علي الفكرة

رابط هذا التعليق
شارك

أخي الحبيب

يرجى تغيير اسم الظهور للغة العربية ومراعاة التوجيهات من خلال موضوع التوجيهات في الموضوعات المثبتة

 

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

أرجو أن تكون الفكرة قد وصلت

تقبل تحياتي وكل عام وأنت بخير :fff: :fff: :fff:

رابط هذا التعليق
شارك

معذرة لم اكن اعرف ما قصدك باسم الظهور او افضل اجابة الان عرفت وبالمرة ارفقت ملف جديد فيه يتم حفظ الملف الذي يتم انشاؤه في نفس مسار الملف الاصلي مثل ما في كودك

macro.zip

رابط هذا التعليق
شارك

بعد اذن الاستاذ ياسر استفسار صغير ومهم دلوقتي في الملف النهائي المرفق بالمشاركة الاخيرة انا بانسخ جدول من الملف الاساسي للملف الجديد وبيتم عملية النسخ والحفظ والغلق للملف الجديد بدون مشاكل ولكن اذا كان هناك اكثر من جدول اريد نسخه للملف الجديد في كل مرة يجب التبديل بين الملفين والمشكلة هنا كيف احدد في الكود اسم الملف الجديد لتنشيطه حيث انني لا اعرف الاسم فارجو منك مساعدتي في هذه الخطوة

رابط هذا التعليق
شارك

أخي الكريم عند أخذ نسخة من الملف للملف الجديد لا يشترط تنشيط الملف الجديد حيث أنك لو اعتمدت على السطر الذي يقوم بتغيير اسم الملف ستجد أن اسم الملف الجديد سيتغير كلما نفذت الكود لأنه يعتمد على تنسيق الثواني فيعيطك ملف جديد بالجداول الجديدة

إذا لم يكن الأمر كما فهمت يرجى مزيد من التوضيح

رابط هذا التعليق
شارك

اخي المحترم اشكرك لتواصلك المستمر ما اقصده هو انه مثلا عندي ورقتين عمل في الملف الاساسي في كل ورقة عمل جدول اريد عند الضغط علي زر الماكرو يقوم بتنفيذ الاتي : انشاء ملف جديد ثم يتم نسخ الجدول الذي في ورقة العمل الاولي في الملف الاساسي الي ورقة العمل الاولي في الملف الجديد ثم يتم نسخ الجدول الذي في ورقة العمل الثانية في الملف الاساسي الي ورقة العمل الثانية في الملف الجديد ثم يقوم بحفظ الملف الجديد في نفس مكان الملف الاساسي باسم تلقائي مثلما في كودك ثم يتم غلق الملف الجديد

رابط هذا التعليق
شارك

وفي حالة تغير البيانات في الجدولين بالملف الاساسي اضغط علي زر الماكرو ليقوم بنفس العملية السابقة وبالتالي سيكون اسم الملف الجديد مختلف عما قبله وهكذا وبذلك يصبح عندي اكثر من ملف غير الاساسي في كل منهم بيانات مختلفة عن الاخر

رابط هذا التعليق
شارك

ولا اريد نسخة من الملف الاساسي ككل بل فقط ما قمت بتحديده من جداول لان الملف الاساسي كبير به بينات وجداول كثيرة فقط نقلت الفكرة في هذا الملف لمعرفة كيفية عمل الكود ثم انقلها للملف الكبير الذي عندي

رابط هذا التعليق
شارك

اسف علي الاطالة وارجو ان اكون قد اوضحت المطلوب وليس مهم ان يتم تنفيذ الفكرة بكود الاسم المرتبط بالثواني بل باي كود او طريقة يمكن الوصول بها للمطلوب

تم تعديل بواسطه محمد عبد الشفيع
رابط هذا التعليق
شارك

ياسر  قل امين ان الله  ييسر امر ك   بالدنيا  و الاخره 

 

لما  تقدمه من مساعدة    لمرتادي الموقع  

 

 

شكرا لك وبارك الله فيك وبجميع الاخوه الفضلاء  الذين لا يالون جهد في مساعده الاخرين 

رابط هذا التعليق
شارك

بارك الله فيك أخي الحبيب أبا سليمان

ويسر الله أمرك وغفر لك ذنبك

 

أخي محمد عبد الشفيع

مشاركات متتالية .. توضح فيها طلبك من غير ملف مرفق يصف فعلياً حالة الملف ....

يرجى وضع الملف الأصلي وإزالة البيانات الحساسة بالملف أو استبدالها ببيانات وهمية .. للإطلاع على الملف وعمل اللازم ..

لا أحب التخمين لأنه يضيع الكثير من الوقت والجهد ..

ضع ملف يعبر عن طلبك بكل دقة ووضح طلبك مرة أخرى بكل دقة وإن شاء الله تجد المساعدة

تقبل تحياتي

رابط هذا التعليق
شارك

  • أفضل إجابة

اخي ياسر اعذرني للاطالة الملفق المرفق به ما اريد ان افعله ولقد فعلت ذلك بالفعل حيث انني جعلت الماكرو يقوم بالنسخ من ورقة ١ في الملف الاساسي واللصق في الورقة ١ في الملف الجديد ثم يرجع للملف الاساسي للنسخ من ورقة 2 ولصقها في ورقة 2 في الملف الجديد وبعد ان تري الكود المستخدم ستعرف انه اذا احببت ان اكرر العملية في الورقة 3 لن استطيع لذلك اطلب مساعدتك اذا كانت هناك طريقة وكود غير المستخدم لعمل ذلك او تعديل الكود ليتم ما اريد حتي يمكنني التبديل بين الملف الاساسي والجديد بحرية قبل ان اقوم بحفظ الملف الجديد واغلاقه

macro.zip

رابط هذا التعليق
شارك

أخي الكريم محمد عبد الشفيع

الموضوع مطروح للجميع كل يدلو بما لديه .. فلا تخصص شخصاُ دون آخر لأن ذلك ينفر الأعضاء من الموضوع

كل عام وأنت بخير

تقبل نصيحتي وتحياتي

رابط هذا التعليق
شارك

أخي محمد

جرب الكود التالي

Sub Test()
  Dim arrSheetToCopy, i As Long

  If MsgBox("نسخ أوراق العمل المحددة إلى مصنف جديد", vbYesNo, "NewCopy") = vbNo Then Exit Sub

  arrSheetToCopy = Array("1", "2")

  Application.ScreenUpdating = False
  With Workbooks.Add
    Application.DisplayAlerts = False
    For i = 1 To (.Sheets.Count - 1)
        .Sheets(.Sheets.Count).Delete
    Next i
    .Sheets(.Sheets.Count).Name = String$(20, "Z")
    For i = 0 To UBound(arrSheetToCopy)
        
        ThisWorkbook.Sheets(arrSheetToCopy(i)).Copy Before:=.Sheets(.Sheets.Count)
    Next i
    .Sheets(.Sheets.Count).Delete
    Application.DisplayAlerts = True
   .SaveAs ThisWorkbook.Path & "\Yasser_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xlsm", xlOpenXMLWorkbookMacroEnabled
    .Close
  End With
  Application.ScreenUpdating = True
End Sub


رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information