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

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

قام بنشر

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

ارجو المساعدة في تعديل هذا الكود المميز بنكهة الذكاء الاصطناعي ليقوم بتبادل البيانات بين 4  ملفات .... 

رابط الملفات حيث حجمها كبير
https://www.mediafire.com/file/6nqdhfbiqddkd3o/asa.rar/file



 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim wb As Workbook
    Dim rngSource As Range, rngTarget As Range
    Dim arrFiles As Variant
    Dim conn As Object, rs As Object
    Dim filePath As String
    Dim i As Long, lastRow As Long

    If IsSyncing Then Exit Sub
    If Sh.CodeName <> "Sheet1" Then Exit Sub
    If Intersect(Target, Sh.Range("A1:CV1")) Is Nothing Then Exit Sub

    IsSyncing = True

    ' تحديد الصف الأخير الفارغ في العمود B داخل الملف الرئيسي
    lastRow = Sh.Cells(Sh.Rows.Count, 2).End(xlUp).Row
    Set rngSource = Sh.Range("A1:CV" & lastRow)

    ' تحديد المسارات ديناميكيًا اعتمادًا على موقع ملف Excel الحالي
    arrFiles = Array(ThisWorkbook.Path & "\asa1.xlsm", _
                     ThisWorkbook.Path & "\asa2.xlsm", _
                     ThisWorkbook.Path & "\asa3.xlsm", _
                     ThisWorkbook.Path & "\asa4.xlsm")

    For i = 0 To UBound(arrFiles)
        On Error Resume Next
        Set wb = Application.Workbooks(arrFiles(i))
        On Error GoTo 0

        If Not wb Is Nothing Then
            ' إذا كان الملف مفتوحًا، يتم التعديل مباشرة في الجدول
            lastRow = wb.Sheets("data").Cells(wb.Sheets("data").Rows.Count, 2).End(xlUp).Row
            Set rngTarget = wb.Sheets("data").Range("A1:CV" & lastRow)
            rngTarget.Value = rngSource.Value
        Else
            ' إنشاء الاتصال بـ ADO
            Set conn = CreateObject("ADODB.Connection")

            filePath = arrFiles(i)
            conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"";"

            ' التحقق من أن الاتصال مفتوح قبل تنفيذ أي استعلام
            If conn.State = 1 Then
                ' استدعاء أسماء الجداول المتاحة للتحقق من وجود Table1
                Set rs = conn.OpenSchema(20) ' 20 = adSchemaTables
                Do While Not rs.EOF
                    Debug.Print rs.Fields("TABLE_NAME").Value
                    rs.MoveNext
                Loop
                rs.Close

                ' تنفيذ التحديث فقط إذا كان الجدول موجودًا
                conn.Execute "UPDATE [data$] SET F1='" & rngSource.Cells(1, 1).Value & "' WHERE F1 IS NOT NULL"
            Else
                MsgBox "فشل في فتح الاتصال بالملف: " & filePath, vbExclamation, "خطأ في الاتصال"
            End If

            conn.Close
            Set conn = Nothing
        End If
    Next i

    IsSyncing = False
End Sub

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information