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

ابو تراب

الخبراء
  • Posts

    393
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    5

كل منشورات العضو ابو تراب

  1. هلا عباد كود لفتح المجلد Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B3:B10000")) Is Nothing And Target.Value <> "" Then Shell "cmd /c start D:\Empl\" & Target.Value, vbHide End If End Sub جرب الملف ss.zip
  2. هلا احمد كود الحذف Dim iRow As Long Dim ws As Worksheet Dim i As Long Set ws = Worksheets("data") iRow = ws.Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False For i = 4 To iRow If Me.TextBox1.Text = ws.Cells(i, 1).Value Then If MsgBox("ÓíÊã ÍÐÝ ÇáÚãíá ÑÞã " & Me.TextBox1.Text & vbCrLf & "åá ÊÑÛÈ ÈÇáãÊÇÈÚÉ¿", vbYesNo + vbMsgBoxRtlReading + vbMsgBoxRight, "ÍÐÝ") = vbYes Then ws.Range("A" & i & ":H" & i).Delete UserForm_Activate MsgBox "Êã ÇáÍÐÝ ÈäÌÇÍ", vbOKOnly, "ÊäÈíÉ" Exit For End If End If Next Application.ScreenUpdating = True Me.TextBox1.SetFocus جرب المرفق close custumer.zip
  3. اخي ايهاب .. ان شاء الله ستحل المشكلة ربما لديك مشكلة في ملفات EXD ... صفي مجلد ال TEMP وخصوصا مجلدات الاكسل. مجلد Excel8.0 , و مجلد VBE فقط اضغط شعار ويندوز + R و اكتب %TEMP% ايضا تأكد من وجود مرجع للمكتبة FM20.DLL في محرر ال VBA كما في الصورة
  4. جزام الله خيرا اخي محمد على البرنامج الرائع...فكرة ممتاز و جود اذاعة القرأن الكريم
  5. هلا باخي ايهاب...شكرا على كلماتك المشجعة اليوم ان شاء الله ننهي الخطوة الاخيرة و هى ربط ملف الباتش بخدمة الويندوز
  6. هلا باخي ايهاب هل جربت عمل اصلاح للاوفس ... يفضل قبل محاولة عمل بقية الخطوات. مثلا تستطيع البحث عن المكتبة FM20.dll و عند وجودها غير اسمها مثلا FM20.txt و عندها شغل اصلاح الاوفس و هنا سيعمل برنامج الاوفس على نسخ الملف الناقص و اعادة تسجيل المكتبة و تضبيط مفاتيح سجل النظام. على كلا اذا اردت تسجيل المكتبة يمكنك تسجيلها على حسب نوع الويندوز ...اذا كان : 64 بت regsvr32 C:\Windows\SysWOW64\FM20.dll 32 بت regsvr32 c:\windows\system32\FM20.dll عملت لك ملفي باتش ..فقط انقر بزر الايمن على الملف المطلوب و اختر Run as Administrator اي شغلة تحت حساب المدير و بعدها عد تشغيل الجهاز. جرب و خبرنا register.zip
  7. 1 – عمل ملف اكسل (كتابة كود الماكرو) 2- انشاء ملف VBScript لتشغيل الماكرو 3 – كتابة ملف دفعي او باتش batch لفحص الوقت 4 – انشاء ملف تنصيب خدمة الويندوز Windows Service ___________________________________________ الخطوة الثالثة هي عبارة عن ملف باتش يتم تشغيله من قبل خدمة الويندوز طوال فترة تشغيل الجهاز. بالنسبة للخطوة الثالتة سنفترض التالي: 1- ملف الباتش عليه الانتظار 30 ثانية قبل محاولة فحص وقت نتفيذ الاسكربت. TIMEOUT /t 30 /nobreak 2- ملف الباتش سيشغل ملف الاسكربت RunSummaryMacro.vbs كل يوم الساعة 8:30 مساء. و ليتحقق ذلك سنختبر الوقت الحالي بين 8:30 و 8:31 مساء. (يمكنك بالطبع تغيير الوقت حسب ما ترغب) if !CurTime! gtr 20:30 if !CurTime! lss 20:31 ( 3 - ملف الباتش سيحتاج الى تمرير اسم ملف الاسكربت اليه. و يمكن معرفة ملف الاسكربت عبر الوسيط 1%. الكود التالي مسؤل عن تنفيذ الاسكربت: start wscript //B %1 4 - بعد تنفيذ الاسكربت يجب الانتظار 60 ثانية و ذلك لتجنب تنفيذ اكتر من نسخة من الاسكربت و بالتالي تجنب تنفيذ الماكرو اكثر من مرة. TIMEOUT /t 60 /nobreak ملاحظة ===== اذا اردت تجريب الملف فاتبع الخطوات التالية: 1- ضع جميع الملفات (ملف الاكسل و ملف الاسكربت و ملف الباتش في مجلد) 2 - افتح ملف الباتش و ضع وقت التنفيذ الاسكربت قريبا من الوقت الحالي...وتأكد من حفظ الملف. 3- اضغط شعار ويندوز + R و بعدها اكتب cmd 4- انتقل للمجلد الذي فيه الملفات و اكتب التالي: RunSummaryMacro.cmd RunSummaryMacro.vbs 5 - بعد ان يتم تنفيذ الماكرو يمكنك ايقاف الباتش بالضغط على Ctrl + C 6- لا تنسى التشييك على ملف الاكسل. لمزيد من الايضاح انظر الصورة التالية للملفات الموجود في المجلد 3 كود ملف الباتش: @ECHO OFF setlocal enabledelayedexpansion :start setlocal SET CurTime=%time: =0% if !CurTime! gtr 20:30 if !CurTime! lss 20:31 ( start wscript //B %1 TIMEOUT /t 60 /nobreak ) TIMEOUT /t 30 /nobreak GOTO :start endlocal goto:eof @ECHO ON مخرجات الخطوة الثالثة ================= اسم ملف الباتش : RunSummaryMacro.cmd بالتوفيق 3.zip
  8. درس جميل من شخص مميز .. بارك الله لك فيما تقدم و جزاك الله عنا كل الخير اعجبتنا فكرة ترقيم تسلسل تفاصيل الفاتورة...نرجو الاستمرار
  9. هلا وليد يمكنك الغاء حماية الشيت و تفعيلها عن طريق الكود التالي: كلمة السر : 123 ActiveSheet.Unprotect Password:="123" ActiveSheet.Protect Password:="123"
  10. هلا ايهاب جرب عمل اصلاح repair للاوفس اولا..اذا لم تحل المشكلة فجرب التالي: 1 - تحمل Microsoft ActiveX Control Pad 2 - اعادة تسجيل المكتبة FM20.DLL يمكنك عن طريق الامر regsvr32 ...ستجد المكتبة في المسار التالي: اذا كان الويندوز 32 بت : c:\windows\system32 اما الويندوز 64 بت : C:\Windows\SysWOW64 جرب و خبرنا
  11. هلا و غلا باخي ياسر و اخي محمد و شكرا لاهتمامكم. اقتراح جميل فعلا و يمكن تنفيذه...انما اذا اردتم فأني ارغب فقط في تبسيط الماكرو لكي اوجه التركيز على الية تشغيل الماكرو عن طريق خدمات الوينوز بغض النظر عن المهمة التي يؤديها الماكرو. شاكرا لكم اهتمامكم و ان شاء الله اشرح اليوم الخطوة الثالثة و هي تشغيل الماكرو في وقت معين تحياتي
  12. 1 – عمل ملف اكسل (كتابة كود الماكرو) 2- انشاء ملف VBScript لتشغيل الماكرو 3 – كتابة ملف دفعي او باتش batch لفحص الوقت 4 – انشاء ملف تنصيب خدمة الويندوز Windows Service ____________________________________________ الخطوة الثانية هى من اهم الخطوات و ذلك لانها المسؤلة عن تشغيل الماكرو. ملاحظة: --------- الفجول بايسك اسكربت VBScript ليست VBA و ان كانت تتشابة معها في كتابة الكود. ال VBScript بأختصار هى لغة اسكربت تحمل ملفاتها الامتداد vbs و يمكن تشغيلها بالنقر المزدوج. بالنسبة للخطوة الثانية سنفترض التالي: 1 - لا يتم تشغيل الماكرو من قبل الاسكربت الا اذا كان ملف الاكسل مغلقا (اي ليس قيد التشغيل) Call RunMacroOffline(CurrentFolder & ExcelFile) 2- في حالة ان ملف الاكسل قيد التشغيل، يتم وضع الاسكربت في وضع الانتظار و مراقبة الملف الى ان يتم اغلاقه. While FileExistsOrInUse(CurrentFolder & ExcelFile) <> NO_ERRORS WScript.Sleep 5000 WEnd 3 - يمكن لاكثر من نسخة من ملف الاسكربت ان تعمل في نفس الوقت. 4- لا يتقيد ملف الاسكربت بوقت معين لتنفيذ الماكرو (الخطوة رقم ثلاثة هى المسؤلة عن تحديد وقت التنفيذ) ملاحظة ===== بالنسبة لوجود اكثر من نسخة من الاسكربت قيد التشغيل سيخلق لنا مشكلة مشابهة لصورة ادناه: مصدر الصورة تسمى بحالة الاستعصاء او Deadlock و هى و جود اكثر من نسحة من الاسكربت تحاول في نفس الوقت الوصول لملف الاكسل و كل نسخة تنتظر الاخرى لتحرر الملف. و لهذا فان الكود: WScript.Sleep 5000 سيساعد على حل هذه المشكلة وذلك بجعل كل نسخة من الاسكربت الانتظار لمدة خمس ثواني قبل محاول الوصول لملف الاكسل في كل مرة. خطوات أنشاء ملف الاسكربت افتح المذكرة notepad و اكتب الاسكربت و احفظ الملف بامتداد vbs (اسم الملف هنا سكون RunSummaryMacro.vbs ) واليكم كود الاسكربت Option Explicit '-------------------------------------------------------- Const NO_ERRORS = 0 Const FILE_NOT_FOUND = 53 ''هنا نعرف ملف الاكسل و اسم الماكرو Const ExcelFile="Summary2015.xlsm" Const ExcelMacro="Summary" ''نعرف متغييرين الاول يشير لبرنامج الاكسل و الاخر لملف الاكسر Dim ExcelApp Dim Workbook '' متغير يحتفض بمسار المجلد الذي يحتوي على ملف الاسكربت و ملف الاكسل Dim CurrentFolder '-------------------------------------------------------- '/ بداية البرنامج ''احصل على مسار المجلد الحالي للاسكربت CurrentFolder = Left(Wscript.ScriptFullName,(Len(Wscript.ScriptFullName))-(Len(Wscript.ScriptName))) '' اذا كان ملف الاكسل غير موجود الغي تنفيد البرنامج If FileExistsOrInUse(CurrentFolder & ExcelFile) = FILE_NOT_FOUND Then Call Wscript.Quit(FILE_NOT_FOUND) ''في حالة ان ملف الاكسل قيد التشغيل .. انتظر 5 ثواني و عد افحص حالة الملف الى ان يتم اغلاق الملف While FileExistsOrInUse(CurrentFolder & ExcelFile) <> NO_ERRORS WScript.Sleep 5000 WEnd '' عندما يكن ملف الاكسل مغلقا شغل الماكرو Call RunMacroOffline(CurrentFolder & ExcelFile) '-------------------------------------------------------- '/ دالة فحص ملف الاكسل -- فحص وجود الملف على الجهاز و كذلك فحص اذا كان الملف قيد التشغيل Function FileExistsOrInUse(FileName) Const FOR_APPENDING = 8 Const DO_NOT_OVERWRITE=False Dim FileSystem Dim FileRef Dim Result Set FileSystem = CreateObject("Scripting.FileSystemObject") On Error Resume Next Call Err.Clear Set FileRef = FileSystem.OpenTextFile(FileName, FOR_APPENDING, DO_NOT_OVERWRITE) if Err.Number = NO_ERRORS then Result = NO_ERRORS On Error Goto 0 Call FileRef.Close Else Result = Err.Number End If FileExistsOrInUse = Result End Function '-------------------------------------------------------- '/اجراء تشغيل الماكرو Sub RunMacroOffline(FileName) Set ExcelApp = CreateObject("Excel.Application") ''افتح ملف الاكسل Set Workbook = ExcelApp.Workbooks.Open(FileName) ExcelApp.Visible = FALSE ExcelApp.DisplayAlerts = FALSE '' شغل الماكرو Call ExcelApp.Run(ExcelMacro) '' احفظ التغييرات Call ExcelApp.ActiveWorkbook.Save '' اغلق ملف الاكسل Call ExcelApp.ActiveWorkbook.Close ExcelApp.DisplayAlerts = True Call ExcelApp.Quit Set Workbook = Nothing Set ExcelApp = Nothing End Sub مخرجات الخطوة الثانية ================= اسم ملف الاسكربت : RunSummaryMacro.vbs بالتوفيق 2.zip
  13. انصحك باستخدام البرنامج الذي ذكره اخي الغالي ياسر. بالنسبة للملفات المؤقتة ان شاء الله ما بيكن اي ضرر. اذا اردت ان يتم تنظيف مجلد ال TEMP كل مرة يشتغل الجهاز يمكنك عمل ملف باتش و وضعه في قائمة التشغيل تبع الويندوز في المسار التالي: %appdata%\microsoft\windows\start menu\programs\startup\ في المرفق ملف باسم CleanTemp.bat RMDIR %TEMP% /S /Q MKDIR %TEMP% انسخي الملف الى المسار اعلاه ليتم تنظيف ال Temp كل مرة يشتغل الجهاز CleanTemp.zip
  14. محاولة اخرى: تاكدي من وجود المجلد Temp و اذا كان موجودا ففرغي محتوياته للوصول للمجلد اضغط شعار وندوز + R وبعدها اكتبي %TEMP%
  15. بعد اذان اخي ياسر ممكن تكن المشكلة بسبب مشاركة الملفات على الشبكة جرب التالي: 1- اغلق نافذة مجلد الملفات المشاركة .. اي اي نافذة مجلد ملف الاكسل الذي فاتحه 2 - انقل الملف المراد العمل عليه الى مجلد لا يقع على سطح المكتب مثلا الى D 3 - كذلك جرب تعطيل خيار التفاصيل الموجود في نافذة المجلد المفتوح ... انظر الصورة المرفقة اذا لم ينفع اي منها فربما المشكلة في الانتي فيروس
  16. فكرة جميلة اعادة احياء مشاركات عمالقه اوفيسنا....بارك الله فيك و جزاك كل الخير
  17. حياء الله اخي الغالي ياسر يشرفني مرورك و مشكور على كلماتك الطيبة هلا باخي ايهاب...باذن الله سنشرح جميع الخطوات..و انما قسمتها لتسهيل عملية الشرح و اعطاء من يريد المتابعة فرصة لتجريب. ان شاء الله اليوم اشرح الخطوة الثانية تحياتي
  18. 1 – عمل ملف اكسل (كتابة كود الماكرو) 2- انشاء ملف VBScript لتشغيل الماكرو 3 – كتابة ملف دفعي او باتش batch لفحص الوقت 4 – انشاء ملف تنصيب خدمة الويندوز Windows Service _____________________________________________________________________ بالنسبة للخطوة الاولى و هى كتابة كود الماكرو سنفترض التالي: 1- لدينا شيت اسمها Data وهى تحمل مبيعات اليوم 2- شيت اخرى اطلقنا عليها Summary و تحمل اجمالي المبيعات لجميع الايام. 3- ينفذ الماكرو Summary في وقت معين وذلك لتحديث الشيت Summary بإجمالي المبيعات على حسب المعادلة التالي: '/حدث مبيعات السنة Sheets(SHEET_SUMMARY).Range("A2") = Val(Sheets(SHEET_SUMMARY).Range("A2")) + Val(Sheets(SHEET_DATA).Range("A2")) 4 - يفضل متابعة سجل تنفيد الماكرو لهذا تم عمل شيت ثالثة باسم Log لمتابعة اوقات تنفيد الماكرو. كود الماكرو ======= Option Explicit Public Const SHEET_DATA As String = "Data" Public Const SHEET_SUMMARY As String = "Summary" Public Const SHEET_LOG As String = "log" Public Sub Summary() Dim Row As Long '/حدث مبيعات السنة Sheets(SHEET_SUMMARY).Range("A2") = Val(Sheets(SHEET_SUMMARY).Range("A2")) + Val(Sheets(SHEET_DATA).Range("A2")) '/حدث اوقات تنفيد الماكرو Sheets(SHEET_LOG).Range("B3") = Sheets("Log").Range("B3") + 1 Sheets(SHEET_LOG).Range("C3") = Date Sheets(SHEET_LOG).Range("D3") = Time Row = Sheets(SHEET_LOG).Range("B3") + 5 Sheets(SHEET_LOG).Range("A" & Row) = Row - 5 Sheets(SHEET_LOG).Range("B" & Row) = Date Sheets(SHEET_LOG).Range("C" & Row) = Time Sheets(SHEET_LOG).Range("D" & Row) = Environ("UserName") Sheets(SHEET_LOG).Range("E" & Row) = Application.UserName End Sub مخرجات الخطوة الاولى ================= اسم ملف الاكسل : Summary2015.xlsm اسم الماكرو : Summary تحياتي Summary2015.zip
  19. السلام عليكم و رحمة الله لا تستغرب من العنوان فبالفعل هذا سؤال وضع بأحد مواقع الاعمال الحرة Freelancers و هو كيف يمكن تشغيل ماكرو في وقت معين بدون استخدام Application.OnTime او حتى جدولة المهام Task Scheduler و قد وضع صاحب المشروع ميزانية 100 دولار لمن يجيبه. ليس لدي فكرة اذا تم الاجابة عن هذا السؤال ام لا فلمشروع مغلق الان ... الا انها فرصة لتوضيح كيف يمكن عمل ذلك. الفكرة باختصار هي عمل خدمة ويندوز تشغل الماكرو في وقت محدد. قد يسال احدهم سؤال و ما الفائدة من ذلك...هذا الامر متروك لمدى احتياجك لتشغيل الماكرو اوتوماتيكيا في وقت معين بدون تدخل المستخدم. فمثلا قد يكن من المهم ان تتم عملية الترحيل اوتوماتيكيا في نهاية يوم عمل. ملاحظة ===== استخدمت جهاز لديه ويندوز 8.1 و اوفس 2010 .. الجهاز غير مربوط باي شبكة محلية. خطوات الحل ======= 1 – عمل ملف اكسل (كتابة كود الماكرو) 2- انشاء ملف VBScript لتشغيل الماكرو 3 – كتابة ملف دفعي او باتش batch لفحص الوقت 4 – انشاء ملف تنصيب خدمة الويندوز Windows Service اسال الله التوفيق و السداد
  20. وعليكم السلام و رحمة الله وبركاته جرب الملف مثال.zip
  21. وعليكم السلام و رحمة الله و بركاته شرح مبسط و في الصميم...جزاك الله خيرا
  22. وعليكم السلام محمد يمكنك اضهار جميع النوافذ المفتوحة عن طريق الكائن Word و بعدها تستطيع باستخدام الامر Taskkill (وهو احد اوامر النظام) لأغلاق النوافذ Public Sub GetOpenWindows() Dim WordApp Dim Windows Dim Window Dim i As Integer Set WordApp = CreateObject("Word.Application") Set Windows = WordApp.Tasks i = 2 Range("A2:A1000").ClearContents For Each Window In Windows في حالة ان النافذة مفتوحة احصل على عنوانها و ضعه على احد خلاياء الاكسل If Window.Visible Then Range("A" & i).Value = Window.Name i = i + 1 End If Next WordApp.Quit End Sub بعدها يمكنك اختيار النافذه التى ترغب بأغلاقها كود اغلاق نافذة Sub btnCLoseWindow() Dim WindowTitle As String هنا يتم تحديد عنوان النافذة التي اخترت WindowTitle = Selection.Value اغلاق النافذة Shell "taskkill /FI ""WINDOWTITLE eq " & WindowTitle & """", vbHide End Sub Listing open windows and closing.zip
  23. جزاك الله خيرا...طريقة شرحك و اسلوبك ممتازة بالتوفيق
  24. السلام عليكم سؤال مهم فعلا و احب ان اضيف علاوة ما اضافة الاخوة الكرام السيد سليم و السيد عبدالله انه يمكن استخلاص الارقام من نص عن طريق الدالة SumProduct انظر المثال المرفق فكرة الكود هو ضرب عناصر مصفوفتين عن طريق الدالة sumproduct و من ثم جمع الناتج مثال: في الخلية A1 العبارة التالية: 250 كرتون حليب المصفوفة الاولى تمثل الارقام المستخلصة من النص و هى {0,5,2} المصفوفة الثانية تمثل المنزلة العشرية لكل رقم {1,10,100} و عند ضرب المصفوفتين و جمع الناتج نحصل على 250 هذا كود المعادلة لخلية A1 ممكن ان تحتوي على نص بطول 30 حرف SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW($1:$30),1))* ROW($1:$30),0),ROW($1:$30))+1,1)*10^ROW($1:$30)/10) استخلاص الارقام من نص.zip
×
×
  • اضف...

Important Information