تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال عن كود يقوم بعدد عنصر معين فى ملف اكسيل
#1
السلام عليكم

اريد كود برنامج يقوم بعد عنصر معين فى ملف اكسيل ويقوم بعرض العدد فى تيكست بوكس
بمعنى لو لدى شيت اكسيل به عمود يحتوى على اسماء دول مصر و فرنسا والمغرب الخ اكثر من مره فتكون وظيفة البرنامج عدد كم مرة احتوى العمود مصر وكم مره فرنسا وهكذا
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته
أخي الكريم قم بإضافة كائن أوفيس إلى المشروع وذلك بالطريقة التالية:
من القائمة Project --> Add Reference
ثم من التبويب COM
نختار Microsoft Office 11.0 Object Library بحسب الإصدار (هنا الإصدار 11)

ثم قم بوضع مربعي نص TextBox1 و TextBox2 وButton1
حيث أن الأول تكتب الكلمة المراد حساب عدد التكرار لها والثاني عدد التكرار
وبعد ذلك ضع الكود التالي
كود :
Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim exl_app As New Excel.Application
        Dim exl_wrk As Excel.Workbook
        Dim exl_wst As Excel.Worksheet
        exl_app = CreateObject("Excel.Application")
        exl_wrk = exl_app.Workbooks.Open("c:\Book1.xls")
        exl_wst = exl_wrk.Worksheets(1)
        Dim Counter As Integer = 0
        Dim Index As Integer = 1
        With exl_wst
            Dim Value As String
            For I = 1 To .UsedRange.Rows.Count
                Value = .Range("D" & I).Value
                Application.DoEvents()
                If Value = TextBox1.Text Then
                    Counter += 1
                End If
            Next
        End With
        TextBox2.Text = Counter
    End Sub
End Class

الآن شغل البرنامج مع وضع المسار الصحيح لملف الإكسل
ثم اكتب الكلمة ولتكن (فرنسا) ثم قم بالضغط على الزر
أخيرا ستظهر لك النتيجة في TextBox2
مع الملاحظة أنني اخترت هنا العمود D وتستطيع أنت تغييره إلى العمود الذي تريد مثلا A أو B

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#3
الكود يعمل شكرا لك اخى العزيز
الرد }}}
تم الشكر بواسطة:
#4
لدى سؤال اخر
لو عندى ف نفس الشيت اللى فات عمود فيه تواريخ بالفورمات دا 1-1-2013 12.0.0
الساعه والتاريخ اقصد
ف كنت عاوز كود يخلينى اعرف كم مره اتكرر التاريخ دا ومايحسبش الساعات يعنى تواريخ بس اقصد
الرد }}}
تم الشكر بواسطة:
#5
تفضل يا غالي
هذا تعديل على الكود السابق

كود :
Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim exl_app As New Excel.Application
        Dim exl_wrk As Excel.Workbook
        Dim exl_wst As Excel.Worksheet
        exl_app = CreateObject("Excel.Application")
        exl_wrk = exl_app.Workbooks.Open("c:\Book1.xls")
        exl_wst = exl_wrk.Worksheets(1)
        Dim Counter As Integer = 0
        With exl_wst
            Dim Value As String
            For I = 1 To .UsedRange.Rows.Count
                If Not String.IsNullOrEmpty(.Range("D" & I).Value) Then
                    Value = .Range("D" & I).Value.ToString.Split(" ")(0)
                    Application.DoEvents()
                    If Value = TextBox1.Text Then
                        Counter += 1
                    End If
                End If
            Next
        End With
        TextBox2.Text = Counter
    End Sub
End Class

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#6
مبدع يا اخي .

استفسار متعلق بالموضوع .

عندي جدول في اكسل يحتوي مثلا بيانات لاسم والعنوان ورقم التليفون

كيف اضيف بيانات من الفيجوال بالترتيب ؟

يعني عند وضع الاسم يتم اضافته فى اكسل بالترتيب ثم العنوان ثم الرقم

كأني اضيفه يدوي في اكسل
الرد }}}
تم الشكر بواسطة:
#7
sooriaty03 كتب :تفضل يا غالي
هذا تعديل على الكود السابق

