snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#1
Post
by 9KiTTi » Sat May 11, 2024 10:19 pm
ขออนุญาตสอบถามครับ ผมนำ vba จาก google มาปรับแก้เพื่อให้สามารถอัพโหลดข้อมูลจากช่วง A2:T8 ไปยัง google sheet แต่ติด error ไม่สามารถไม่ทำงาน รบกวนขอคำแนะนำด้วยครับ ขอบพระครับ
Code: Select all
Sub submitForm()
Set http = CreateObject("MSXML2.ServerXMLHTTP")
strURL = "https://docs.google.com/spreadsheets/d/1V0aIM5hIYHdpHTQBA89gBmwIaT7CJ7d9U4TDHI2X8Ws/formResponse?ifq"
intTotalRows = ThisWorkbook.Sheets("Data").Cell(Rows.Count, 1).End(xlUp).Row
strUniqueID = ThisWorkbook.Sheets("Data").Range("A27").Text
For rowNo = 2 To inTotalRows
strHoscode = ThisWorkbook.Sheets("Data").Range("A" & rowNo).Text
strHos = ThisWorkbook.Sheets("Data").Range("B" & rowNo).Text
strTotal_case = ThisWorkbook.Sheets("Data").Range("C" & rowNo).Text
strTotal_money = ThisWorkbook.Sheets("Data").Range("D" & rowNo).Text
strMoneyRecives = ThisWorkbook.Sheets("Data").Range("E" & rowNo).Text
strTotal_caseRecives = ThisWorkbook.Sheets("Data").Range("F" & rowNo).Text
strTotal_case_notRecives = ThisWorkbook.Sheets("Data").Range("G" & rowNo).Text
strappeal_money = ThisWorkbook.Sheets("Data").Range("H" & rowNo).Text
strappeal_case_recives = ThisWorkbook.Sheets("Data").Range("I" & rowNo).Text
strappeal_case_notrecives = ThisWorkbook.Sheets("Data").Range("J" & rowNo).Text
strHC_money = ThisWorkbook.Sheets("Data").Range("K" & rowNo).Text
strHC_case = ThisWorkbook.Sheets("Data").Range("L" & rowNo).Text
strAE_Money = ThisWorkbook.Sheets("Data").Range("M" & rowNo).Text
strAE_Case = ThisWorkbook.Sheets("Data").Range("N" & rowNo).Text
strPP_Money = ThisWorkbook.Sheets("Data").Range("O" & rowNo).Text
strPP_Case = ThisWorkbook.Sheets("Data").Range("P" & rowNo).Text
strOPFS_Money = ThisWorkbook.Sheets("Data").Range("Q" & rowNo).Text
strOPFS_Case = ThisWorkbook.Sheets("Data").Range("R" & rowNo).Text
strTotalBath = ThisWorkbook.Sheets("Data").Range("S" & rowNo).Text
strTotalCase = ThisWorkbook.Sheets("Data").Range("T" & rowNo).Text
strStatus = ThisWorkbook.Sheets("Data").Range("U" & rowNo).Text
strData = "&entry.1409202324=" & strHoscode
strData = "&entry.869567421=" & strHos
strData = "&entry.1817716227=" & strTotal_case
strData = "&entry.1058867388=" & strTotal_money
strData = "&entry.1200554119=" & strMoneyRecives
strData = "&entry.618879238=" & strTotal_caseRecives
strData = "&entry.1326498046=" & strTotal_case_notRecives
strData = "&entry.1999532598=" & strappeal_money
strData = "&entry.1684112441=" & strappeal_case_recives
strData = "&entry.896384008=" & strappeal_case_notrecives
strData = "&entry.864200327=" & strHC_money
strData = "&entry.1783506789=" & strHC_case
strData = "&entry.1844433011=" & strAE_Money
strData = "&entry.1012783967=" & strAE_Case
strData = "&entry.118809898=" & strPP_Money
strData = "&entry.840118038=" & strPP_Case
strData = "&entry.760455949=" & strOPFS_Money
strData = "&entry.824958677=" & strOPFS_Case
strData = "&entry.658889761=" & strTotalBath
strData = "&entry.1806805796=" & strTotalCase
strFinalUrl = strURL & strData
http.Open "POST", strFinalUrl, False
http.send
If http.statusText = "OK" Then
ThisWorkbook.Sheets("Data").Range("U" & rowNo) = "OK"
strUniqueID = strUniqueID + 1
ThisWorkbook.Sheets("Data").Range("A27") = strUniqueID
ThisWorkbook.Sheets("Data").Range("A" & rowNo) = strUniqueID
End If
Next
MsgBox "Done"
End Sub
google sheet
https://docs.google.com/spreadsheets/d/ ... sp=sharing
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Sun May 12, 2024 9:12 am
ช่วยแจ้ง Error ที่พบ จับภาพนั้นมาด้วยจะได้เข้าถึงปัญหาได้โดยไวครับ
ที่มองเร็ว ๆ แล้วเห็นว่าไม่ถูกต้องตอนนี้มี 3 อย่างคือ
ใน Code อ้างชีตชื่อ Data แต่ไม่มีชีตนี้อยู่จริง
ใน Code อ้างตำแหน่งเซลล์เป็น cell(rows.count,rowno) ที่ถูกควรเป็น cells(rows.count,rowno)
ตัวแปร intTotalRows เขียนไม่เหมือนกัน
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#3
Post
by 9KiTTi » Sun May 12, 2024 6:49 pm
snasui wrote: Sun May 12, 2024 9:12 am
ช่วยแจ้ง Error ที่พบ จับภาพนั้นมาด้วยจะได้เข้าถึงปัญหาได้โดยไวครับ
ที่มองเร็ว ๆ แล้วเห็นว่าไม่ถูกต้องตอนนี้มี 3 อย่างคือ
ใน Code อ้างชีตชื่อ Data แต่ไม่มีชีตนี้อยู่จริง
ใน Code อ้างตำแหน่งเซลล์เป็น cell(rows.count,rowno) ที่ถูกควรเป็น cells(rows.count,rowno)
ตัวแปร intTotalRows เขียนไม่เหมือนกัน
ผมปรับแก้ไขตามที่อาจารย์แล้วครับ สามารถรัน VBA ได้ ไม่ติด error อะไร แต่ไม่สามารถส่งข้อมูลไปที่ google sheet ได้ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Sun May 12, 2024 8:50 pm
Code น่าจะเป็นตามด้านล่างครับ
Code: Select all
Sub submitFormx()
With ThisWorkbook.Worksheets("Data")
Set http = CreateObject("MSXML2.ServerXMLHTTP")
strURL = "https://docs.google.com/spreadsheets/d/1V0aIM5hIYHdpHTQBA89gBmwIaT7CJ7d9U4TDHI2X8Ws/formResponse?ifq"
intTotalRows = .Cells(.Rows.Count, 1).End(xlUp).Row
strUniqueID = .Range("A27").Text
For rowNo = 2 To intTotalRows
strHoscode = .Range("A" & rowNo).Text
strHos = .Range("B" & rowNo).Text
strTotal_case = .Range("C" & rowNo).Text
strTotal_money = .Range("D" & rowNo).Text
strMoneyRecives = .Range("E" & rowNo).Text
strTotal_caseRecives = .Range("F" & rowNo).Text
strTotal_case_notRecives = .Range("G" & rowNo).Text
strappeal_money = .Range("H" & rowNo).Text
strappeal_case_recives = .Range("I" & rowNo).Text
strappeal_case_notrecives = .Range("J" & rowNo).Text
strHC_money = .Range("K" & rowNo).Text
strHC_case = .Range("L" & rowNo).Text
strAE_Money = .Range("M" & rowNo).Text
strAE_Case = .Range("N" & rowNo).Text
strPP_Money = .Range("O" & rowNo).Text
strPP_Case = .Range("P" & rowNo).Text
strOPFS_Money = .Range("Q" & rowNo).Text
strOPFS_Case = .Range("R" & rowNo).Text
strTotalBath = .Range("S" & rowNo).Text
strTotalCase = .Range("T" & rowNo).Text
strStatus = .Range("U" & rowNo).Text
strdata = ""
strdata = "&entry.1409202324=" & strHoscode
strdata = strdata & "&entry.869567421=" & strHos
strdata = strdata & "&entry.1817716227=" & strTotal_case
strdata = strdata & "&entry.1058867388=" & strTotal_money
strdata = strdata & "&entry.1200554119=" & strMoneyRecives
strdata = strdata & "&entry.618879238=" & strTotal_caseRecives
strdata = strdata & "&entry.1326498046=" & strTotal_case_notRecives
strdata = strdata & "&entry.1999532598=" & strappeal_money
strdata = strdata & "&entry.1684112441=" & strappeal_case_recives
strdata = strdata & "&entry.896384008=" & strappeal_case_notrecives
strdata = strdata & "&entry.864200327=" & strHC_money
strdata = strdata & "&entry.1783506789=" & strHC_case
strdata = strdata & "&entry.1844433011=" & strAE_Money
strdata = strdata & "&entry.1012783967=" & strAE_Case
strdata = strdata & "&entry.118809898=" & strPP_Money
strdata = strdata & "&entry.840118038=" & strPP_Case
strdata = strdata & "&entry.760455949=" & strOPFS_Money
strdata = strdata & "&entry.824958677=" & strOPFS_Case
strdata = strdata & "&entry.658889761=" & strTotalBath
strdata = strdata & "&entry.1806805796=" & strTotalCase
strFinalUrl = strURL & strdata
http.Open "POST", strFinalUrl, False
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.send
If http.statusText = "OK" Then
.Range("U" & rowNo) = "OK"
strUniqueID = strUniqueID + 1
.Range("A27") = strUniqueID
.Range("A" & rowNo) = strUniqueID
End If
Next
MsgBox "Done"
End With
End Sub
การที่ Post ไม่ได้ลองเช็ค URL, field_number ฯลฯ
ด้านล่างนี้คือตัวอย่างจาก Copilot ในการ Post ข้อมูลจาก Excel ไปยัง Google Forms
Code: Select all
Sub PostDataToGoogleForm()
Dim httpRequest As Object
Set httpRequest = CreateObject("MSXML2.ServerXMLHTTP")
Dim formURL As String
Dim formData As String
' Replace with your Google Form URL
formURL = "<FORM_URL>"
' Replace with your form data
' Each form field should be in the format "entry.<field_number>.single=<DATA>"
formData = "entry.0.single=<DATA1>&entry.1.single=<DATA2>&..."
httpRequest.Open "POST", formURL, False
httpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
httpRequest.send formData
End Sub