بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 01/01/25 in all areas
-
السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) أشارككم اليوم حلاً برمجياً لمشكلة شائعة تواجه مطوري و مبرمجي تطبيقات آكسيس عند التعامل مع اللغة العربية . المشكلة تتمثل في الحاجة لتغيير لغة النظام (System Locale) إلى العربية لضمان عرض النصوص العربية بشكل صحيح في التطبيق ، وضمان عمل المشروع دون مشاكل . 🎯 المشكلة: - عدم ظهور النصوص العربية بشكل صحيح في بعض أجزاء التطبيق - الحاجة المتكررة لتغيير إعدادات النظام يدوياً - صعوبة شرح الخطوات للمستخدمين النهائيين ✨ الحل: قمت بتطوير دالة برمجية تقوم بـ: 1. فحص لغة النظام الحالية 2. تغيير لغة النظام إلى العربية بشكل تلقائي 3. ضبط جميع الإعدادات الضرورية (CodePage, Locale, Keyboard Layout) 4. إعادة تشغيل النظام بشكل آمن لتطبيق التغييرات 🔑 المميزات: - تنفيذ التغييرات بنقرة زر واحدة - رسائل واضحة باللغة الإنجليزية للمستخدم - معالجة الأخطاء بشكل احترافي - تأكيد موافقة المستخدم قبل إجراء التغييرات - إتاحة وقت كافٍ لحفظ الملفات قبل إعادة التشغيل 📝 ملاحظات هامة: - سيتم إعادة تشغيل الجهاز بعد تطبيق التغييرات - الكود يعمل على جميع إصدارات Windows الحديثة وهذه صورة توضيحية للخطوات التي كان على المستخدم العادي أو المبرمج تنفيذها حتى يتلافى مشكلة اللغة العربية :- الكود المستخدم في المديول :- Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetUserDefaultUILanguage Lib "kernel32" () As Long Private Declare PtrSafe Function GetACP Lib "kernel32" () As Long #Else Private Declare Function GetUserDefaultUILanguage Lib "kernel32" () As Long Private Declare Function GetACP Lib "kernel32" () As Long #End If Private Const MSG_CHANGE_LANGUAGE As String = "Your program will not function correctly; the unicode language must be changed to Arabic. Would you like to proceed with changing the unicode language?" Private Const MSG_RESTART_NOTE As String = "Note: The computer will restart after the change" Private Const MSG_TITLE As String = "Change System Language" Private Const MSG_RESTART_SOON As String = "The computer will restart in 15 seconds" Private Const MSG_SAVE_FILES As String = "Please save all open files" Private Const MSG_CANT_RUN As String = "The project cannot run without changing the system language to Arabic" Private Const MSG_ERROR As String = "System error occurred. Please contact your administrator" Private Function IsArabicLanguage() As Boolean Dim CodePage As Long CodePage = GetACP() IsArabicLanguage = (CodePage = 1256) End Function Public Function SetArabicLocale() As Boolean On Error GoTo ErrorHandler If Not IsArabicLanguage() Then Dim response As VbMsgBoxResult response = MsgBox(MSG_CHANGE_LANGUAGE & vbCrLf & MSG_RESTART_NOTE, _ vbQuestion + vbYesNo + vbDefaultButton2, _ MSG_TITLE) If response = vbYes Then Dim fso As Object Dim txtFile As Object Dim filePath As String filePath = Environ$("TEMP") & "\ChangeToArabic.bat" Set fso = CreateObject("Scripting.FileSystemObject") Set txtFile = fso.CreateTextFile(filePath, True) With txtFile .WriteLine "@echo off" .WriteLine "chcp 1256" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language"" /v Default /t REG_SZ /d 00000401 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language"" /v InstallLanguage /t REG_SZ /d 00000401 /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v LocaleName /t REG_SZ /d ar-JO /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v Locale /t REG_SZ /d 00000409 /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v sLanguage /t REG_SZ /d ARA /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v sCountry /t REG_SZ /d Jordan /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v iCountry /t REG_SZ /d 962 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v ACP /t REG_SZ /d 1256 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v OEMCP /t REG_SZ /d 1256 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v MACCP /t REG_SZ /d 10004 /f" .WriteLine "reg add ""HKCU\Keyboard Layout\Preload"" /v 1 /t REG_SZ /d 00000401 /f" .WriteLine "control.exe intl.cpl,, /f:""C:\Windows\System32\intl.cpl""" .WriteLine "timeout /t 5" .WriteLine "shutdown /r /t 15 /c ""سيتم إعادة تشغيل الجهاز بعد ( 15 ثانية ) لتطبيق إعدادات اللغة العربية"" /f" End With txtFile.Close Dim shellApp As Object Set shellApp = CreateObject("Shell.Application") shellApp.ShellExecute filePath, "", "", "runas", 1 MsgBox MSG_RESTART_SOON & vbCrLf & MSG_SAVE_FILES, vbInformation SetArabicLocale = True Else MsgBox MSG_CANT_RUN, vbCritical SetArabicLocale = False End If Else SetArabicLocale = True End If Exit Function ErrorHandler: MsgBox MSG_ERROR, vbCritical SetArabicLocale = False End Function طبعاً رسالة التنبيه تم كتابتها باللغة الإنجليزية . في متغيرات متعددة ( السبب هو إحدى المحاولات للكتابة بالعربية مع تشفير النص ( Unicode ) ) . ولكني تجاهلت الفكرة لاحقاً . الآن يمكنك استدعاء الدالة في أول نموذج لك بالشكل التالي :- SetArabicLocale عند وجود اللغة العربية هي لغة الترميز في نسخة الويندوز ، لن تظهر لك رسالة ضرورة تغيير لغة الترميز الى العربية . ولم اقم بإضافات كبيرة خارج إطار الموضوع ، وللمبرمج حرية التعديل والإستفادة من الكود حيثما وكيفما يشاء . الملف المرفق مفتوح المصدر 👈 [ LanguageCheck.accdb ]2 points
-
اعرض الملف 🎁📅 :: المخطط السنوي للإجازات :: 🌼🌷 :: عرض جميع إجازات الموظفين على الجدول الزمني Gantt Cart دايناميكي 😊👌🏻 السلام عليكم ورحمة الله وبركاته 🙂 اليوم يسرني أن أقدم لكم هذه الهدية المتواضعة :: المخطط السنوي للإجازات :: وهو عبارة عن تقويم سنوي لإجازات الموظفين يتم رسمه دايناميكيا على مخطط رسم بياني يسمى Gantt Chart 👌 يمتاز التصميم بالسهولة والجمال والإبداعية وقد شرحت كيفية استخدامه في الفيديو التالي ✌ في التحديث الجديد 1.7 تم إضافة حقل لمجموع عدد الأيام سنويا ... مع دعم للإجازات عابرات القارات (الإجازات التي تمتد لعدة سنوات كالإجازات الدراسية الطويلة) ظهور عدد الأيام في جميع النوافذ من مميزات هذا المخطط: - عرض جميع الإجازات في صفحة واحدة يسهل من قرائتها ومراجعتها. - تصميم رائع وألوان جميلة . - سهل الاستخدام . - وكذلك هذا المخطط يمكن استخدامه للمشاريع بدل الإجازات أو عرض مدة الإيجارات أو .. أو .. أو ... حيث لا حدود للإبداع 🙂 :: وأخيرا وليس آخرا :: :: لا تنسونا ووالدينا من صالح دعواتكم الطيبة 🙂 🌹🌷 :: صاحب الملف Moosak تمت الاضافه 01 ينا, 2025 الاقسام قسم الأكسيس2 points
-
شكرا لك استاذ @كريمو2 فقد حركت دماغي اليوم بعد فترة من الخمول 😂2 points
-
السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) بالإشارة الى الموضوع الذي أعلنت عنه سابقاً في هذا الرابط هنا ، اسمحوا لي بأن أطرح هذه الفكرة الجديدة والتي تم تجربتها مراراً وتكراراً إلى أن خرجت بهذه النتيجة فيما يتعلق بموضوع التحديث الهوائي أو Online أو OTA ( Over-The-Air ) . الموضوع بداية بسيط جداً ولن يحتاج تعقيد في تنفيذ هذه الطريقة . حيث ما يلزمنا أولاً هو حساب على Google Drive ( لماذا ؟ = لأن 95 % من الأشخاص عندهم هذا الحساب ) . و حساب على موقع Dropbox ( لماذا ؟ = لأنه يعطينا امكانية التحميل برابط مباشر خلافاً في جوجل درايف ) وهو ما يميزه عن Google Drive . بناءً على ما سلف ، نبدأ شرح الخطوات والمتطلبات على بركة الله :- 1. سنحتاج جدول واحد مرفق وهو ( Settings ) ، ولا أنصح بالتلاعب به ما لم يكن على أساس صحيح ؛ ويحتوي على الحقول التالية :- الحقل Ver = رقمي = لتحديد الإصدار الحالي للنسخة الحالية في قاعدة البيانات الحالية. الحقل Link = نصي = لتحديد رابط الملف النصي الذي سيتم قراءة الإصدار الجديد منه ومقارنته مع قيمة الحقل Ver لتحديد ما اذا كان هناك نسخة جديدة أم لا . الحقل URLS = نصي = سيتم ادراج رابط التحميل للإصدار الجديد من خلال الكود تلقائياً. الحقل DBName = نصي = سيمكانك هنا من تحديد اسم قاعدة البيانات التي سيتم حفظ التحديث الجديد بها . وهنا لتسهيل فكرة اسم القاعدة القديمة واستبدالها بالنسخة الجديدة سيتم جلب القيمة تلقائياً . الحقل Auto_Check = نوع Yes/No = لتفعيل ميزة الفحص التلقائي للتحديثات ( فكرة شبيهة بتلك التي في أجهزة الجوال والمحمول عند تفعيلها يصلك إشعارك بوجود نسخة جديدة إن كانت الميزة مفعلة طبعاً ) 2. تحميل الإصدار الجديد على موقع Dropbox ونسخ رابط الملف ( مع التأكد أن الملف عند مشاركته قد تمت مشاركته للجميع - الموقع يجعلها قيمة افتراضية - ولكن للتأكيد ) . 3. ملف نصي واحد ( TxT. ) سميه ما شئت وهو ثابت غير قابل للتبديل ، ويكون محتواه ما يلي :- السطر الأول نضع رقم الإصدار الجديد . اي انه في الملف القديم لنفترض ان قيمة الحقل Ver = 0.1 . هنا في الملف النصي سنضع الإصدار الأحدث أي مثلاً ( 0.2 ). السطر الثاني نضع رابط النسخة الحديثة التي تم رفعها على Dropbox في النقطة السابقة 2 . أي انه سيكون لدينا ملف نصي يحتوي سطرين الأول رقم الإصدار الحديث والذي ستتم قراءته و مقارنته مع الحقل Ver في الإصدار الذي لدى العميل ، والسطر الثاني رابط النسخة الأحدث من دروب بوكس . 4. سنقوم برفع هذا الملف النصي على جوجل درايف ( السبب : دروب بوكس لم يدعم فكرة قراءة الملف النصي وجلب قيمة رقم الاصدار في السطر الأول لمقارنتها مع القيمة في النسخة التي لدى العميل في الحقل Ver ) . 5. ثم سنقوم بنسخ الرابط لهذا الملف النصي ومشاركته للجميع - أو بمعنى آخر لمن يملك الرابط - ولصقه في الجدول الثابت Settings في الحقل Link وهو هنا سيكون أيضاً قيمة ثابتة لن تتغير . أي أنك ستقوم بتغيير فقط رقم الإصدار في النسخة الجديدة في الحقل Ver . وإعادة رفع الملف النصي بعد تحديث قيمة رقم الاصدار الجديد فقط . طبعاً هنا بالإفتراض جدلاً وبعد تجربة متكررة أنه عندما تقوم برفع ملف موجود مسبقاً على أي موقع من ( جوجل درايف أو دروب بوكس ) فأن العنوان لهذا الملف لن يتغير لأنه سيتم استبدال الملف القديم بالجديد . ( وهي نقطة جيدة استفدنا منها لصالحنا ). 6. الآن الفكرة بشكل عام واضحة ولا تحتاج لتعقيد في الشرح ( وأي فكرة أو طريقة في البداية ستحتاج مرات معدودة لتصبح سهلة في تطبيقها عن ظهر قلب ) الآن وما هو مهم للجميع ، الكود التالي للمديول :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '*************** ( 28/12/2024 ) *************** Option Compare Database Option Explicit Public Function IsInternetConnected() As Boolean On Error GoTo ErrorHandler Dim xhr As Object Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0") xhr.SetOption 2, 13056 xhr.Open "GET", "https://www.google.com", False xhr.send IsInternetConnected = (xhr.Status = 200) Set xhr = Nothing Exit Function ErrorHandler: IsInternetConnected = False If Not xhr Is Nothing Then Set xhr = Nothing End Function Public Function ConvertGoogleDriveLink(ByVal originalLink As String) As String On Error GoTo ErrorHandler Dim FileID As String If InStr(1, originalLink, "/d/") > 0 Then FileID = Mid(originalLink, InStr(1, originalLink, "/d/") + 3) FileID = Left(FileID, InStr(1, FileID, "/") - 1) ElseIf InStr(1, originalLink, "id=") > 0 Then FileID = Mid(originalLink, InStr(1, originalLink, "id=") + 3) If InStr(1, FileID, "&") > 0 Then FileID = Left(FileID, InStr(1, FileID, "&") - 1) End If End If If Len(FileID) > 0 Then ConvertGoogleDriveLink = "https://drive.google.com/uc?id=" & FileID Else ConvertGoogleDriveLink = originalLink End If Exit Function ErrorHandler: ConvertGoogleDriveLink = originalLink End Function Public Function CheckForUpdate() As Boolean On Error GoTo ErrorHandler Dim currentVer As Double Dim onlineVer As Double Dim xhr As Object Dim onlineContent As String Dim driveLink As String Dim contentLines() As String Dim updateURL As String Dim currentDBName As String currentDBName = CurrentDb.Name currentDBName = Mid(currentDBName, InStrRev(currentDBName, "\") + 1) currentDBName = Left(currentDBName, InStrRev(currentDBName, ".") - 1) CurrentDb.Execute "UPDATE Settings SET DBName = '" & Replace(currentDBName, "'", "''") & "'" currentVer = DLookup("Ver", "Settings") If Not IsInternetConnected() Then Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم الإصدار: " & currentVer CheckForUpdate = False Exit Function End If driveLink = ConvertGoogleDriveLink(DLookup("Link", "Settings")) Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0") xhr.SetOption 2, 13056 xhr.Open "GET", driveLink, False xhr.setRequestHeader "User-Agent", "Mozilla/5.0" xhr.send If xhr.ReadyState = 4 Then If xhr.Status = 200 Then onlineContent = Trim(xhr.responseText) contentLines = Split(onlineContent, vbCrLf) If UBound(contentLines) >= 1 Then onlineVer = Val(contentLines(0)) updateURL = Trim(contentLines(1)) If onlineVer > 0 Then If onlineVer > currentVer Then CurrentDb.Execute "UPDATE Settings SET URLS = '" & updateURL & "'" Forms!Frm_Index!Lbl_Load.Caption = " تحديث جديد متوفر الآن : " & onlineVer & " Ver - انقر للتحميل " Forms!Frm_Index!ImgUpdate.Visible = True CheckForUpdate = True Forms!Frm_Index!Tx_User.Enabled = True Forms!Frm_Index!Tx_Pass.Enabled = True Forms!Frm_Index!Tx_User.SetFocus Else Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم أحدث إصدار : " & onlineVer & " Ver " Forms!Frm_Index!Tx_User.Enabled = True Forms!Frm_Index!Tx_Pass.Enabled = True Forms!Frm_Index!Tx_User.SetFocus End If End If End If End If End If Set xhr = Nothing Exit Function ErrorHandler: CheckForUpdate = False If Not xhr Is Nothing Then Set xhr = Nothing End Function Sub UpdateURLSAndOpenNewDatabase() Dim UrlValue As String, NameValue As String Dim TargetDb As DAO.Database Dim rs As DAO.Recordset Dim CurrentDbPath As String Dim NewDbPath As String CurrentDbPath = CurrentProject.Path & "\" & Dir(CurrentProject.FullName) NewDbPath = CurrentProject.Path & "\Data\Update.accdb" If Dir(CurrentProject.Path & "\Data\Update.Dll") <> "" Then Name CurrentProject.Path & "\Data\Update.Dll" As NewDbPath Else MsgBox "الملف Update.Dll غير موجود", vbCritical Exit Sub End If On Error GoTo ErrorHandler UrlValue = Nz(CurrentDb.OpenRecordset("SELECT URLS FROM Settings").Fields("URLS").Value, "") NameValue = Nz(CurrentDb.OpenRecordset("SELECT DBName FROM Settings").Fields("DBName").Value, "") If UrlValue = "" Or NameValue = "" Then MsgBox "خطأ في تحميل التحديث", vbCritical Exit Sub End If Set TargetDb = DBEngine.OpenDatabase(NewDbPath) Set rs = TargetDb.OpenRecordset("Settings", dbOpenDynaset) If rs.EOF Then rs.AddNew rs.Fields("URLS").Value = UrlValue rs.Fields("DBName").Value = NameValue rs.Update Else rs.MoveFirst rs.Edit rs.Fields("URLS").Value = UrlValue rs.Fields("DBName").Value = NameValue rs.Update End If rs.Close TargetDb.Close Shell "msaccess.exe """ & NewDbPath & """", vbNormalFocus Application.Quit Exit Sub ErrorHandler: MsgBox "حدث خطأ: " & Err.Description, vbCritical If Not rs Is Nothing Then rs.Close If Not TargetDb Is Nothing Then TargetDb.Close Exit Sub End Sub Public Function ExtractAttachmentFile() As Boolean On Error GoTo ErrorHandler Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsAttach As DAO.Recordset2 Dim fld As DAO.Field2 Dim dataFolder As String dataFolder = CurrentProject.Path If Dir(dataFolder, vbDirectory) = "" Then MkDir dataFolder End If Set db = CurrentDb Set rs = db.OpenRecordset("Settings") If Not rs.EOF Then Set fld = rs.Fields("DBFiles") If Not IsNull(fld) Then Set rsAttach = fld.Value If Not rsAttach.EOF Then rsAttach.Fields("FileData").SaveToFile dataFolder & "\" & rsAttach.Fields("FileName").Value ExtractAttachmentFile = True End If rsAttach.Close End If End If CleanUp: If Not rs Is Nothing Then rs.Close Set rs = Nothing Set db = Nothing Exit Function ErrorHandler: ExtractAttachmentFile = False Resume CleanUp End Function وما يلي كود النموذج لجميع الأجزاء والمكونات داخله :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '*************** ( 28/12/2024 ) *************** Option Compare Database Option Explicit Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private bMessage20Displayed As Boolean Private bMessage35Displayed As Boolean Private bMessage50Displayed As Boolean Private LoginAttempts As Integer Dim TimeCount As Long Private Sub Btn_Quit_Click() Dim userResponse As VbMsgBoxResult userResponse = MsgBox("إغلاق النظام؟", _ vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية الإغلاق") If userResponse = vbYes Then DoCmd.Quit ElseIf userResponse = vbNo Then DoCmd.CancelEvent End If End Sub Private Sub Form_Load() ExtractAttachmentFile LoginAttempts = 0 Me.Caption = "Foksh - Officena.Net - 2025" DoEvents If Check_Auto = -1 Then Me.TimerInterval = 1000 Else Me.TimerInterval = 0 Me.Lbl_Load.Caption = "" End If End Sub Private Sub Form_Timer() Me.TimerInterval = 0 CheckForUpdate End Sub Private Sub ImgUpdate_Click() On Error GoTo ErrorHandler Dim userResponse As VbMsgBoxResult userResponse = MsgBox("التحديث الآن؟", _ vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية التحديث") If userResponse = vbYes Then UpdateURLSAndOpenNewDatabase ElseIf userResponse = vbNo Then DoCmd.CancelEvent End If ErrorHandler: Resume Next End Sub ما يتم تنفيذه عند استعمال الفكرة :- أولاً عند الفتح للمشروع سيتم استخراج ملف DLL مرفق داخل قاعدة البيانات . ثانياً عند اكتمال التحديث سيتم استبدال النسخة القديمة بالنسخة الجديدة ، وشأنه شأن أي عملية تحديث ؛ فإنك ستفقد النسخة القديمة كاملةً ( وهنا الحاجة الماسة لاعتماد فكرة تقسيم قاعدة البيانات ) . ملف الواجهة المرفق مفتوح المصدر 👈 [ Main.accdb ] * عذراً إن كانت طريقتي في العمل مزعجة أو غريبة نوعاً ما ، لكن هو طبعي 😅 . فماذا أفعل ؟؟!!1 point
-
السلام عليكم بداية الكود كانت من الاستاذ الفاضل @ابوخليل يشرفني ان ارسل لكم تعديل بارسال المرفقات عبر واتساب ويب اي نوع مرفق يمكن ارساله (مستند / صورة /فديو /اكسيل -وارد - يمكنك اضافة اي امتداد بالكود وسيقوم بارساله - يمكنك ارسال تقرير مياشرة او تحديد مرفق - يقوم بالارسال لعدد غير محدود الارقام المضافة لديكم وغير المضافة . تغير وزيادة نوع المستند او المرفق من هنا AttachmentPath = reportPath ' تحديد نوع المرفق بناءً على المسار المحفوظ If InStr(reportPath, ".pdf") > 0 Then AttachmentType = 1 ' ملف PDF ElseIf InStr(reportPath, ".doc") > 0 Or InStr(reportPath, ".docx") > 0 Or InStr(reportPath, ".xls") > 0 Or InStr(reportPath, ".xlsx") > 0 Or InStr(reportPath, ".ppt") > 0 Or InStr(reportPath, ".pptx") > 0 Then AttachmentType = 1 ' ملف PDF ElseIf InStr(reportPath, ".jpg") > 0 Or InStr(reportPath, ".jpeg") > 0 Or InStr(reportPath, ".png") > 0 Or InStr(reportPath, ".gif") > 0 Or InStr(reportPath, ".bmp") > 0 Or InStr(reportPath, ".tif") > 0 Or InStr(reportPath, ".tiff") > 0 Or InStr(reportPath, ".webp") > 0 Or InStr(reportPath, ".svg") > 0 Then AttachmentType = 2 ' صورة ElseIf InStr(reportPath, ".mp4") > 0 Or InStr(reportPath, ".avi") > 0 Or InStr(reportPath, ".mov") > 0 Or InStr(reportPath, ".wmv") > 0 Then AttachmentType = 2 ' صورة ElseIf InStr(reportPath, ".sticker") > 0 Then AttachmentType = 6 ' ملصق Else ' يمكنك إضافة المزيد من الامتدادات إلى هنا إذا لزم الأمر AttachmentType = 0 ' غير معروف End If ملحوظة عند اي تحديث لواتساب يجب تعديل خاصية send key ( ' إرفاق المرفق إذا كان موجودًا If AttachmentPath <> "" Then ' الانتقال لزر إرسال المرفقات الجديد ' الانتقال لزر إدراج المستندات الجديد SendKeys "+{TAB}" ' الرجوع خطوة واحدة SendKeys "+{TAB}" ' الرجوع خطوة إضافية إذا لزم الأمر SendKeys "~" ' الضغط على الزر Sleep 1000 ' الانتظار لفتح مربع اختيار الملف ) كنت من فتره طورت الكود لصديقي وقفلت الموضوع اليوم طلبه مني صديق اخر احببت اشارك الجميع الكود ربما ينتفع به غيرنا كما تعلمنا من هذا الجروب العظيم يشهد الله اني تعلمت الاكسس من هذا الجروب العظيم وكل شخص فيه له فضل عليا ولم يقصر اي شخص في المساعدة. cash1.rar1 point
-
Version 1.7.0
77 تنزيل
السلام عليكم ورحمة الله وبركاته 🙂 اليوم يسرني أن أقدم لكم هذه الهدية المتواضعة :: المخطط السنوي للإجازات :: وهو عبارة عن تقويم سنوي لإجازات الموظفين يتم رسمه دايناميكيا على مخطط رسم بياني يسمى Gantt Chart 👌 يمتاز التصميم بالسهولة والجمال والإبداعية وقد شرحت كيفية استخدامه في الفيديو التالي ✌ في التحديث الجديد 1.7 تم إضافة حقل لمجموع عدد الأيام سنويا ... مع دعم للإجازات عابرات القارات (الإجازات التي تمتد لعدة سنوات كالإجازات الدراسية الطويلة) ظهور عدد الأيام في جميع النوافذ من مميزات هذا المخطط: - عرض جميع الإجازات في صفحة واحدة يسهل من قرائتها ومراجعتها. - تصميم رائع وألوان جميلة . - سهل الاستخدام . - وكذلك هذا المخطط يمكن استخدامه للمشاريع بدل الإجازات أو عرض مدة الإيجارات أو .. أو .. أو ... حيث لا حدود للإبداع 🙂 :: وأخيرا وليس آخرا :: :: لا تنسونا ووالدينا من صالح دعواتكم الطيبة 🙂 🌹🌷 ::1 point -
1 point
-
الحمد لله والشكر لله1 point
-
غفر الله لك ولوالديك .. ولكم بالمثل وأكثر مما دعيتم مهندسنا الغالي ,, بالنسبة لطلبك فابشر بهما ,, في التالي سأقوم بالتعديل لجعل الموضوع أكثر مرونة باختيار الدولة التي تريدها ، ولكن بعد تجربتها على عدة أجهزة لضمان نجاحها . أما بخصوص ملف الباتش فهو فعلاً يتم انشاؤه في مجلد %TEMP% داخل الويندوز ليتم التعديل وتمرير الفكرة من خلال الجملة التالية .WriteLine "control.exe intl.cpl,, /f:""C:\Windows\System32\intl.cpl""" لكني سأزودك به منفصلاً1 point
-
الله الله الله 😄👏👏👏 إبداع إبداع إبداع ... بكل ما تحمله الكلمات من معنى هذا هو الحل للمعضلة العضلاء وأم المشاكل السوداء 😂🖐 بعد التجربة بنجاح باهر أقول لك : جزاك الله عنا وعن الأمة كل خير .. وغفر الله لك ولوالديك وجميع أحبابك 🙂🤲🏻 طلب صغنن لإتاحة التحكم بالكود حسب الاحتياجات الخاصة المختلفة : كيف أخلي اللغة الإدارية عربي (عمان) مثلا .. أو بالأحرى كيف أختار دولة محددة بذاتها ؟ هل ممكن عمل ملف "bat" أو "Cmd" أو "Reg" مثلا بشكل منفصل ويقوم بتشغيل هذه الإجراءات نفسها تلقائيا بمجرد الضغط عليه .. ( لدي فكرة في بالي )1 point
-
سؤال جميل ، العمل جاري لتعديل الملف الوسيط ليقرأ امتداد قاعدة البيانات الأساسية دون تدخل برمجي .. لكن حالياً ولتجربة الفكرة فالإمتداد المتعامل معه هو Accdb . انتظر التحديث القادم ان شاء الله .1 point
-
عمل رائع و مميز جدا جدا..... بارك الله في جهدك وزادك علما لدي استفسار لو كانت قاعدة البيانات بصيغة accde هل يمكن التحديث اون لاين ؟1 point
-
اسف...لقد أخطأت لم انتبه لعام 2024 20250101.rar ههههههههههههه هي الاكسس معظمه حيل فلم انتبه لعام 20241 point
-
ArabicDigits =Chrw(1632) & Chrw(1633) & Chrw(1634) & Chrw(1635) & Chrw(1636) & Chrw(1637) & Chrw(1638) & Chrw(1639) & Chrw(1640) & Chrw(1641) الصق هذا بدل أرقام عريي وهذا تعديل على ملف تحويل الارقام من العربية الى الانجليزية.xlsm1 point
-
الكود يعمل حسب المطلوب أسأل الله الكريم رب العرش العظيم ان يبارك لك في علمك واهلك وكل ما تملك وان يجزيك عنا خير الجزاء ولك كل التحية والتقدير1 point
-
شكرا جزيلا اخى ابو عارف لقد نجحت العملية وتم اكمال الامر ولاكن كنت اريد تنفيذ الفكرة من خلال اكواد vba من داخل الفورم لقد وجدت اكواد تفعل ذلك ولاكنى عندى صعوبة فى كتابة الارقام باللغة العربية داخل محرر الاكواد كمثال هذ الكود Private Sub CommandButton1_Click() With ListBox1 .AddItem ComboBox1.value .List(.ListCount - 1, 1) = TextBox1.value .List(.ListCount - 1, 2) = ConvertArabicToEnglishWithArabicLetters(TextBox2.value) Me.ListBox1.ColumnCount = 3 Me.ListBox1.ColumnWidths = "40;50;50" End With End Sub Private Function ConvertArabicToEnglishWithArabicLetters(ByVal ArabicText As String) As String Dim i As Integer Dim EnglishText As String Dim ArabicDigits As String Dim EnglishDigits As String ' Define Arabic and English digits 'المفروض داخل علامة التنصيص تكون الارقام عربية ArabicDigits = "0123456789" 'اريد كتابة الارقام هنا بعد علامة التنصيص"ارقام عربية من صفر الى تسعة" 'المفروض داخل علامة التنصيص تكون الارقام انجليزية EnglishDigits = "0123456789" For i = 1 To Len(ArabicText) ' Check if the character is an Arabic digit If InStr(ArabicDigits, Mid(ArabicText, i, 1)) > 0 Then ' Replace Arabic digit with English digit EnglishText = EnglishText & Mid(EnglishDigits, InStr(ArabicDigits, Mid(ArabicText, i, 1)), 1) Else ' Keep the character as it is (including Arabic letters) EnglishText = EnglishText & Mid(ArabicText, i, 1) End If Next i ConvertArabicToEnglishWithArabicLetters = EnglishText End Function1 point
-
السلام عليكم و رحمة الله و بركاته أخي محمود بشكل افتراضي الاكسل يكتب ارقام انجليزي عند كتابة لغة العربية الا في حالة تغير اعدادات لغة في ويندوز كما في الصورة في الحالة هذا لايمكن تغير أرقام الى الانجلزية حسب معلوماتي، و اما اذا غيرت خيارين الى: وتريد تحويل ارقام الى عربية هذا ممكن سواء بالكود أو بالتعبير أو بتنسيق.1 point
-
أخي Foksh لعلك تضيف في حالة عدم وجود تحديث جديد أن يتم ظهور رسالة بعبارة : "النسخة التي لديك هي الأحدث" أو عبارة "لا يوجد تحديث جديد" أو أي عبارة أخرى توصل المعنى .1 point
-
1 point
-
وعليكم السلام ورحمة الله وبركانه طلبك واضح والامر ليس بالسهولة التي تتصورها فالشروط كثيرة والتساؤلات اكثر ومنها اذا كان حضور الموظف بعد العاشرة ما تصنيفه على كل حال الكود حسب الشروط الثي دكرنها في طلبك والذي اراه انا غير مكتمل لانه اي موظف يحضر بعد الساعة العاشرة بأخد يوميته كاملة الملف لائحة ضبط الدوام.xlsm1 point
-
أخي @Hussein888 في Excel 365 يوجد خاصية تلقائية تعرف بـ AutoComplete التي تجعل القوائم المنسدلة تتفاعل بشكل ديناميكي مع الحروف التي تكتبها في الخلية حيث يتم تحديث القائمة لتظهر القيم التي تطابق ما كتبته لكن في Excel 2016 لا توجد هذه الخاصية بشكل افتراضي في القوائم المنسدلة المعتمدة على Data Validation ولكن هناك حل بديل باستخدام VBA كما في المثال التالي بما أنك لم تقم بإرفاق ملفك لتحديد النطاقات المطلوبة إليك الكود يمكنك تعديله بما يناسبك Option Compare Text Dim a() Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' تحديد نطاق القوائم المنسدلة If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then ' (الأسماء) تحديد نطاق البيانات Set Rng = Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row) Set tbl = CreateObject("Scripting.Dictionary") tbl.CompareMode = vbTextCompare For Each c In Rng If c.Value <> "" Then tbl(c.Value) = "" Next c a = tbl.Keys 'ترتيب ابجدي tri a, 1, UBound(a) With Me.ComboBox1 .List = a: .Top = Target.Top: .Left = Target.Left: .Width = Target.Width .Height = Target.Height + 3: .Visible = True: .Activate End With Else Me.ComboBox1.Visible = False End If End Sub Private Sub ComboBox1_Change() If Me.ComboBox1.Text <> "" Then Set tbl = CreateObject("Scripting.Dictionary") tmp = "*" & UCase(Me.ComboBox1.Text) & "*" ' البحث عن النص في أي مكان For Each c In a If UCase(c) Like tmp Then tbl(c) = "" Next c Me.ComboBox1.List = tbl.Keys Me.ComboBox1.DropDown End If ActiveCell.Value = Me.ComboBox1.Text End Sub Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Me.ComboBox1.List = a Me.ComboBox1.Activate Me.ComboBox1.DropDown End Sub Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then ActiveCell.Offset(1).Select End Sub Sub tri(a, gauc, droi) ref = a((gauc + droi) \ 2) g = gauc: d = droi Do Do While a(g) < ref: g = g + 1: Loop Do While ref < a(d): d = d - 1: Loop If g <= d Then temp = a(g): a(g) = a(d): a(d) = temp g = g + 1: d = d - 1 End If Loop While g <= d If g < droi Then Call tri(a, g, droi) If gauc < d Then Call tri(a, gauc, d) End Sub Test-Data Validation.xlsb1 point
-
وعليكم السلام ورحمة الله وبركاته اخي الفاضل كان من المفترض ان يكون العمود A في كل الشيتات ترقيم حتى يمكن الحذف باختيار الصف من الترقيم على كل حال تم انشاء ترقيم تلقائي في عمود اخر عتد الدخول على الفورم سيكون الكمبوكس1 فارغا قم باختيار الصفحة المراد حذف البيانات منها اتمنى ان يكون الملف قيه طلبك نموذج الكهرباء _ اكسيل.xlsm1 point
-
1 point
-
1 point
-
يمكنك استعمال هذه المعادلة في E5 =IFERROR(INDEX(H!$A$1:$U$100,MATCH(A5,H!$A$1:$A$100,0),MATCH(C5,H!$A$1:$U$1,0)+2),"") يجب مراجعة تنسيق خلايا العمود A في شيت H لأنها لا يتعامل معها الاكسل كأرقام تظهر النتائج بعد كتابة الرقم من جديد لا أدري لماذا بالتوفيق1 point