Page 1 of 2

ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Fri Mar 05, 2021 9:53 pm
by GobWeravong
ขออนุญาติสอบถามเรื่องการนำค่าจากตารางที่สร้าง ดัง 3 วิธี ต่อไปนี้ครับ
1) สร้างตารางโดยใช้ตารางใน Powerpoint
2) สร้างจาก Excel ซึ่งได้ copy ไปวางใน PowerPoint
3) จาก Excel ไฟล์โดยตรง
โดยทั้ง 3แบบนี้ จะนำค่าไปแสดงที่ Textbox ใน Powerpoint ครับ
ซึ่งผมได้ลองค้นหาขั้นตอนและ VB Code ต่างๆใน inernet แล้ว (เนื่องจากผมได้ค้นหา VB Code ในไทย และต่างประเทศแล้ว แต่ไม่เจอเลยครับ ที่มีก็ทางต่างชาติที่ซับซ้อนมากๆ โดยใช้ Query กับ functon พิเศษ Datapoint เครื่องผมไม่มีครับ)
จึงขอเรียนปรึกษาและได้แนบไฟล์มาด้วยครับ
ขอบคุณมากๆครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 8:58 am
by snasui
:D ตัวอย่าง Code ใน PowerPoint ครับ

Code: Select all

Private Sub CommandButton1_Click()
'ws.Cells(irow, 1).Value = Me.TextBox1.Value
    Dim sld As Slide
    Set sld = ActivePresentation.Slides("Slide1")
    Me.TextBox1.Value = sld.Shapes(1).Table.Cell(2, 1).Shape.TextFrame.TextRange.Text
    Me.TextBox2.Value = sld.Shapes(1).Table.Cell(3, 2).Shape.TextFrame.TextRange.Text
    Me.TextBox3.Value = sld.Shapes(1).Table.Cell(4, 3).Shape.TextFrame.TextRange.Text
End Sub

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 10:29 am
by GobWeravong
เรียนคุณ snasui ขอขอบคุณเป็นอย่างสูงครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 10:43 am
by GobWeravong
ok ครับ ใช้งานได้แล้วครับ ขอบคุณมากครับ
แบบนี้ผมสามารถนำไปสร้างภาพ diagramภาพ โดยกรอกค่าจาก excel แล้วไปหยอดในแต่ slide ซึ่งจะสามารถรองรับงานเป็น100 slide ได้เลยครับ สุดยอดมากๆครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 11:07 am
by GobWeravong
เรียน​ คุณ​ snasui ครับ​ กรณีที่เป็น​excel​ file​มาวางแบบภาพด้านขวา​ ก็ใช้ code​เดิมดัดแปลงได้ใช่ไหมครับ​ ขอบคุณครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 11:09 am
by snasui
:D ด้านซ้ายของ Slide กับด้านขวาของ Slide เป็น Object คนละชนิด การเขียน Code ไปควบคุมย่อมแตกต่างกันครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 11:25 am
by GobWeravong
เรียน​ คุณ​ snasui​ขอบคุณครับ​ เดี๋ยวผมลอง​ copy​ข้อมูลใน​ file​ excel​ ที่มีจำนวนเยอะๆ​ มาวางในตารางแบบซ้ายมือเพื่อทดสอบก่อนครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sat Mar 06, 2021 10:50 pm
by GobWeravong
เรียน คุณ snasui ครับ ผมไม่สามารถ copy ข้อมูลจากไฟล์ excel ที่มีจำนวน columnประมาณ100 Column และ Row ประมาณ 500 บรรทัด และตารางของ power point ก็จำกัดจำนวนครับ ดังนั้นผมจึงไม่สามารถนำไฟล์ข้อมูลมาวางบน power point ได้ครับ จึงอาจจะต้องใช้วิธี
เอาข้อมูลมาวางที่ Excel แทนครับ จากนั้นให้ค่าใน excel มาวางใส่ใน text box แทนครับ และจะต้องใช้ code อะไรเพื่อดึงข้อมูลดังกล่าวครับ โดยอิงไฟล์แนบเดิม แต่เป็นแบบขวามือครับ หรืออาจจะไปอิงกับไฟล์ excel ต้นฉบับก็ได้ครับ ขอบคุณมากครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sun Mar 07, 2021 6:48 am
by snasui
:D ลองศึกษาจากตัวอย่าง Code ใน Link นี้แล้วเขียนมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

https://docs.microsoft.com/en-us/office ... mat.object

