Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

Excel에서 런타임 오류 1004를 수정하는 방법

런타임 오류 1004는 Microsoft Excel 사용자에게 영향을 미치는 것으로 알려진 Microsoft Visual Basic과 관련된 오류 코드입니다. 이 오류는 Excel 2003 및 Excel 2007에서 가장 흔한 것으로 알려져 있지만 Microsoft의 인기 있는 컴퓨터용 워크시트 응용 프로그램 버전은 런타임 오류 1004라는 위협으로부터 안전하지 않습니다. 대부분의 경우 이 문제의 영향을 받는 사용자는 다음 중 하나를 봅니다. 런타임 오류 1004의 두 가지 다른 변형입니다. 전체적으로 런타임 오류 1004의 두 가지 변형은 다음과 같습니다.

"런타임 오류 '1004':
워크시트 클래스의 복사 방법 실패
"

"런타임 오류 '1004':
애플리케이션 정의 또는 개체 정의 오류
"

Excel에서 런타임 오류 1004를 수정하는 방법

표시되는 정확한 오류 메시지는 경우에 따라 약간 다를 수 있지만 오류 코드는 동일하게 유지됩니다. 그러나 발생하는 문제의 버전에 관계없이 워크시트를 복사한 다음 복사본을 원본 워크시트와 동일한 통합 문서에 배치하도록 설계된 매크로를 Excel에서 실행하는 동안 거의 항상 발생합니다.

최악의 기술 문제와 달리 Microsoft Excel 내에서 런타임 오류 1004의 원인은 알려져 있습니다. 런타임 오류 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

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)
        '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. 새 통합 문서 만들기 및 삭제  모든 단일 워크시트에는 통합 문서에 대한 저장이 포함되어 있습니다. Excel에서 런타임 오류 1004를 수정하는 방법
  3. 형식  통합 문서.
  4. 기본적으로 템플릿에 포함할 텍스트, 데이터 및/또는 차트를 통합 문서에 포함된 유일한 워크시트에 추가합니다.
  5. Excel 2003 또는 이전 버전을 사용하는 경우 파일을 클릭합니다.> 다른 이름으로 저장 . 반면에 Excel 2007 이상을 사용하는 경우에는 Microsoft Office  버튼을 클릭한 다음 다른 이름으로 저장을 클릭합니다. . Excel에서 런타임 오류 1004를 수정하는 방법
  6. 파일 이름에서 : 필드에 템플릿을 호출할 내용을 입력합니다.
  7. 파일 형식: 옆에 있는 드롭다운 메뉴를 엽니다. 필드를 클릭하고 Excel 을 클릭합니다. 템플릿(.xlt) Excel 2003 이하 또는 Excel 을 사용하는 경우 템플릿(.xltx) Excel 2007 이상을 사용하여 선택하는 경우. Excel에서 런타임 오류 1004를 수정하는 방법
  8. 저장을 클릭합니다. . Excel에서 런타임 오류 1004를 수정하는 방법
  9. 템플릿을 성공적으로 만든 후에는 다음 코드 줄을 사용하여 프로그래밍 방식으로 템플릿을 삽입할 수 있습니다.
    Sheets.Add Type:=경로 \파일 이름

참고: 위에 설명된 코드 줄에서 경로\파일 이름 방금 만든 시트 템플릿의 위치에 대한 전체 경로(전체 파일 이름 포함)로 바꿔야 합니다.