Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาดของ Windows

วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel

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

ข้อผิดพลาดรันไทม์ '1004':
วิธีการคัดลอกเวิร์กชีตคลาสล้มเหลว

ข้อผิดพลาดรันไทม์ '1004':
ข้อผิดพลาดที่กำหนดโดยแอปพลิเคชันหรือกำหนดวัตถุ

วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel

ข้อความแสดงข้อผิดพลาดที่คุณเห็นอาจแตกต่างกันเล็กน้อย ในบางกรณี แม้ว่ารหัสข้อผิดพลาดจะยังคงเหมือนเดิม อย่างไรก็ตาม ไม่ว่าคุณจะพบปัญหาเวอร์ชันใด แต่ก็มักเกิดขึ้นขณะเรียกใช้แมโครใน 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. สร้างสมุดงานใหม่และ ลบ  แผ่นงานทุกแผ่นในสมุดงานมีบันทึกสำหรับหนึ่งแผ่น วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel
  3. รูปแบบ  สมุดงาน
  4. เพิ่มข้อความ ข้อมูล และ/หรือแผนภูมิใดๆ ที่คุณต้องการให้มีในเทมเพลตโดยค่าเริ่มต้นเป็นเวิร์กชีตเดียวที่เวิร์กบุ๊กมีอยู่ในขณะนี้
  5. หากคุณใช้ Excel 2003 หรือเก่ากว่า ให้คลิกที่ ไฟล์ บันทึกเป็น . หากคุณกำลังใช้ Excel 2007 หรือใหม่กว่า ให้คลิกที่ Microsoft Office  จากนั้นคลิก บันทึกเป็น . วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel
  6. ใน ชื่อไฟล์ : ให้พิมพ์อะไรก็ได้ที่คุณต้องการให้เรียกเทมเพลต
  7. เปิดเมนูแบบเลื่อนลงถัดจาก บันทึกเป็นประเภท: และคลิกที่ Excel  เทมเพลต (.xlt) หากคุณใช้ Excel 2003 หรือเก่ากว่า หรือ Excel  เทมเพลต (.xltx) หากคุณใช้ Excel 2007 หรือใหม่กว่าเพื่อเลือก วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel
  8. คลิก บันทึก . วิธีแก้ไขข้อผิดพลาดรันไทม์ 1004 ใน Excel
  9. เมื่อคุณสร้างเทมเพลตสำเร็จแล้ว คุณสามารถแทรกเทมเพลตโดยทางโปรแกรมได้โดยใช้โค้ดบรรทัดต่อไปนี้:
    Sheets.Add Type:=path
  10. แข็งแกร่ง> \ชื่อไฟล์

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