Page 1 of 1

ปัญหาการ คัดลอก และ วาง vba

Posted: Sun Oct 02, 2011 8:42 pm
by thanawat
พอดีว่าผมจะทำโค้ด ให้สั่งไปคัดลอกจาก ไฟล์อื่นมาวางในไฟล์ที่มีโค้ดนี้
มีปัญหาตรงวางครับ
นี้โค้ดครับ
Sub Macro6()
pwd = "1234"
Workbooks.Open Filename:="schoolname.xlsx"
Windows("schoolname.xlsx").Activate
ActiveSheet.Unprotect (pwd)
If Err.Number <> 0 Then
MessageBox.Show ("password incorrect")
End If
Range("B2").Select
Selection.Copy
ActiveSheet.Protect (pwd)
Workbooks("schoolname.xlsx").Close SaveChanges:=True
Workbooks("TN.xlsx").Activate
ActiveSheet.Unprotect (pwd)
If Err.Number <> 0 Then
MessageBox.Show ("password incorrect")
End If
Range("B2").Select
ActiveSheet.Paste
ActiveSheet.Protect (pwd)
End Sub

มัน Run-time error '1004' ครับ
ช่วยตรวจดูโค้ดให้หน่อยครับ

Re: ปัญหาการ คัดลอก และ วาง vba

Posted: Sun Oct 02, 2011 8:50 pm
by snasui
:D ลองกดแป้น F8 เพื่อ Run ทีละ Step ดูครับ เข้าใจว่าน่าจะเกิดที่บรรทัด

Code: Select all

MessageBox.Show ("password incorrect")
การใช้ Message แจ้ง User ปกติจะใช้ Statement ตามด้านล่างครับ

Code: Select all

MsgBox "Password incorrect."
ลองส่งไฟล์ตัวอย่างมาด้วยจะได้เห็นสภาพแวดล้อมการทำงาน ลดเวลาสร้างตัวอย่างขึ้นมาเลียนแบบครับ

Re: ปัญหาการ คัดลอก และ วาง vba

Posted: Sun Oct 02, 2011 9:07 pm
by thanawat
นี้ไฟล์ครับ ครับ ผมลองรันดูแล้ว
ยังติดครับ

Re: ปัญหาการ คัดลอก และ วาง vba

Posted: Sun Oct 02, 2011 9:54 pm
by snasui
:D ลองทดสอบ Code ตามด้านล่างครับ สำหรับการเปิด Workbook ต้องอ้าง Path เข้าไปด้วย อ้างแค่ชื่อ Workbook เฉย ๆ ไม่ได้ครับ

Code: Select all

Sub Macro6()
pwd = "1234"
    Workbooks.Open Filename:="d:\schoolname.xlsx" ' <== Open workbook you must be refer to complete path.
    Windows("schoolname.xlsx").Activate
    ActiveSheet.Unprotect Password:=pwd
    If Err.Number <> 0 Then
    MsgBox "password incorrect"
    End If
    Range("B2").Select
    Selection.Copy
    ActiveSheet.Protect Password:=pwd
    Workbooks("schoolname.xlsx").Close SaveChanges:=True
    Windows("TN.xlsm").Activate
    ActiveSheet.Unprotect Password:=pwd
    If Err.Number <> 0 Then
    MsgBox "password incorrect"
    End If
    Range("B2").Select
    ActiveSheet.Paste
ActiveSheet.Protect Password:=pwd
End Sub

Re: ปัญหาการ คัดลอก และ วาง vba

Posted: Sun Oct 02, 2011 10:09 pm
by thanawat
ขอบคุณครับผมพอเข้าใจแล้วครับ

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

Sub Macro6()
pwd = "1234"
Workbooks.Open Filename:="schoolname.xlsx"
Windows("schoolname.xlsx").Activate
ActiveSheet.Unprotect (pwd)
If Err.Number <> 0 Then
MsgBox "Password incorrect."
End If
Windows("TN.xlsm").Activate
ActiveSheet.Unprotect (pwd)
Windows("schoolname.xlsx").Activate
Range("B2").Select
Selection.Copy
Windows("TN.xlsm").Activate
Range("B2").Select
ActiveSheet.PasteSpecial
ActiveSheet.Protect (pwd)
Windows("schoolname.xlsx").Activate
ActiveSheet.Protect (pwd)
Workbooks("schoolname.xlsx").Close SaveChanges:=True
End Sub

ขอบคุณ มากๆ เลยครับ อาจารย์