https://docs.microsoft.com/en-us/office ... .oleformat

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sun Mar 07, 2021 8:19 am
by GobWeravong
เรียน คณ snasui ได้แล้วครับ ขอบคุณเป็นอย่างสูงที่แนะนำมาครับ

Code: Select all

Dim sld As Slide, tb As String
Set sld = ActivePresentation.Slides("Slide83")
Me.TextBox1.Value = sld.Shapes(1).OLEFormat.Object.Worksheets(1).Range("A1").Value

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Sun Mar 07, 2021 7:57 pm
by GobWeravong
เรียนคุณ snasui พอดีผมจัดทำไฟล์ขึ้นมาใหม่ และมีการลองทดสอบ code เพื่อให้เรากดปุ่มที่ slide1 แต่ให้มีการส่งค่าไปที่ slide3 และ4 ด้วยครับ ช่วงแรกๆทำงานได้ แต่พอตอนหลังเหมือนสับสนจึงไม่สามารถใช้งานได้ และผมได้เพิ่มปุ่ม dropdrow มีค่าให้เลือก ตอนแรกก็มีค่าให้เลือก สักพักหายไป ไม่แน่ใจผมเผลอไปลบอะไรไหมครับ และต้องการให้ส่งค่าจากการเลือก dropdown ไปแสดงที่ slide3 (textbox2)ด้วยครับ บางปุ่มค่อยๆถยอยทำและศึกษาไปเรื่อยๆครับ ขอบคุณมากๆครับ (เหมือนกับพอปิดไฟล์ เปิดมาใหม่ ค่าปุ่มกับ code ไม่ตรงกันครับ)

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 7:40 am
by snasui
:D การจะให้ ComboBox แสดงค่าจะต้องมีตัวช่วย เช่น คลิกปุ่มใด ๆ แล้วไปเรียก Code เพื่อ Add Item เข้าไปใน ComboBox นั้น ๆ เป็นต้นครับ

กรณีคลิกปุ่มแล้วต้องการให้ค่าใน ComboBox ไปแสดงยัง Slide อื่น ๆ ด้วยดูตัวอย่างตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    ActivePresentation.Slides("Slide92").Shapes("TextBox2").OLEFormat.Object.Value = Me.ComboBox1.Value
    ActivePresentation.Slides("Slide93").Shapes("TextBox2").OLEFormat.Object.Value = Me.ComboBox1.Value
    'Me.TextBox1.Value = sld.Shapes(1).OLEFormat.Object.Worksheets(1).Range("AR3").Value
End Sub
กระทู้นี้เป็นเรื่องเกี่ยวกับ VBA ใน PowerPoint ผมจึงย้ายมาไว้ในหมวด Other แต่สามารถมองเห็นได้จากหมวด Excel

ในส่วนอื่น ๆ ลองเขียนมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 9:20 am
by GobWeravong
เรียน คุณ snasui ขอบคุณมากๆครับ เดี๋ยวผมจะทดสอบดูครับ
ตอนนี้ผมลองทำเพิ่มในส่วน userform เพิ่มขึ้นมาทดแทนการใช้ drop down ที่หน้า silde แต่พอใช้ code ตามด้านล่างนี้ ทำไมเราต้องคีย์ตัวเลขก่อนทุกครั้ง(ตัวอย่างคีย์เลข0) ถึงจะมีตัว DAY#1, DAY#2 ...ให้เราเลือกครับ ซึ่งผมไม่แน่ใจว่าต้องเพิ่มคำสั่งอะไรไหมครับ
ลองค้นหาใน internet และทดสอบมาหลาย code แล้ว แต่ก็ยังเหมือนเดิมครับ ขอบคุณมากๆครับ

Code: Select all

Private Sub ComboBox1_Change()
Me.ComboBox1.AddItem " ", 0
Me.ComboBox1.AddItem "DAY#1", 1
Me.ComboBox1.AddItem "DAY#2", 2
Me.ComboBox1.AddItem "DAY#3", 3
End Sub 

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 9:24 am
by snasui
:D การ Add Item ต้องไปใช้คำสั่งอื่น ไม่ใช่นำมาไว้ที่ ComboBox_Change ครับ

