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
ลองกดแป้น F8 เพื่อ Run ทีละ Step ดูครับ เข้าใจว่าน่าจะเกิดที่บรรทัด
Code: Select all
MessageBox.Show ("password incorrect")
การใช้ Message แจ้ง User ปกติจะใช้ Statement ตามด้านล่างครับ
ลองส่งไฟล์ตัวอย่างมาด้วยจะได้เห็นสภาพแวดล้อมการทำงาน ลดเวลาสร้างตัวอย่างขึ้นมาเลียนแบบครับ
Re: ปัญหาการ คัดลอก และ วาง vba
Posted: Sun Oct 02, 2011 9:07 pm
by thanawat
นี้ไฟล์ครับ ครับ ผมลองรันดูแล้ว
ยังติดครับ
Re: ปัญหาการ คัดลอก และ วาง vba
Posted: Sun Oct 02, 2011 9:54 pm
by snasui
ลองทดสอบ 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
ขอบคุณ มากๆ เลยครับ อาจารย์