:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#23

by bank9597 » Mon Aug 31, 2015 10:37 pm

ลองตรวจสอบไฟล์แนบใหม่อีกครั้งครับ ผมคิดว่าน่าจะแนบมาผิดครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#22

by nutpochan » Mon Aug 31, 2015 10:02 pm

Code: Select all

  Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & r.Value, False, False)
คำสั่งนี้เราอยากจะเอาออกแล้ว ใส่คำสั่งที่เป็น ให้คลุมดำไฟล์แล้ว ลากไฟล์มาลงแทนครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#21

by nutpochan » Mon Aug 31, 2015 10:00 pm

ถ้าไม่รู้ชื่อไฟล์ หรือชื่อไฟล์มีจำนวนมาก เรียงลำดับไม่แน่นอน เราไม่มาสารถหาชื่อไฟล์มาลงไนคอลัม r ได้ เราจะสามารถสร้าง combo list box (เคยเห็นเขาทำ) ที่จะลากไฟล์มาลงเลยได้ไหมครับ แล้วเราจะเขียนคำสั่งว่าอย่างไรดี
Attachments
dw.xlsm
(13.5 KiB) Downloaded 17 times

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#20

by bank9597 » Mon Aug 31, 2015 9:47 pm

ลองแนบไฟล์ตัวอย่างมาครับ พร้อมยกตัวอย่างที่ต้องการมาอีกครั้งครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#19

by nutpochan » Mon Aug 31, 2015 9:40 pm

เขาให้ทำอะไรไม่เข้าใจเลยครับ :?:

เราจะคัดลอก

Code: Select all

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    StrPath = Data.Files(1)
End Sub
ไปใว้แทนที่ตรงไหรหรอครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#18

by logic » Mon Aug 31, 2015 5:06 pm

ผมลองค้นดูพบลิ้งค์นี้ http://stackoverflow.com/questions/2056 ... e-and-path ลองทำตามดูครับ :)

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#17

by nutpochan » Mon Aug 31, 2015 4:52 pm

Code: Select all

Dim rAll As Range
Dim r As Range
Set rAll = Range("a1:a3")
For Each r In rAll
    Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & r.Value, False, False)
    'wb("db.xls").Activate
    Range("A2:E300").Select
    Selection.Copy
    Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
    Range("b1").Select
    Selection.Copy
    Workbooks(r.Value).Close
Next r
จากคำสั่ง ในช่วง

Code: Select all

    Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & r.Value, False, False)


ถ้าไม่รู้ชื่อไฟล์ หรือชื่อไฟล์มีจำนวนมาก เรียงลำดับไม่แน่นอน เราไม่มาสารถหาชื่อไฟล์มาลงไนคอลัม r ได้ เราจะสามารถสร้าง combo list box (เคยเห็นเขาทำ) ที่จะลากไฟล์มาลงเลยได้ไหมครับ แล้วเราจะเขียนคำสั่งว่าอย่างไร

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#16

by snasui » Sun Nov 02, 2014 10:21 pm

:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Dim rAll As Range
Dim r As Range
Set rAll = Range("a1:a3")
For Each r In rAll
    Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & r.Value, False, False)
    'wb("db.xls").Activate
    Range("A2:E300").Select
    Selection.Copy
    Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
    Range("b1").Select
    Selection.Copy
    Workbooks(r.Value).Close
Next r

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#15

by nutpochan » Fri Oct 31, 2014 7:48 pm

อธิบายเพิ่มเติม
คำสั่งแต่ละลูปคือ

Code: Select all

Dim wb As Variant

Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a1").Value, False, False)
'wb("db.xls").Activate
    Range("A2:E300").Select
    Selection.Copy


Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
     Range("b1").Select
    Selection.Copy
    
    Workbooks("" & Range("a1")).Close
เปลี่ยนเฉพาะ a1,a2,a3 ที่ Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a1").Value, False, False) ในแต่ละรอบที่วน

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#14

by nutpochan » Fri Oct 31, 2014 7:46 pm

จากคำสั่ง วนลูปที่เป็น

Code: Select all

For counter = start To end [Step step] 
    [statements] 
    [Exit For] 
    [statements] 
Next [counter]

ถ้าผมต้องการ วนลูปคำสั่งเดิม ซ้ำตามจำนวนที่เราต้องการ ตามคำสั่ง

Code: Select all

Dim wb As Variant

Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a1").Value, False, False)
'wb("db.xls").Activate
    Range("A2:E300").Select
    Selection.Copy


Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
     Range("b1").Select
    Selection.Copy
    
    Workbooks("" & Range("a1")).Close

ซึ่งในที่นี้ผมขออธิบายว่า ลูปที่ 1 สูตร Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a1").Value, False, False)

ลูปที่ 2 ในสูตร Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a2").Value, False, False)

ลูปที่ 3 ในสูตร Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & Range("a3").Value, False, False)

คือวนแล้วจะเปลี่ยนแค่ ลูปหนึ่ง a1 ลูป2 a2 ลูป3 a3 นอกนั้นคำสั่งคืออื่นยังเหมือนเดิม

เราจะเขียนคำสั่งวนลูป ให้ทำตามคำสั่งซ้ำแล้วซ้ำเล่าอย่างไรดีครับ ผมลองเอามาเชื่อมกันแล้วมัน ติดตลอด

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#13

by snasui » Thu Oct 30, 2014 9:34 am

nutpochan wrote:ActiveWorkbook.Worksheets("dtac").Select

ผมลองเอามาปรับใช้กับโค๊ดด้านบน เปลี่ยนจากc1เป็น c2 เป็น

