EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่างเพิ่มเติม)Code: Select all
Public Class Form1
Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "" Then
MsgBox("กรุณาใส่ Username ก่อน", MsgBoxStyle.Critical)
ElseIf TextBox2.Text = "" Then
MsgBox("กรุณาใส่ Password ก่อน", MsgBoxStyle.Critical)
Else
WebBrowser1.Document.GetElementById("inputID").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("inputPW").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click")
End If
End Sub
End Class
ไม่มี error ใดเกิดขึ้นเลยครับมันมีปัญหาตรงเวลากดที่ปุ่ม button1 แล้วใน WebBrowser1 ที่แทรกไว้ มันจะใส่ค่าของ ID กับ password ลงไปเค่นั้นครับแต่ไม่ทำการกด login ให้ เดี๋ยวผมเอา Project ให้อาจารย์ดูนะครับsnasui wrote: เท่าที่ดูก็อ้างอิงชื่อปุ่มบนเว็บที่แนบมาถูกต้องแล้ว ส่วนที่ Login ไม่ได้นั้นไม่สามารถตรวจสอบให้ได้เนื่องจากไม่มี Project ไม่ทราบว่ามี Error ใดหรือไม่ครับ
เดี๋ยวผมทำเป็น project ใหม่เลยดีกว่าครับให้เป็นแนวทางแก้ไขเอามาปรับใช้ครับ รบกวนอาจารย์หน่อยนะครับ ผมได้แนบไฟล์ไว้ให้แล้วนะครับsnasui wrote: ผมดาวน์โหลดไม่ได้ ติด Permission ไม่ทราบว่า Project มีขนาดเท่าใด ตัดเอามาเฉพาะงานนี้ก็พอครับ
Code: Select all
Imports System.Net
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim req As HttpWebRequest = WebRequest.Create("http://bot.whatismyipaddress.com")
Dim res As HttpWebResponse = req.GetResponse
Dim stream As Stream = res.GetResponseStream
Dim sr As New StreamReader(stream)
TextBox3.Text = sr.ReadToEnd
End Sub
End Class
Code: Select all
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click")
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("http://ini3netcafe.mygame.in.th/")
End Sub
End Class
โอ้ ขอภัยด้วยครับอาจารย์ แนบไฟลใหม่ครับในส่วนของ IP อยากให้มันขึ้นแบบในรูปนี้ครับsnasui wrote: Project ที่แนบมามีแต่ Code ด้านล่างเท่านั้น
ช่วยแนบ Code สำหรับการ Login, Code แสดง IP ที่บอกว่าเป็นปัญหามาใน Project ด้วยครับCode: Select all
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click") End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate("http://ini3netcafe.mygame.in.th/") End Sub End Class
ในส่วนของการแสดง IP ใน VB ผมใส่ ' ไว้หน้าcode เพื่อไม่ให้มันทำงาน บางครั้งเวลารันโดยการกด F5 มันจะแจ้ง error ขึ้นแบบนี้ซึ่งคาดว่าน่าจะเกิดจากการที่ Webrequest ที่อ้างถึงไม่สามารถเข้าได้แต่ถ้าเข้าไปเปิดตัวโปรแกรมโดยตรงใน folder Debug มันสามารถ รันได้ปรกติครับซึ่งในส่วนนี้ขอคำแนะนำเว็บเพิ่มเติมจากอาจารย์ด้วยครับ error ตามรูปครับthanasit55 wrote:โอ้ ขอภัยด้วยครับอาจารย์ แนบไฟลใหม่ครับในส่วนของ IP อยากให้มันขึ้นแบบในรูปนี้ครับsnasui wrote: Project ที่แนบมามีแต่ Code ด้านล่างเท่านั้น
ช่วยแนบ Code สำหรับการ Login, Code แสดง IP ที่บอกว่าเป็นปัญหามาใน Project ด้วยครับCode: Select all
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click") End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate("http://ini3netcafe.mygame.in.th/") End Sub End Class
Code: Select all
Dim res As HttpWebResponse = req.GetResponse
Code: Select all
WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click")
ครับผม ขอบคุณอาจารย์มากครับ ผมก็ลองหา code จากหลายๆเว็บแล้วมันก็ไม่ทำงาน ตอนนี้ก็ทำหน้า form อื่นๆ รอไปก่อนแล้วในส่วนของ IP ที่อยากให้แสดงเป็น 4 textbox นี่สามารถทำได้หรือไม่ครับsnasui wrote: กรณีการ Login น่าจะใช้ Code นี้ได้
แต่เท่าที่ลองก็ไม่แสดงผลอะไร เดี๋ยวหากมีเวลาแล้วจะหาคำตอบให้รวมทั้งกรณี Error ด้วยครับCode: Select all
WebBrowser1.Document.GetElementById("btn-login").InvokeMember("click")
ทำได้ครับthanasit55 wrote:ในส่วนของ IP ที่อยากให้แสดงเป็น 4 textbox นี่สามารถทำได้หรือไม่ครับ
Code: Select all
Dim ipVar as variant
dim txtIP as string
ipVar = split(txtIP,".")
tBox1 = ipVar(0)
tBox2 = ipVar(1)
tBox3 = ipVar(2)
tBox4 = ipVar(3)
ขอรบกวนอาจารย์อีกหน่อยนะครับ พอดีความรู้ด้านนี้ไม่มีเลยจริงๆ ไม่ทรายว่า code ตัวนี้ควรเอาไปวางต่อแบบไหนครับ ต่อจาก Form1 เลยหรืออย่างไรครับแล้ว txtIP นี่คือ textbox ที่แสดง ip แบบเต็มๆใช่หรือไม่ครับแล้วสร้าง textbox ขึ้นมาอีก 4 อันใช่ไหมครับ พอดีผมลองแก้แล้ว error เพียบเลยครับผมsnasui wrote:ทำได้ครับthanasit55 wrote:ในส่วนของ IP ที่อยากให้แสดงเป็น 4 textbox นี่สามารถทำได้หรือไม่ครับ
ตัวอย่าง Codeโดย txtIP คือค่าตัวแปรแทนหมายเลข IP ส่วน tBox1, tBox2, tBox3, tBox4 คือ TextBox ที่รับค่า IP แต่ละค่าที่แบ่งออกมาแล้วCode: Select all
Dim ipVar as string dim txtIP as string ipVar = split(txtIP,".") tBox1 = ipVar(0) tBox2 = ipVar(1) tBox3 = ipVar(2) tBox4 = ipVar(3)
Code: Select all
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim req As HttpWebRequest = WebRequest.Create("http://bot.whatismyipaddress.com")
Dim res As HttpWebResponse = req.GetResponse
Dim stream As Stream = res.GetResponseStream
Dim sr As New StreamReader(Stream)
TextBox3.Text = sr.ReadToEnd
Dim ipVar As String
Dim textbox3 As String
ipVar = Split(textbox3, ".")
TextBox4 = ipVar(0)
TextBox5 = ipVar(1)
TextBox6 = ipVar(2)
TextBox7 = ipVar(3)
End Sub
Code: Select all
Try
Dim codeProjectHost As String = "www.google.com" '"http://www.ini3netcafe.mygame.in.th/"
Dim ips As IPAddress() = Dns.GetHostAddresses(codeProjectHost)
Dim t As String = String.Empty
Dim ipSeparate() As String
For Each ip As IPAddress In ips
t += t & ip.ToString()
Exit For
Next
TextBox3.Text = t
ipSeparate = Split(t, ".")
TextBox4.Text = ipSeparate(0)
TextBox5.Text = ipSeparate(1)
TextBox6.Text = ipSeparate(2)
TextBox7.Text = ipSeparate(3)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
ขอบคุณมากครับอาจารย์ ตอนนี้ก็เหลือแต่การกดปุ่มอย่างเดียวละครับ ขอบคุณอาจาร์ยมากครับผมsnasui wrote: ตัวอย่าง Code สำหรับการแสดง IP ครับ
ส่วนของ Site ที่แนบมานั้นเกิด Error ไม่สามารถแสดง IP ได้
ด้านล่างเป็นภาพการเพิ่ม TextBox เข้ามารับค่า IP ที่แบ่งออกเป็น 4 ชุดครับCode: Select all
Try Dim codeProjectHost As String = "www.google.com" '"http://www.ini3netcafe.mygame.in.th/" Dim ips As IPAddress() = Dns.GetHostAddresses(codeProjectHost) Dim t As String = String.Empty Dim ipSeparate() As String For Each ip As IPAddress In ips t += t & ip.ToString() Exit For Next TextBox3.Text = t ipSeparate = Split(t, ".") TextBox4.Text = ipSeparate(0) TextBox5.Text = ipSeparate(1) TextBox6.Text = ipSeparate(2) TextBox7.Text = ipSeparate(3) Catch ex As Exception MessageBox.Show(ex.Message) End Try
Code: Select all
If TextBox1.Text = "" Then
MsgBox("กรุณาใส่ Username ก่อน", MsgBoxStyle.Critical)
ElseIf TextBox2.Text = "" Then
MsgBox("กรุณาใส่ Password ก่อน", MsgBoxStyle.Critical)
Else
WebBrowser1.Document.GetElementById("inputID").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("inputPW").SetAttribute("value", TextBox2.Text)
Try
Dim theElementCollection As HtmlElementCollection
theElementCollection = WebBrowser1.Document.All
For Each curElement As HtmlElement In theElementCollection
If curElement.GetAttribute("OuterHtml").Contains("btn-login.png") Then
curElement.InvokeMember("click")
'MsgBox("it does the job")
End If
Next
Catch exc As Exception
MsgBox(exc.Message)
End Try
End If
ขอบคุณครับอาจารย์ ขอนำไปทดสอบแล้วจะแจ้งผลนะครับsnasui wrote: ตัวอย่าง Code สำหรับการคลิกปุ่มเพื่อ Login ครับ
Code: Select all
If TextBox1.Text = "" Then MsgBox("กรุณาใส่ Username ก่อน", MsgBoxStyle.Critical) ElseIf TextBox2.Text = "" Then MsgBox("กรุณาใส่ Password ก่อน", MsgBoxStyle.Critical) Else WebBrowser1.Document.GetElementById("inputID").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.GetElementById("inputPW").SetAttribute("value", TextBox2.Text) Try Dim theElementCollection As HtmlElementCollection theElementCollection = WebBrowser1.Document.All For Each curElement As HtmlElement In theElementCollection If curElement.GetAttribute("OuterHtml").Contains("btn-login.png") Then curElement.InvokeMember("click") 'MsgBox("it does the job") End If Next Catch exc As Exception MsgBox(exc.Message) End Try End If
ปล.2 code IP ทำงานแล้วครับ ขอบคุณอาจารย์มากครับ ผมลืมthanasit55 wrote:ขอบคุณครับอาจารย์ ขอนำไปทดสอบแล้วจะแจ้งผลนะครับsnasui wrote: ตัวอย่าง Code สำหรับการคลิกปุ่มเพื่อ Login ครับ
Code: Select all
If TextBox1.Text = "" Then MsgBox("กรุณาใส่ Username ก่อน", MsgBoxStyle.Critical) ElseIf TextBox2.Text = "" Then MsgBox("กรุณาใส่ Password ก่อน", MsgBoxStyle.Critical) Else WebBrowser1.Document.GetElementById("inputID").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.GetElementById("inputPW").SetAttribute("value", TextBox2.Text) Try Dim theElementCollection As HtmlElementCollection theElementCollection = WebBrowser1.Document.All For Each curElement As HtmlElement In theElementCollection If curElement.GetAttribute("OuterHtml").Contains("btn-login.png") Then curElement.InvokeMember("click") 'MsgBox("it does the job") End If Next Catch exc As Exception MsgBox(exc.Message) End Try End If
ส่วนของการแสดง IP ผมติด error ตรงคำว่า IPaddress() ครับ มันแจ้งว่า type 'IPaddress' is not defined ผมต้องไปกำหนดอะไรเพิ่มเติมหรอครับ
ขอบคุณอาจารย์มากครับผม
ปล.code login สามารถทำงานได้ตามต้องการแล้วครับ
Code: Select all
Imports System.Net
Imports System.IO
Code ที่ผมเขียนเป็นตัวอย่างไปเป็น IP ของ Google สังเกตจากthanasit55 wrote:อาจารย์ครับ ในส่วนของ IP ยังไม่ตรงครับ มันเป็น DNS IP หรือปล่าวครับเพราะ IP ในโปรแกรมกับ IP ของผมไม่ตรงกันครับ
Dim codeProjectHost As String = "[color=#FF4000]www.google.com[/color]" '"http://www.ini3netcafe.mygame.in.th/"
ครับ ส่วนของ Web ที่ให้มานั้นไม่สามารถที่จะดึง IP มาด้วย Code ที่ผมเขียนไปได้ ซึ่งผมได้แจ้งเอาไว้แล้วเช่นกัน อันนี้ผมคงช่วยไม่ได้ คงต้องลองค้นดูเองว่าเกิดจากปัญหาใดครับขอบคุณครับอาจารย์ ลองงัดแงะแก้ไขไปก่อนครับsnasui wrote:Code ที่ผมเขียนเป็นตัวอย่างไปเป็น IP ของ Google สังเกตจากthanasit55 wrote:อาจารย์ครับ ในส่วนของ IP ยังไม่ตรงครับ มันเป็น DNS IP หรือปล่าวครับเพราะ IP ในโปรแกรมกับ IP ของผมไม่ตรงกันครับDim codeProjectHost As String = "[color=#FF4000]www.google.com[/color]" '"http://www.ini3netcafe.mygame.in.th/"
ครับ ส่วนของ Web ที่ให้มานั้นไม่สามารถที่จะดึง IP มาด้วย Code ที่ผมเขียนไปได้ ซึ่งผมได้แจ้งเอาไว้แล้วเช่นกัน อันนี้ผมคงช่วยไม่ได้ คงต้องลองค้นดูเองว่าเกิดจากปัญหาใดครับ