วิธีการแก้ไข Run Time Error 1004 ใน Excel

ข้อผิดพลาดรันไทม์ 1004 เป็นรหัสข้อผิดพลาดที่เกี่ยวข้องกับ Microsoft Visual Basic ที่ทราบว่ามีผลต่อผู้ใช้ Microsoft Excel เป็นที่ทราบกันดีว่ามีข้อผิดพลาดมากที่สุดใน Excel 2003 และ Excel 2007 แม้ว่าจะไม่มีแอปพลิเคชันแผ่นงานที่ได้รับความนิยมของ Microsoft สำหรับคอมพิวเตอร์ที่ปลอดภัยจากการคุกคามที่เป็นข้อผิดพลาดรันไทม์ 1004 ในกรณีส่วนใหญ่ผู้ใช้ที่ได้รับผลกระทบ ข้อผิดพลาดรันไทม์ที่แตกต่างกันสองรูปแบบ 1004 ข้อผิดพลาดรันไทม์ 1004 ที่อ่านได้ทั้งหมดสองรูปแบบ:

ข้อผิดพลาดรันไทม์ '1004':

วิธีการคัดลอกคลาสแผ่นงานล้มเหลว”

ข้อผิดพลาดรันไทม์ '1004':

ข้อผิดพลาดที่กำหนดโดยแอพพลิเคชันหรือวัตถุที่กำหนด”

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

ไม่เหมือนปัญหาทางเทคนิคที่เลวร้ายที่สุดสาเหตุของข้อผิดพลาดรันไทม์ 1004 ใน Microsoft Excel นั้นเป็นที่รู้จัก ข้อผิดพลาดรันไทม์ 1004 เกิดขึ้นเมื่อแมโครที่คุณกำลังเรียกใช้กำลังคัดลอกแผ่นงานต้นฉบับไปยังสมุดงานที่มีชื่อที่กำหนดซึ่งคุณไม่ได้บันทึกและปิดก่อนที่คุณจะเรียกใช้แมโคร ตัวอย่างของแมโครดังกล่าวสามารถเห็นได้ในรหัสต่อไปนี้:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) Next End Sub 

เนื่องจากสาเหตุของข้อผิดพลาดรันไทม์ 1004 ในบริบทของ Microsoft Excel เป็นที่รู้จักกันเช่นเดียวกับความละเอียด นอกเหนือจากวิธีแก้ไขปัญหานี้ผู้ใช้ที่ได้รับผลกระทบจากปัญหานี้ยังมีวิธีแก้ไขปัญหาที่สามารถใช้ในกรณีที่โซลูชันไม่ทำงานหรือไม่พบวิธีแก้ไขปัญหาที่เป็นตัวเลือกที่ทำงานได้

การแก้ไขปัญหา:

วิธีแก้ปัญหาเฉพาะนี้คือเพียงแก้ไขรหัสของแมโครที่คุณกำลังเรียกใช้เพื่อให้บันทึกและปิดสมุดงานเป้าหมายเป็นระยะ ๆ ในขณะที่ทำสำเนาแผ่นงาน รหัสสำหรับแมโครที่ทำสิ่งนี้จะมีลักษณะตามบรรทัดต่อไปนี้:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) 'Uncomment this code for the workaround: 'Save, close, and reopen after every 100 iterations: If iCounter Mod 100 = 0 Then oBook.Close SaveChanges:=True Set oBook = Nothing Set oBook = Application.Workbooks.Open("c:\test2.xls") End If Next End Sub 

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

วิธีแก้ปัญหา:

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

  1. เปิดตัว Excel
  2. สร้างเวิร์กบุ๊กใหม่และ ลบ เวิร์กชีททุกแผ่นที่เวิร์กบุ๊กมีบันทึกไว้

  3. จัดรูปแบบ สมุดงาน
  4. เพิ่มข้อความข้อมูลและ / หรือแผนภูมิใด ๆ ที่คุณต้องการให้มีในเทมเพลตโดยค่าเริ่มต้นเป็นเวิร์กชีทเดียวที่เวิร์กบุ๊กมีอยู่ตอนนี้
  5. หากคุณใช้ Excel 2003 หรือเก่ากว่าให้คลิกที่ ไฟล์ > บันทึกเป็น หากคุณใช้ Excel 2007 หรือใหม่กว่าให้คลิกที่ปุ่ม Microsoft Office แล้วคลิกที่ บันทึกเป็น

  6. ในฟิลด์ ชื่อไฟล์ : พิมพ์สิ่งที่คุณต้องการให้เรียกใช้เทมเพลต
  7. เปิดเมนูแบบเลื่อนลงถัดจากฟิลด์ บันทึกเป็นประเภท: และคลิกที่ เทมเพลต Excel (.xlt) หากคุณใช้ Excel 2003 หรือก่อนหน้าหรือ เทมเพลต Excel (.xltx) หากคุณใช้ Excel 2007 หรือใหม่กว่าเพื่อเลือก

  8. คลิกที่ บันทึก

  9. เมื่อคุณสร้างเทมเพลตสำเร็จแล้วคุณสามารถแทรกเทมเพลตแบบเป็นโปรแกรมโดยใช้บรรทัดของรหัสต่อไปนี้:

    Sheets.Add Type: = path \ filename

หมายเหตุ: ในบรรทัดของรหัสที่อธิบายไว้ข้างต้น พา ธ \ filename จะต้องถูกแทนที่ด้วยพา ธ เต็ม (รวมถึงชื่อไฟล์ที่สมบูรณ์) สำหรับตำแหน่งของเทมเพลตชีทที่คุณเพิ่งสร้างขึ้น

บทความที่น่าสนใจ