Page 1 of 1

ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Tue Aug 21, 2012 5:45 pm
by โกโก้
เรียนท่านผู้รู้หรืออาจารย์ครับ

ผมมีปัญหาใหม่อีกแล้วครับพอดีหัวหน้าต้องการให้ทำการสร้างปุ่มให้สามารถเปิด URL แล้ว copy ทั้งหน้ามาเก็บไว้ในไฟล์ Text นะครับ ผมลองดูแล้วมันไม่ได้ครับ

code มีดังนี้
โดยที่สมมุติให้ G4 เก็บ เว็บดังนี้ "www.hotmail.com"

Sub Macro2()

Dim ReturnValue

Range("G4").Select

Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
SendKeys "^{A}", True
SendKeys "^{C}", True
SendKeys "%{F4}", True
ReturnValue = Shell("NOTEPAD.EXE", 1)
AppActivate ReturnValue ' activate calculator
SendKeys "^{V}", True


End Sub

ทีนี้ปัญหาคือมันไม่ยอม copy ข้อความบนเว็บที่เปิดครับ ไม่รู้ว่าทำไม แต่มันปิดหน้าเว็บได้ถูกต้องนะคะ หมายความว่ามันไม่ทำ SendKeys "^{A}",True ให้และตัวที่ copy ก็ไม่ทำเหมือนกัน
สรุปทำทุกคำสั่ง ยกเว้นการ Ctrl+A กับ Ctrl+C ไม่ทำงาน

ไม่ทราบว่าต้องเพิ่มหรือกำหนดอย่างไร
ขอบคุณครับ
นายโก้

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Tue Aug 21, 2012 8:07 pm
by bank9597
:D แนบไฟล์มาดีกว่าครับ จะได้สะดวกในการทดสอบ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Tue Aug 21, 2012 9:46 pm
by โกโก้
ผมแนบไฟล์ให้แล้วนะครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Tue Aug 21, 2012 9:48 pm
by โกโก้
เอ่อ พอดีผมทดสอบอยู่นะครับ เลยต้องรันด้วย macro นะครับ ยังไม่ได้สร้างปุ่มครับ

ขอบคุณครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Tue Aug 21, 2012 11:49 pm
by bank9597
โกโก้ wrote:เอ่อ พอดีผมทดสอบอยู่นะครับ เลยต้องรันด้วย macro นะครับ ยังไม่ได้สร้างปุ่มครับ

ขอบคุณครับ
:D คุณโก้ครับ ผมไม่ค่อยถนัดเรื่อง VBA มากนัก โค๊ดที่คุณได้เขียนมายอมรับว่ายาก ซึ่งต่างกับการเขียนโค๊ดที่ใช้งานบนเวิร์คชีท หรือ ออฟเจ็ค

ดังนั้นผมจึงไม่สามารถช่วยในส่วนนี้ได้ ต้องรบกวนท่านอื่นเข้ามาช่วยดูอีกทีครับ

สำหรับคำแนะนำของผมน่ะครับ

หากเราต้องการคัดลอกเอาข้อความบนเว็บมาวางในชีท เราสามารถทำได้ง่ายๆดังต่อไปนี้ครับ

ใช้ Web Query ที่มีมากับเอ็กเซลล์ ซึ่งความสามารถในการดึงข้อมูลจากเว็บได้ดีมาก สามารถกำนหดส่วนที่ต้องการดึงได้เช่นกัน

ไปที่ Data > From Web ทำไปตามขั้นตอน ก็จะได้ข้อมูลจากเว็บมาลงบนเวิร์คชีทแล้วครับ หากต้องการอัพเดทข้อมูล ก็ให้กดที่ Refresh All หรือเลือก Refresh ก็ได้
หรือเขียนโคีดให้อัพเดทอัตโนมัติก็ได้ครับ

ผมลองใช้เอ้กเซลล์ คัดลอกข้อมูลของหน้าเว็บเพจหน้านี้ไปลงในชีท 2 ลองดูครับ

หากไม่ใช่ตามที่ต้องการ ขออภัยด้วยครับ :D

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Wed Aug 22, 2012 12:13 am
by โกโก้
คือที่คุณบอกมานั้นไม่ตรงกับที่ต้องการครับ เพราะว่านายต้องการให้ผมทำปุ่มให้กดเปิดเว็บตามที่เค้ากำหนดไว้แล้วให้ทำการ copy text ทั้งเว็บไปเก็บในไฟล์ notepad ทุก URL ทุกอันครับ ลักษณะงานเป็นเช่นนี้ครับ ดังนั้นถ้ามีท่านใดทราบช่วยแนะนำผมด้วยครับ

ขอบคุณครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 7:18 am
by snasui
:D มาช่วยเสริมหลังจากที่ได้ทดสอบบางอย่างไปแล้วครับ

สำหรับการ Copy ข้อมูลจากหน้าเวบ น่าจะใช้ตามที่คุณ bank9597 แนะนำมาครับ เราสามารถ Loop เพื่อดึงข้อมูลจากทุก Web Site ตามต้องการ สามารถ Save เป็น Text File เพื่อเปิดด้วย Nodpad ในภายหลัง

การใช้ SendKeys โอกาสที่จะได้ข้อมูลตามต้องการนั้นยังมีความเสี่ยงอยู่มาก ยกตัวอย่างเช่น หากมีสัก 100 Link ในการเปิด Link แรก ๆ อาจจะไม่เกิดการผิดพลาด เนื่องจากเพิ่งเปิด Tab แรกของ IE แต่หากเปิด Tab ต่อ ๆ ไปเรื่อย ๆ โปรแกรมจะเริ่มทำงานช้า เพราะทุก Tab ใช้ Memory จำนวนมาก

สำหรับ Code ทีเขียนมานั้นผมลองหน่วงเวลาโดยใช้ Application.Wait เพื่อรอให้โหลดหน้าเวบเสร็จก็ยังไม่ได้ข้อมูลตามต้องการ โดยแทนที่จะเป็นการใช้ Shortcut ผมใช้ SendKeys ให้เปิดและ copy จากเมนูแทน

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 12:36 pm
by โกโก้
ขอรายละเอียดมากกว่านี้หน่อยนะครับ ผมยังไม่ค่อยเข้าใจครับ ผมเครียดมากเลย นายเร่งผม ผมบอกนายว่ายังทำไม่ได้นายบ่นผมแล้ว กลุ้ม

ขอบคุณครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 12:48 pm
by bank9597
โกโก้ wrote:ขอรายละเอียดมากกว่านี้หน่อยนะครับ ผมยังไม่ค่อยเข้าใจครับ ผมเครียดมากเลย นายเร่งผม ผมบอกนายว่ายังทำไม่ได้นายบ่นผมแล้ว กลุ้ม

ขอบคุณครับ
:D ลองหาตัวอย่างตามเว็บต่างประเทศดูครับ ผมดูการเขียนโค๊ดของคุณแล้ว ทราบว่ามีความรู้ในเรื่อง VBA อยู่แล้ว น่าจะแก้ปัยหาตรงนี้ได้ครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 1:05 pm
by โกโก้
คือผม ได้ลองทำดูแล้วพบว่ามีปัญหาอีกอันหนึ่งที่ผมแก้ไม่ตกครับ คือว่าพอทำอย่างที่บอกแล้ว จะถูกกำหนดให้ save ใน excel แต่ผมต้องการ save ลง notepad ครับต้องทำอย่างไรครับ

ขอบคุณมากครับ
นายโก้

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 1:42 pm
by snasui
โกโก้ wrote:คือผม ได้ลองทำดูแล้วพบว่ามีปัญหาอีกอันหนึ่งที่ผมแก้ไม่ตกครับ คือว่าพอทำอย่างที่บอกแล้ว จะถูกกำหนดให้ save ใน excel แต่ผมต้องการ save ลง notepad ครับต้องทำอย่างไรครับ

ขอบคุณมากครับ
นายโก้
:D ใน Excel สามารถ Save as เป็น .txt ได้ครับ
โกโก้ wrote:ขอรายละเอียดมากกว่านี้หน่อยนะครับ ผมยังไม่ค่อยเข้าใจครับ ผมเครียดมากเลย นายเร่งผม ผมบอกนายว่ายังทำไม่ได้นายบ่นผมแล้ว กลุ้ม