ActiveWorkbook.Worksheets("& range("c2").value").Select

ปรากฏว่ามันdebug ครับไม่รู้ว่าควรแก้ไขอย่างไร
:D จาก ActiveWorkbook.Worksheets("& range("c2").value").Select
ที่ถูกคือ ActiveWorkbook.Worksheets(range("c2").value).Select จะเปลี่ยนเป็นเซลล์ใดก็ให้เปลี่ยนที่ range("c2").value ได้ตามต้องการครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#12

by nutpochan » Wed Oct 29, 2014 11:08 pm

ค่าใน c3 ก็คือ dtac

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#11

by nutpochan » Wed Oct 29, 2014 11:07 pm

ActiveWorkbook.Worksheets("dtac").Select

ผมลองเอามาปรับใช้กับโค๊ดด้านบน เปลี่ยนจากc1เป็น c2 เป็น

ActiveWorkbook.Worksheets("& range("c2").value").Select

ปรากฏว่ามันdebug ครับไม่รู้ว่าควรแก้ไขอย่างไร

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#10

by snasui » Wed Oct 29, 2014 11:46 am

:D ผมลบ Code ที่โพสต์ล่าสุดทิ้งไปเองครับ

สำหรับที่ถามมานั้นสามารถเปลียนเป็น Set wb = Workbooks.Open("C:\Users\admin\Desktop\" & range("c3").value, False, False) หากค่าใน C3 คือ dtac.xls

:!: การโพสต์แบบถามเฉพาะจุด สามารถยกมาถามเพียงส่วนหนึ่งของ Code ยกตัวอย่างคำถาม เช่น จาก Code
Set wb = Workbooks.Open("C:\Users\admin\Desktop\dtac.xls", False, False) หากต้องการให้ส่วนของ
dtac.xls เป็นค่าในเซลล์ C3 สามารถปรับ Code เป็นอยางไร

การเขียนข้อความให้เป็นตามด้านบน :roll: ให้ใช้ Place pain text inside "" tags ตามตัวอย่างในภาพด้านล่าง
Attachments
PlainTextInside.png
PlainTextInside.png (9.26 KiB) Viewed 622 times

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#9

by nutpochan » Wed Oct 29, 2014 11:29 am

Code: Select all

Sub Macro1()
'
' Macro1 Macro
Dim wb As Variant

Set wb = Workbooks.Open("C:\Users\admin\Desktop\[color=#FF0000]dtac.xls[/color]", False, False)
'wb("[color=#0000FF]db.xls[/color]").Activate
ActiveWorkbook.Worksheets("dtac").Select
    Range("A2:E12").Select
    Selection.Copy
Workbooks("[color=#FF0000]dtac.xls[/color]").Close
Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
End Sub
ถ้าเราจะ ให้ตัวสีแดงในโค๊ด เปลี่ยนแปลงไปตามเซลซึ่งเราไม่ต้องเปิดvbaเพื่อแก้ไขโค๊ดแต่ จะให้มันเปลี่ยนแปลงไปตามเซลในเอ็กเซล เช่น เซล c3แสดงdtac.xls ซึ่งจะเชื่อมโยงไปในโค๊ดอัตโลมัติ ควรจะเปลี่ยนแปลงโค๊ดอย่างไรครับ
Attachments
2.xlsm
(16.55 KiB) Downloaded 29 times
dtac.xls
(10.95 KiB) Downloaded 32 times

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#8

by snasui » Fri Oct 24, 2014 3:45 pm

:D การ Copy ช่วงข้อมูลเล็ก ๆ ตาม Code ที่แนบมา Clipboard ไม่ควรจะมีขนาดใหญ่และไม่ควรจะมีการฟ้อง เข้าใจว่ามีการทำซ้ำ ๆ หลายรอบจึงเกิดการฟ้อง

สำหรับการยกเลิกการฟ้องวิธีการหนึ่งคือหลังจากวางข้อมูลแล้วให้เพิ่ม Code บรรทัดนี้เข้าไปยกเลิกการ Copy ครับ Application.CutCopyMode = False

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#7

by nutpochan » Fri Oct 24, 2014 2:48 pm

เราจะแก้ alert ที่ออกมว่า "There is a large amount of information on the Clipboard. Do you want to ...." ตอนเอาข้อมูลก่อนนำไปวางยังไงครับ

คือไม่อยากให้มันแสดงเตือนขึ้นมาอยากกดใช่อัตโลมัติไปเลย

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#6

by nutpochan » Fri Oct 24, 2014 2:11 pm

พอแล้วใจหลักการแล้วง่ายนิดเดียว

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#5

by nutpochan » Fri Oct 24, 2014 2:10 pm

Code: Select all

Sub Macro1()
'
' Macro1 Macro
Dim wb As Variant

Set wb = Workbooks.Open("C:\Users\admin\Desktop\dtac.xls", False, False)
'wb("db.xls").Activate
ActiveWorkbook.Worksheets("dtac").Select
    Range("A2:E12").Select
    Selection.Copy
Workbooks("dtac.xls").Close
Windows("db.xlsm").Activate
    Range("H2").Select
    ActiveSheet.Paste
End Sub

จากที่ผมลองเอาโค๊ดมาปะติดปะต่อกัน จนสำเร็จแล้วครับ

Re: อยากได้ code vba คัดลอกข้อมูล ข้ามไฟล์ พื้นฐาน

#4

by snasui » Fri Aug 08, 2014 9:13 am

:D ช่วยแนบไฟล์ตัวอย่างข้อมูล ตัวอย่างผลลัพธ์ที่ต้องการมาด้วยครับ

Top