คำสั่งนี้หมายถึงถ้ามีการเลือกค่าใน ComboBox มันจะสร้างรายการขึ้นมา ซึ่งในการใช้งานจริงเราไม่ได้สร้างรายการจากการเปลี่ยนแปลงของ ComboBox แต่จะสร้างเอาไว้ก่อนเพื่อใช้งานในภายหลัง เช่นนี้เป็นต้น

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 10:17 am
by GobWeravong
เรียน คุณ snasui ขอบคุณมากครับ
พอผม double click ที่ปุ่ม Combo Box(drop down) มันจะวิ่งไปให้สร้างที่ ComboBox_Change ตลอดเลยครับ ดังนั้นผมต้องเปลี่ยนคำสั่ง add item เป็นอย่างอื่นใช่ไหมครับ ขอบคุณครับ (รายละเอียดตามภาพ)

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 10:35 am
by snasui
GobWeravong wrote: Tue Mar 09, 2021 10:17 am ดังนั้นผมต้องเปลี่ยนคำสั่ง add item เป็นอย่างอื่นใช่ไหมครับ
:D สามารถเขียนคำสั่ง Add Item ด้วย Change Event ของ Object อื่นที่ไม่ใช่ตัวมันเอง เช่น ComboBox ตัวอื่น, CheckBox, TextBox, Label ฯลฯ หรือ สร้างปุ่มขึ้นมาเองใหม่ เช่น คลิกปุ่มใด ๆ แล้วมีการ Add Item ให้กับ ComboBox เป้าหมาย เช่นนี้เป็นต้นครับ