ขอบคุณครับ
รายละเอียดผมเขียนไปแล้วและมีเท่านั้นครับ ลองอ่านทบทวนดูอีกรอบ น่าจะเข้าใจได้ไม่ยาก หากสงสัยตรงไหนสามารถตัดมาถามในประเด็นนั้นได้ครับ เรื่องเจ้านายก็ต้องไปแจ้งให้ทราบว่ายังไม่สามารถใช้วิธีการเช่นนั้นได้เป็นผลสำเร็จ หากนายเห็นว่าทำได้ให้นายแจ้งแหล่งข้อมูลมาครับ หรือจะเข้ามาสอบถามด้วยตัวเองก็ยินดีเป็นอย่างยิ่ง บางวิธีที่ต้องการใช้นั้นมีภาวะแวดล้อมที่เกี่ยวข้องจำนวนมาก เขียนแค่ Code สองสามบรรทัดคงไม่สามารถได้ผลลัพธ์ตามต้องการ ที่สำคัญอีกประการคือผู้ตอบบางท่านมีเวลาจำกัด

สำหรับการ Inport ข้อมูลจาก Web เราสามารถบันทึก Macro เพื่อดู Code และนำมาปรับให้เป็น Dynamic ตามต้องการ กรณีใช้ Excel 2007+ เราสามารถดึงข้อมูลจาก Web โดยเข้าเมนู Data > Form Web กรณีใช้ Excel 2003 สามารถดูตัวอย่างได้จากที่นี่ครับ http://www.mrexcel.com/tip103.shtml

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 1:43 pm
by bank9597
โกโก้ wrote:คือผม ได้ลองทำดูแล้วพบว่ามีปัญหาอีกอันหนึ่งที่ผมแก้ไม่ตกครับ คือว่าพอทำอย่างที่บอกแล้ว จะถูกกำหนดให้ save ใน excel แต่ผมต้องการ save ลง notepad ครับต้องทำอย่างไรครับ

ขอบคุณมากครับ
นายโก้
:D คุณโก้โก้ ลองศึกษาจากกระทู้เหล่านี้ดูครับ ผมเคยถามไว้นานแล้ว อาจารย์คนควนเป็นผู้ตอบไว้ เชื่อว่าน่าจะได้แนวคิดอะไรเพิ่มเติมครับ

viewtopic.php?f=3&t=1737
viewtopic.php?f=3&t=309
viewtopic.php?f=3&t=1663

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 3:26 pm
by โกโก้
อาจารย์ครับ

ผมส่งไฟล์ให้ช่วยผมดูหน่อยนะครับว่ามีปัญหาตรงไหนทำไมขึ้น error ครับ ตรงที่ผมส่งค่าให้นะครับ ผมแก้ไม่ตกเลยครับ แล้วที่ผมเขียนให้มันส่งไฟล์ไป notepad แบบนี้ถูกหรือเปล่าครับ

ขอบคุณครับ
นายโก้

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Thu Aug 23, 2012 8:10 pm
by snasui
:D ผมปรับ Code มาให้เป็นตัวอย่างตามด้านล่างครับ

Code: Select all

Sub GetDataFormLink()
    Call LoadUrl(Sheets("Sheet1").Range("b8").Value)
    Call PasteToNotePad
End Sub
Sub LoadUrl(Urln As String)
    Worksheets("Sheet2").Activate
    Cells.Clear
    With ActiveSheet.QueryTables.Add(Connection:="URL;" & Urln, _
        Destination:=Sheets("Sheet2").Range("$A$1"))
'        .Name = "vbch61"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

Sub PasteToNotePad()
    Sheets("Sheet2").UsedRange.Copy
    Shell "notepad.exe", vbNormalFocus
    SendKeys "^V"
End Sub
สำหรับการวาง Code ให้เป็น Code เพื่อสะดวกในการอ่านสามารถทำตามกระทู้นี้ครับ viewtopic.php?f=3&t=1187

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Sat Aug 25, 2012 5:46 pm
by โกโก้
เรียนอาจารย์ คนควน ครับ

