Page 1 of 1

การ copy worksheet แล้วpasteใน workbookใหม่

Posted: Sun Jan 26, 2014 5:08 pm
by kant
พอดีเพิ่งเริ่มฝึกเขียน VBA ค่ะ คือจะเขียนสั่งโปรแกรมทำงาน
โดย เมื่อกดปุ่ม A แล้ว ให้เอา range M1 มาใส่ที่ A2 ในเวิร์กชีต Test.xlsm แล้ว นั้นเปิด workbookใหม่ copy Range("A1:H18") โดยให้ค่าในตารางที่copy มานั้น เป็น value แต่ตารางเป็นแบบเดิม ใส่ใน workbookใหม่ และทำการ save โดยชื่อ workbook name ตาม A2 (สีเหลือง )เนื่องจากในอนาคตจะใส่Loop เข้าไป และให้ชื่อตาม column M ที่ถูกดึงมาใส่ใน A2 ส่วนfileformat = .xls ธรรมดา แต่พยายามรันหลายทีก็ไม่ถูกต้องเลยค่ะ help me pls!!!! :cry: :cry: :cry:
code ตามนี้นะคะ รบกวนด้วยนะคะ

Sub CommandButton1_Click()

Dim AA As String
Dim wb As Workbooks
Set wk = Workbooks.Add


A = Cells(1, 13).Value

AA = Cells(8, 13).Value

MsgBox "Generate A."

Range("A2").Value = A

Worksheets(1).Range("A1:H18").Copy

wk.Activate

Activesheets.PasteSpecial Paste:=xlPasteAll

Activesheets.Range("A1:H18").Copy

Activesheets.PasteSpecial Paste:=xlPasteValues

wk.SaveAs Filename:=A.xls, FileFormat:=xlWorkbookNormal


End Sub


ขอบคุณผู้ใจงามล่วงหน้านะคะ :D :thup:

Re: การ copy worksheet แล้วpasteใน workbookใหม่

Posted: Sun Jan 26, 2014 8:18 pm
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub CommandButton1_Click()
    
    Dim AA As String
    Dim a As String
    Dim wb As Workbook
    Dim wk As Workbook
    
    Set wb = ActiveWorkbook
    Set wk = Workbooks.Add
    
    With wb
        a = .Sheets(1).Cells(1, 13).Value
        AA = .Sheets(1).Cells(8, 13).Value
    End With
    
    MsgBox "Generate A."
    
    wk.Sheets(1).Range("A2").Value = a
    wb.Worksheets(1).Range("A1:H18").Copy
    wk.Sheets(1).Range("A1").PasteSpecial xlPasteValues
    wk.SaveAs Filename:="Express.xls", FileFormat:=xlWorkbookNormal
    
End Sub
สำหรับการ Post Code ให้แสดงเป็น Code เพื่อสะดวกต่อการอ่านและการ Copy ไปทดสอบดูตาม Link นี้ครับ :arrow: viewtopic.php?f=3&t=1187

Re: การ copy worksheet แล้วpasteใน workbookใหม่

Posted: Sun Jan 26, 2014 9:57 pm
by kant
:thup: :thup: :thup: ขอบคุณมากค่ะอาจารย์ แล้วก็ขอบคุณสำหรับคำแนะนำนะคะ :cp: :cp: :cp:

แล้วถ้าจะเอาTemplateมาด้วย และตั้งชื่อ worksheet ใหม่นี้ให้ตรงกับตัวเลข cell "A2" ทำไงคะลองเขียนหลายแบบแล้วไม่ได้สักทีค่ะ

Re: การ copy worksheet แล้วpasteใน workbookใหม่

Posted: Sun Jan 26, 2014 10:21 pm
by kant
กานต์ลอง ปรับใหม่แล้วค่ะ

การcopy template รันได้แล้ว
ดังนี้ค่ะ

Code: Select all

Sub CommandButton1_Click()
    
    Dim AA As String
    Dim a As String
    Dim wb As Workbook
    Dim wk As Workbook
   
    
    Set wb = ActiveWorkbook
    Set wk = Workbooks.Add
    
    
    With wb
      
        a = .Sheets(1).Cells(1, 13).Value
       
        Range("A2").Value = a
    
        AA = .Sheets(1).Cells(8, 13).Value
    End With
    
    MsgBox "Generate A."
    
    wk.Sheets(1).Range("A2").Value = a
    wb.Worksheets(1).Range("A1:H18").Copy
    wk.Sheets(1).Range("A1").PasteSpecial xlPasteAll
    wk.Sheets(1).Range("A1").PasteSpecial xlPasteValues
    
    wk.SaveAs Filename:="a.Name&.xls", FileFormat:=xlWorkbookNormal
    
End Sub


แต่สำหรับการตั้งชื่อเวิร์กบุ๊ค wk ให้ชื่อตาม Range("A2").Value หรือ a เขียนยังไงคะ ลองเปิดหลายตำราแล้วแต่เขียนไม่เป็นจิงๆค่ะ :roll:

Re: การ copy worksheet แล้วpasteใน workbookใหม่

Posted: Mon Jan 27, 2014 12:11 pm
by snasui
kant wrote:แต่สำหรับการตั้งชื่อเวิร์กบุ๊ค wk ให้ชื่อตาม Range("A2").Value หรือ a เขียนยังไงคะ ลองเปิดหลายตำราแล้วแต่เขียนไม่เป็นจิงๆค่ะ
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

wk.SaveAs Filename:=wk.sheets(1).range("a2").value, FileFormat:=xlWorkbookNormal