وعليكم السلام ورحمة الله وبركاته
أخي الكريم قم بإضافة كائن أوفيس إلى المشروع وذلك بالطريقة التالية:
من القائمة 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
بالتوفيق
الكود يعمل شكرا لك اخى العزيز
لدى سؤال اخر
لو عندى ف نفس الشيت اللى فات عمود فيه تواريخ بالفورمات دا 1-1-2013 12.0.0
الساعه والتاريخ اقصد
ف كنت عاوز كود يخلينى اعرف كم مره اتكرر التاريخ دا ومايحسبش الساعات يعنى تواريخ بس اقصد
تفضل يا غالي
هذا تعديل على الكود السابق
كود :
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
بالتوفيق
مبدع يا اخي .
استفسار متعلق بالموضوع .
عندي جدول في اكسل يحتوي مثلا بيانات لاسم والعنوان ورقم التليفون
كيف اضيف بيانات من الفيجوال بالترتيب ؟
يعني عند وضع الاسم يتم اضافته فى اكسل بالترتيب ثم العنوان ثم الرقم
كأني اضيفه يدوي في اكسل
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 اتكررو كام مره
السلام عليكم
تفضل أخي الكريم
هذا الكود لا يعتمد على عدد معين من التواريخ فمهما بلغ العدد سيذكر لك جميع قيم التاريخ وكل قيمة كم مرة تكررت
كود :
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
بالتوفيق
خادم الدين كتب :مبدع يا اخي .
استفسار متعلق بالموضوع .
عندي جدول في اكسل يحتوي مثلا بيانات لاسم والعنوان ورقم التليفون
كيف اضيف بيانات من الفيجوال بالترتيب ؟
يعني عند وضع الاسم يتم اضافته فى اكسل بالترتيب ثم العنوان ثم الرقم
كأني اضيفه يدوي في اكسل
هل تقصد بالترتيب أي أنك تدخل الاسم ثم العنوان ثم الرقم
أم أنك تقصد بالترتيب الأبجدي؟
الاسم ثم العنوان ثم الرقم . ثم يحفظ وينتقل للسطر الذي بعده يسجل الاسم والعنوان والرقم