كود :
Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim exl_app As New Excel.Application
        Dim exl_wrk As Excel.Workbook
        Dim exl_wst As Excel.Worksheet
        exl_app = CreateObject("Excel.Application")
        exl_wrk = exl_app.Workbooks.Open("c:\Book1.xls")
        exl_wst = exl_wrk.Worksheets(1)
        Dim Counter As Integer = 0
        With exl_wst
            Dim Value As String
            For I = 1 To .UsedRange.Rows.Count
                If Not String.IsNullOrEmpty(.Range("D" & I).Value) Then
                    Value = .Range("D" & I).Value.ToString.Split(" ")(0)
                    Application.DoEvents()
                    If Value = TextBox1.Text Then
                        Counter += 1
                    End If
                End If
            Next
        End With
        TextBox2.Text = Counter
    End Sub
End Class

بالتوفيق

شكرا على ردك ومساعدتك لى
كنت عاوز تعديل بسيط اخير
لو عاوز مااكتبش التاريخ فى تيكست بوكس 1 عاوز البرنامج هو يكتب التاريخ ف التكست بوكس لوحده ويقولى ف تيكست بوكس 2 كم مره اتكرر
يعنى على فرض ان فيه تاريخين بس ف الشيت ف انا هعمل 4 تيكست بوكس
فوظيفة البرنامج انه يكتب ف التيكست بوكس 1 و 2 التاريخين اللى ف الشيت
والتيكست بوكس 3 و 4 اتكررو كام مره
الرد }}}
تم الشكر بواسطة:
#8
السلام عليكم
تفضل أخي الكريم
هذا الكود لا يعتمد على عدد معين من التواريخ فمهما بلغ العدد سيذكر لك جميع قيم التاريخ وكل قيمة كم مرة تكررت
كود :
Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim exl_app As New Excel.Application
        Dim exl_wrk As Excel.Workbook
        Dim exl_wst As Excel.Worksheet
        exl_app = CreateObject("Excel.Application")
        exl_wrk = exl_app.Workbooks.Open("c:\Book1.xlsx")
        exl_wst = exl_wrk.Worksheets(1)
        Dim Counter As New List(Of String)
        Dim Values As New List(Of String)
        With exl_wst
            Dim Value As String
            Dim Index As Integer
            For I = 1 To .UsedRange.Rows.Count
                If Not String.IsNullOrEmpty(.Range("D" & I).Value) Then
                    Value = .Range("D" & I).Value.ToString.Split(" ")(0)
                    Index = Values.IndexOf(Value)
                    Application.DoEvents()
                    If Index = -1 Then
                        Values.Add(Value)
                        Counter.Add("1")
                    Else
                        Counter.Item(Index) = Val(Counter.Item(Index)) + 1
                    End If
                End If
            Next
        End With
        'إذا أردت إضافتهم إلى أداة نص
        'تستطيع استخدامها في حال كان عندك تاريخين فقط
        TextBox1.Text = Values.Item(0)
        TextBox2.Text = Values.Item(1)
        TextBox3.Text = Counter.Item(0)
        TextBox4.Text = Counter.Item(1)
        'إذا أردت إضافتهم إلى قائمة
        'تستطيع استخدامها مهما كان عدد التواريخ
        ListBox1.Items.AddRange(Values.ToArray)
        ListBox2.Items.AddRange(Counter.ToArray)
    End Sub
End Class


بالتوفيق
الرد }}}
تم الشكر بواسطة:
#9
خادم الدين كتب :مبدع يا اخي .

استفسار متعلق بالموضوع .

عندي جدول في اكسل يحتوي مثلا بيانات لاسم والعنوان ورقم التليفون

كيف اضيف بيانات من الفيجوال بالترتيب ؟

يعني عند وضع الاسم يتم اضافته فى اكسل بالترتيب ثم العنوان ثم الرقم

كأني اضيفه يدوي في اكسل

هل تقصد بالترتيب أي أنك تدخل الاسم ثم العنوان ثم الرقم
أم أنك تقصد بالترتيب الأبجدي؟
الرد }}}
تم الشكر بواسطة:
#10
الاسم ثم العنوان ثم الرقم . ثم يحفظ وينتقل للسطر الذي بعده يسجل الاسم والعنوان والرقم
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم