Page 1 of 1
Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Mon Aug 15, 2016 2:15 pm
by moosuper013
เรียน อาจารย์
คือทางผมต้องการเขียน โค้ด VBA โดยการดึงข้อมูล Excel ทีอยู่คนละไฟล์กัน โดยผ่าน Textbox แต่ผมพยามแก้โค้ดหลายครั้งแล้วไม่แนน่ใจว่าผิดพลาดตรงคำสั่งไหนจึงทำให้ไม่สามารถ Copy ข้อมูลได้ ทั้งนี้ทางผมได้แนบตัวอย่าง โค้ดดังนี้ครับ
Code: Select all
Function Dataperforman()
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets("Data") '<~~ Sheet where you want to import
Set wbO = Workbooks.Open(TextBox1.Text)
wbO.Sheets("Data").Range("$A:$E").Cells.Copy wsI.Cells.Range("$A:$E")
wbO.Close SaveChanges:=False
End Function
ขอบคุณครับ
Re: Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Mon Aug 15, 2016 8:13 pm
by snasui

แนบไฟล์ตัวอย่างมาด้วยจะได้ช่วยทดสอบให้ได้ครับ
จากคำอธิบาย Code ควรเป็น Sub Procedure ไม่ใช่ Function Procedure เหมือนที่เขียนมาครับ
Re: Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Tue Aug 16, 2016 11:34 am
by moosuper013
ขอบคุณครับที่ช่วยตอบโพสของผม พอดีผมกลับไปแก้ไขได้แล้วครับ เกิดจากที่อยู่ไฟล์ที่จะImport Data ผิดรูปแบบครับ
อาจารย์ครับผมรบกวนอีกคำถาม คือพอดีผมต้องการ Copy SheetReport ให้เป็น New Workbook โดยให้กำหนดที่อยู่และชื่อไฟล์เอง ต้องใช้ คำสั่งด้านไหนครับ
ตัวอย่างโค้ดที่ทำขึ้น
Code: Select all
Function saveandprint()
ThisWorkbook.Sheets("Graph").Copy
ActiveWorkbook.SaveAs
End Function
Re: Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Tue Aug 16, 2016 6:56 pm
by snasui

ลองบันทึก Macro การ Save As โดยเลือกตำแหน่งที่วางไฟล์แล้วนำ Code ที่ได้มาปรับใช้ หากติดปัญหาค่อยนำ Code นั้นมาถามกันต่อครับ
Re: Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Tue Aug 16, 2016 11:20 pm
by moosuper013
ขอบคุณครับอาจารย์ สำหรับแนวทาง ตอนนี้ทางผมได้นำ Code ที่ได้มา แต่ในCode ที่ Macro ทำให้เป็นการกำหนดชื่อตามรูปแบบที่ผมเคยกำหนดไว้ แต่ถ้าหากเราต้องการให้ ผู้ใช้ตั้งชื่อด้วยตนเองต้องเพิ่ม Code อะไรลงไปครับ
ตัวอย่าง Code Macro ที่ได้
Code: Select all
Sheets("Graph").Select
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range("A1").Select
Sheets("Sheet1").Name = "Report"
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\Users\jameboy555\Desktop\1682016.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Range("A1").Select
Re: Copy ข้อมูลExcel โดยเลือกที่อยู่ผ่าน TextBox ไม่ได้
Posted: Wed Aug 17, 2016 12:45 am
by moosuper013
moosuper013 wrote:ขอบคุณครับอาจารย์ สำหรับแนวทาง ตอนนี้ทางผมได้นำ Code ที่ได้มา แต่ในCode ที่ Macro ทำให้เป็นการกำหนดชื่อตามรูปแบบที่ผมเคยกำหนดไว้ แต่ถ้าหากเราต้องการให้ ผู้ใช้ตั้งชื่อด้วยตนเองต้องเพิ่ม Code อะไรลงไปครับ
ตัวอย่าง Code Macro ที่ได้
Code: Select all
Sheets("Graph").Select
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range("A1").Select
Sheets("Sheet1").Name = "Report"
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\Users\jameboy555\Desktop\1682016.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Range("A1").Select
ทางผมแก้ไขได้เรียบร้อยแล้วครับโดยศึกษาจากบอร์ดที่อาจารย์เคยตอบ
ตัวอย่าง Code ที่สำเร็จ
Code: Select all
Dim FileSaveName As String
ThisWorkbook.Sheets("Graph").Copy
Application.CutCopyMode = False
FileSaveName = Application.GetSaveAsFilename( _
filefilter:="Excel Files (*.xls),*.xls")
If FileSaveName <> "" Then
ActiveWorkbook.SaveAs Filename:=FileSaveName, FileFormat:=xlNormal
MsgBox "บันทึกข้อมูลสำเร็จ" & FileSaveName
End If
ขอบคุณอาจารย์ที่ให้แนวทางในการเขียน Code มากๆครับ