ผมขอขอบพระคุณอาจารย์และคุณbank9597 มากๆ ครับ ผมทำเสร็จแล้วครับตามคำแนะนำของท่านทั้งสองครับ ทีนี้มีอีกปัญหาครับ ตรงที่ผมต้องการทำการสร้าง textbox 30 box เก็บเป็นลักษณะตัวอักษร ผมไม่ทราบว่ามีการทำให้มีการวน loop object box ได้หรือไม่ เพราะผมต้องทำการเขียนซ้ำๆ กัน 30 box ในการตรวจสอบการทำงานครับ อันนี้ไม่ซีเรียส ถามเพื่อเป็นความรู้ว่าทำได้หรือไม่
ผมมีความหวังกับการทำงานที่นี่ เพราะผมฝึกงานอยู่ครับใกล้จบแล้ว ผมคาดหวังจะได้ทำงานที่ๆ ผมฝึกงาน ผมจะได้มีรายได้เพื่อใช้จ่ายค่ารักษาพยาบาลคุณแม่ผมที่ป่วยในขณะนี้ครับ ผมพอเขียน vb ได้เพราะเรียนมาทางสายนี้แต่ไม่คล่องเกี่ยวกับ excel ครับ ที่นี่เค้าเน้น vba บน excel ครับ ผมขออนุญาตในการเรียนขอคำแนะนำเมื่อผมติดปัญหาด้วยนะครับ ผมได้พยายามศึกษาเพิ่มเติม มีการซื้อหาหนังสือประกอบมากมาย แต่ส่วนใหญ่เป็นเบื้องต้น ทำให้ผมไม่สามารถประยุกต์ได้กับงานจริงครับ อาศัยท่านผู้รู้ในที่นี้ช่วยผมได้มาก เป็นพระคุณอย่างสูงเลยครับ
ขอให้ท่านประสพแต่โชคดี เจริญยิ่งๆ ขึ้นนะครับ

ขอบคุณครับ
โก้โก้

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Sat Aug 25, 2012 6:38 pm
by โกโก้
เอ่อ ขออภัยครับผมคงเขียนชื่อผิด ต้องเป็นอาจารย์ snasui นะครับ ขออภัยอย่างสูง

ขอบคุณอาจารย์ snasui มากๆ นะครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Sat Aug 25, 2012 8:58 pm
by snasui
:lol: คนควน และ snasui คือคนเดียวกันครับ
โกโก้ wrote:ผมไม่ทราบว่ามีการทำให้มีการวน loop object box ได้หรือไม่ เพราะผมต้องทำการเขียนซ้ำๆ กัน 30 box ในการตรวจสอบการทำงานครับ
สามารถทำได้ครับ Control เป็น Object ของ Form จึงสามารถ Loop ได้เป็นปกติครับ

Re: ฝากถามเกี่ยวกับการกำหนดให้ VBA ทำการ Copy ครับ

Posted: Sun Aug 26, 2012 8:10 pm
by bank9597
โกโก้ wrote:เรียนอาจารย์ คนควน ครับ

ผมขอขอบพระคุณอาจารย์และคุณbank9597 มากๆ ครับ ผมทำเสร็จแล้วครับตามคำแนะนำของท่านทั้งสองครับ ทีนี้มีอีกปัญหาครับ ตรงที่ผมต้องการทำการสร้าง textbox 30 box เก็บเป็นลักษณะตัวอักษร ผมไม่ทราบว่ามีการทำให้มีการวน loop object box ได้หรือไม่ เพราะผมต้องทำการเขียนซ้ำๆ กัน 30 box ในการตรวจสอบการทำงานครับ อันนี้ไม่ซีเรียส ถามเพื่อเป็นความรู้ว่าทำได้หรือไม่
ผมมีความหวังกับการทำงานที่นี่ เพราะผมฝึกงานอยู่ครับใกล้จบแล้ว ผมคาดหวังจะได้ทำงานที่ๆ ผมฝึกงาน ผมจะได้มีรายได้เพื่อใช้จ่ายค่ารักษาพยาบาลคุณแม่ผมที่ป่วยในขณะนี้ครับ ผมพอเขียน vb ได้เพราะเรียนมาทางสายนี้แต่ไม่คล่องเกี่ยวกับ excel ครับ ที่นี่เค้าเน้น vba บน excel ครับ ผมขออนุญาตในการเรียนขอคำแนะนำเมื่อผมติดปัญหาด้วยนะครับ ผมได้พยายามศึกษาเพิ่มเติม มีการซื้อหาหนังสือประกอบมากมาย แต่ส่วนใหญ่เป็นเบื้องต้น ทำให้ผมไม่สามารถประยุกต์ได้กับงานจริงครับ อาศัยท่านผู้รู้ในที่นี้ช่วยผมได้มาก เป็นพระคุณอย่างสูงเลยครับ
ขอให้ท่านประสพแต่โชคดี เจริญยิ่งๆ ขึ้นนะครับ

ขอบคุณครับ
โก้โก้
:D ขอให้คุณโก้โก้สุขสำเร็จ สมประสงค์ทุกประการเช่นกันครับ