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
:D แนบไฟล์ตัวอย่างมาด้วยจะได้ช่วยทดสอบให้ได้ครับ

จากคำอธิบาย 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
:D ลองบันทึก 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 มากๆครับ :D :D :thup: