snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Leng
Member
Posts: 225 Joined: Tue Jun 26, 2018 5:19 pm
#1
Post
by Leng » Fri Jul 20, 2018 9:38 am
อยากก็อปปี้ข้อมูลูจาก Excel ในชีต Out ไปลงในworkbookอื่นที่อยู่ในในไดร์ D และให้runต่อๆกันครับ
Code: Select all
Private Sub CommandButton1_Click()
With Sheets("IN")
lr = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A3:I5000" & lr).Copy
Sheets("Out").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
Workbooks.Open Filename:="C:\Users\Administrator\Desktop\Test\Data.xlsx"
lr = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A3:I5000" & lr).Copy
Sheets("Out2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Fri Jul 20, 2018 10:06 pm
แนบไฟล์ประกอบพร้อมทั้งชี้ให้เห็นว่าปัจจุบันเกิดปัญหาที่ตรงไหน อย่างไร จะได้สะดวกในการทดสอบและแก้ไขปัญหาครับ
Leng
Member
Posts: 225 Joined: Tue Jun 26, 2018 5:19 pm
#3
Post
by Leng » Mon Jul 23, 2018 10:19 am
1.ต้องการเซฟข้อมูลจากไฟล์ที่ชื่อว่า fainal-copy ในชีท Out ออกมาหน้าเดสก์ท็อปโค๊ดที่ผมใช้สามารถทำงานได้ครับ
Code: Select all
Sheets("Out").Select
Sheets("Out").Copy
Sheets("Out").Select
Sheets("Out").Activate
Sheets("Out").UsedRange.Copy
ActiveWorkbook.SaveAs "C:\Users\Administrator\Desktop\" & "Agrade" & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xlsx", 51
ActiveWorkbook.Close
Sheets("IN").Select
Range("A3:I1048576").Clear
Selection.ClearContents
Sheets("Out").Select
Range("A2:I1048576").Select
Selection.ClearContents
MsgBox "Done:"
Worksheets("IN").Select
2.แต่ปัญหาคือผมอยาก copy ข้อมูลจาก ไฟล์ fainal-copy ในชีท Out ให้มาบันทึกในไฟล์ Data ด้วยครับ โดยให้ข้อมูลเรียงต่อๆกัน
Code: Select all
Private Sub CommandButton1_Click()
With Sheets("IN")
lr = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A3:I5000" & lr).Copy
Sheets("Out").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
Workbooks.Open Filename:="C:\Users\Administrator\Desktop\Test\Data.xlsx"
lr = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A3:I5000" & lr).Copy
Sheets("Out").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Mon Jul 23, 2018 8:19 pm
ตัวอย่าง Code ครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim sc As Range, tg As Range
Dim tgBook As Workbook
With Sheets("IN")
lr = .Range("A" & Rows.Count).End(xlUp).Row
Set sc = .Range("A3:I5000" & lr)
sc.Copy
Sheets("Out").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
Set tgBook = Workbooks.Open(Filename:="C:\Users\Administrator\Desktop\Test\Data.xlsm")
sc.Copy
tgBook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
'Other code...
Leng
Member
Posts: 225 Joined: Tue Jun 26, 2018 5:19 pm
#5
Post
by Leng » Tue Jul 24, 2018 11:24 am
อาจารย์ครับผมไม่ต้องการให้ Workbooks = Data.xlsx เปิดขึ้นมาครับเพราะว่าถ้าเปิดไฟล์นี้มาจะไม่สามารถ run ในโค๊ดต่อๆ ไป ที่อยู่ในไฟล์ final-copy ได้ครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Tue Jul 24, 2018 7:08 pm
การไม่เปิดจะเขียน Code ยากมากเพราะต้องใช้ Statement ของ SQL จึงจะบันทึกค่าเข้าไปในไฟล์ที่ปิดอยู่ได้ ลองเขียนมาเองก่อน ติดแล้วค่อยถามกันต่อครับ
Leng
Member
Posts: 225 Joined: Tue Jun 26, 2018 5:19 pm
#7
Post
by Leng » Wed Jul 25, 2018 8:48 am
ทำได้ละครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim sc As Range, tg As Range
Dim tgBook As Workbook
With Sheets("IN")
lr = .Range("A" & Rows.Count).End(xlUp).Row
Set sc = .Range("A3:I5000" & lr)
sc.Copy
Sheets("Out").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
Set tgBook = Workbooks.Open(Filename:="C:\Users\Administrator\Desktop\Test\Data.xlsx")
sc.Copy
tgBook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1, 0) _
.PasteSpecial xlPasteValues
ActiveWorkbook.Save
ActiveWorkbook.Close False
Sheets("Out").Select
Sheets("Out").Copy
Sheets("Out").Select
Sheets("Out").Activate
Sheets("Out").UsedRange.Copy
ActiveWorkbook.SaveAs "C:\Users\Administrator\Desktop\" & "Agrade" & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xlsx", 51
ActiveWorkbook.Close
Sheets("IN").Select
Range("A3:I1048576").Clear
Selection.ClearContents
Sheets("Out").Select
Range("A2:I1048576").Select
Selection.ClearContents
MsgBox "Done:"
Worksheets("IN").Select
End With
End Sub