ที่กำลังทำอยู่นี้คือดักการเปลี่ยนแปลงของตัวมันเองแล้วค่อย Add Item ให้ตัวเอง เป็นวิธีที่ไม่ถูกต้องในการทำงานนี้ เพราะเมื่อมีการเปลี่ยนแปลงเมื่อใดก็จะ Add Item เรื่อยไปครับ

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 11:10 am
by GobWeravong
ผมลองดูตัวอย่างใน internet เขาใช้แบบ code ตามด้านล่างนี้ครับ และใช้งานได้ (แปลกมากๆครับ) ซึ่งผมทำตาม ดังนั้น พอผม click ที่ปุ่ม combo หรือ view code มันจะวิ่งไปให้สร้างที่ Private Sub ComboBox_Change() พอผมเปลี่ยนชื่อ เป็น Private Sub DAY_GotFocus() และคีย์ตาม code ด้านล่างครบถ้วน แต่พอ view code ระบบมันก็ยังคงยืนยันไปที่ Private Sub ComboBox_Change() ตลอดเลยครับ ระบบไม่ชี้เป็นที่ code ใหม่ พอวิว code ก็ยังคงเป็น Private Sub ComboBox_Change() แล้วตามด้วย end ตลอดครับ
(ตามคลิปนี้ครับ https://www.youtube.com/watch?v=ycpbCy41CFg) ขอบคุณครับ

ส่วนเรื่อง AddItem ตามที่คุณ snasui แนะนำมา พอจะเข้าใจแล้วครับ มันคือการเพิ่มหัวข้อใน dropdrop และผมไปนำค่าใน dropdrop เพิ่มไปเรื่อยๆ พอคลิค dropdown มันก็จะเพิ่มทวีคูณไปเรื่อยๆครับ ดังนั้นจะต้องหาคำสั่งใหม่ทดแทน add item เพราะเรากำหนดตัวเลือกไว้แน่นอนแล้วคือ day1, day2,..โดยไม่ต้องไป add เพิ่มเติมแล้ว อย่างนี้นี่เองนะครับ ขอบคุณมากๆครับ

เดี๋ยวผมลองหาคำสั่งตามที่คุณ snasui แนะนำ เพื่อที่จะคีย์ใน Private Sub ComboBox_Change() ต่อไปนะครับ (แต่เท่าที่ดูใน Internet มีแต่คนใช้ add item กันทั้งหมดเลยครับ)

ด้านล่างคือ code จาก internet ครับ

Code: Select all

Private Sub DAY_GotFocus()
If DAY.ListCount = 0 Then DropDownList
End Sub

Sub DropDownList()
DAY.AddItem "DAY#1"
DAY.AddItem "DAY#2"
DAY.AddItem "DAY#3"
DAY.ListRow = 3
End Sub

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 11:58 am
by GobWeravong
เรียน คุณ snasui ครับ
ในส่วนของการนำค่าจากตารางและจาก Combo Box ตามที่คุณ snasui แนะนำมาเพื่อไปแสดงค่าหน้าอื่น
สามารถใช้งานได้แล้วครับ และผมลองเพิ่มเติม if การเลือกค่าตัวเลข 1, 2 เพื่อให้ผลการเลือกที่แตกต่างโดยใช้ code ดังนี้ครับ
ขอบคุณ คุณ snasui มากๆครับ

Code: Select all

 
Private Sub CommandButton2_Click()
Dim sld As Slide, tb As String
Set sld = ActivePresentation.Slides("Slide83")
If ComboBox2.Value = "1_Before" Then
        ActivePresentation.Slides("Slide90").Shapes("TextBox1").OLEFormat.Object.Value = 
                                  sld.Shapes(1).OLEFormat.Object.Worksheets(1).Range("AR3").Value
        ActivePresentation.Slides("Slide90").Shapes("TextBox2").OLEFormat.Object.Value = 
                                  sld.Shapes(1).OLEFormat.Object.Worksheets(1).Range("AQ3").Value
        ActivePresentation.Slides("Slide90").Shapes("TextBox3").OLEFormat.Object.Value = Me.DAY.Value
        ActivePresentation.SlideShowWindow.View.GotoSlide 3
       Else
If ComboBox2.Value = "1_After" Then
        ActivePresentation.SlideShowWindow.View.GotoSlide 4
    
    End If
End If
End Sub

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 12:38 pm
by snasui
GobWeravong wrote: Tue Mar 09, 2021 11:10 am พอผม click ที่ปุ่ม combo หรือ view code มันจะวิ่งไปให้สร้างที่ Private Sub ComboBox_Change() พอผมเปลี่ยนชื่อ เป็น Private Sub DAY_GotFocus() และคีย์ตาม code ด้านล่างครบถ้วน แต่พอ view code ระบบมันก็ยังคงยืนยันไปที่ Private Sub ComboBox_Change() ตลอดเลยครับ
:lol: ต้องไม่ใช้ ComboBox_Change หรือเลิกที่จะใช้ Event นี้ในการ Add Item ให้ตัวเองครับ ผมอธิบายมาหลายรอบ กรุณาอ่านทบทวนให้เข้าใจครับ

ถ้าใช้ ComboBox_Change เพื่อสั่งให้ทำงานอย่างอื่นเช่น Run Code ใด ๆ หรือไป Add Item ให้กับ ComboBox อื่น สามารถใช้ได้ตามปกติ
GobWeravong wrote: Tue Mar 09, 2021 11:10 am ส่วนเรื่อง AddItem ตามที่คุณ snasui แนะนำมา พอจะเข้าใจแล้วครับ มันคือการเพิ่มหัวข้อใน dropdrop และผมไปนำค่าใน dropdrop เพิ่มไปเรื่อยๆ พอคลิค dropdown มันก็จะเพิ่มทวีคูณไปเรื่อยๆครับ ดังนั้นจะต้องหาคำสั่งใหม่ทดแทน add item
ไม่ใช่ต้องไปหาคำสั่งอื่นในการ Add Item ให้กับ ComboBox แต่ต้องหา Event อื่น ของ Object อื่นในการ Add Itemให้กับ ComboBox นี้ ไม่ใช้ใช้ ComboBox_Change() ของตัวมันเองในการ Add Item ให้ตัวเอง เพราะเมื่อเลือกรายการ มันจะ Add Item เข้าไปอีกวนไปเช่นนี้ไม่รู้จบ

การที่ Double Click แล้วไปยัง Change Event ของ Object นั้น ๆ ถือเป็นเหตุการณ์ปกติ ที่เป็นเช่นนี้เนื่องจากโปรแกรมต้องการอำนวยความสะดวกใหู้ผู้ใช้ แต่ไม่ได้หมายความว่าต้องสั่งให้ทำงานภายใต้คำสั่งนั้นอย่างเดียว เราจะไม่ใช้มันก็ได้ถ้าไม่ตรงกับความต้องการที่จะใช้งาน เราสามารถเพิ่มปุ่มใด ๆ เข้ามาช่วย เมื่อคลิกแล้วค่อย Add Item ให้กับ ComboBox นี้เป็นต้น

อย่างเช่นกรณีนี้เราจะใช้ Change Event ของมันมาเพิ่มรายการให้ตัวมันเองย่อมไม่ตรงวัตถุประสงค์ของการใช้งาน เพราะเราแค่ต้องการเลือกรายการใน ComboBox แล้วให้ไปทำงานอย่างอื่น ไม่ใช่เลือกรายการแล้วมีการเพิ่มรายการต่อท้ายรายการเดิมเข้าไปอีก

Re: ขออนุญาติสอบถามเรื่องการนำค่าจากตารางไปแสดงที่ Textbox ใน Powerpoint ครับ

Posted: Tue Mar 09, 2021 1:18 pm
by GobWeravong
ขอบคุณ คุณ snasui มากๆครับ
ตอนนี้ผมกำลังหาวิธี เอา code ไปใส่ไว้ในชื่อ ComboBox ที่ไม่ใช่ ComboBox_Change ครับ
น่าจะได้แล้วครับ ผมลองคลิกตามภาพครับ