XL: 자동화를 사용하여 Excel 배열 전달 중 제한

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

177991
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
요약
이 문서에서는 제한이 있는 Microsoft Excel 워크시트 및 자동화를 사용하여 매크로를 배열을 전달하는 방법에 대해 설명합니다. 이러한 한계를 초과하면 자동화 코드에서 런타임 오류가 나타날 수 있습니다.
추가 정보
Microsoft을 배제하며 제한되지 않은 묵시적된 보증 (상품성 및 특정 목적에의 적합성에 대한 묵시적인, 목적으로만 프로그래밍 예제를 제공합니다. 이 문서에서는 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.
프로그래밍 경험이 제한되어 있으면 Microsoft 인증 파트너 문의하거나 Microsoft 자문 서비스 할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.

Microsoft 파트너 - https://partner.microsoft.com/global/30000104 인증

Microsoft 권고 서비스 - http://support.microsoft.com/gp/advisoryservice

사용할 수 있는 지원 옵션 및 Microsoft 연락하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS자동화를 사용하여 Excel로 배열을 전달하는 경우 다음 제한 사항이, Excel 및 워크시트 범위 또는 배열 전달 중인 여부를 매크로에 인수로 버전에 따라 적용됩니다. 자세한 내용은 표 다음에 적절한 각주를 참조하십시오.
   Version of          Passing Array to     Passing Array to   Microsoft Excel     Worksheet Range      Macro (Procedure)   ----------------------------------------------------------   5.0                        A                B,C   7.0 (Excel 95)             D                E,C,H   8.0 (Excel 97)             F                G,H   9.0 (Excel 2000)           F                G,H				

각주

A:

배열에 있는 요소의 최대 수는 약 6550 입니다. 이 제한을 초과할 경우 다음 오류 메시지 중 하나 또는 모두를 나타납니다.
메모리 부족
1005: Range 클래스의 Value 속성을 설정할 수 없습니다.
Excel 행/열 바꿈 함수를 사용하여 Excel로 전달할 수 있는 배열에 있는 요소의 최대 수를 4095 것입니다. 이 제한을 초과할 경우 다음 오류 메시지가 나타날 수 있습니다.
런타임 오류 '1004':
실패한 응용 프로그램 클래스의 메서드를 바꾸기
B

배열에 있는 요소의 최대 수를 4095 것입니다. 이 제한을 초과할 경우 다음 오류 메시지가 나타날 수 있습니다.
런타임 오류 '1004':
실패한 응용 프로그램 클래스의 메서드를 실행하십시오.
참고: 다차원 배열을 전달하는 경우 4095 전체 요소 수를 초과할 때 실행할 매크로 됩니다 Excel 있지만 오류 메시지가 나타날 수 없습니다.

C:

배열 매개 변수는 Excel 매크로를 정의할 때 이를 Variant 변수로 정의되어야 합니다 또는 자동화를 사용하여 매크로를 실행하려고 하면 다음 오류 메시지가 나타납니다.
런타임 오류 '1004':
<매크로 이름 > 매크로를 찾을 수 없습니다.
예를 들어, AcceptArray Excel 에서 매크로 이름은 가정하십시오. 예제를 어떻게 배열의 Excel 매크로가 정의되어 있어야 합니다:
   Public Sub AcceptArray(ByVal myarray As Variant)      ' You can pass the parameter either ByVal or ByRef.      ' To determine the number of elements in the array, use      ' the UBound function.   End Sub				
D:

배열에 있는 요소의 최대 수는 5461 입니다. 이 제한을 초과할 경우 다음 오류 메시지 중 하나가 나타날 수 있습니다.
런타임 오류 '1004':
실패한 응용 프로그램 클래스의 메서드를 바꾸기
- 또는 -
런타임 오류 '1005':
Range 클래스의 Value 속성을 설정할 수 없습니다.
E:

배열에 있는 요소의 최대 수는 5461 입니다. 이 제한을 초과할 경우 다음 오류 메시지가 나타날 수 있습니다.
런타임 오류 '1004':
실패한 응용 프로그램 클래스의 메서드를 실행하십시오.
F:

배열에 있는 요소의 최대 수는 사용 가능한 메모리나 Excel 제한된 워크시트 최대 크기 (65536 행 X 256 열). 그러나 Excel로 전달할 수 있는 배열에 있는 요소의 최대 행/열 경우 Excel 바꿈 사용하여 5461 함수입니다. 이 제한을 초과할 경우 다음 오류 메시지가 나타날 수 있습니다.
런타임 오류 '13':
형식 불일치
G:

배열에 있는 요소의 최대 수는 사용 가능한 메모리에 의해서만 제한됩니다. 또한 Excel 매크로가 Variant 변수로 매개 변수를 정의할 필요가 없습니다. 그러나 배열을 전달해야 할 경우 ByVal이 이 문서의 앞부분에 나오는 각주 C 같이 Variant 변수로 매개 변수를 정의해야 합니다. 로 Variant 변수를 정의할 경우 런타임 오류를 13, "형식 불일치" 오류가 나타납니다.

H:

ByRef 로 인수를 전달하면 out-of-process 자동화 할 때 서버, Excel과 같은 데이터 마샬링 사이의 자동화 수행됩니다 컨트롤러나 클라이언트 및 별도의 프로세스에서 실행되는 이후 서버. 따라서 ByRef 사용하여 Excel에 배열을 전달할 때 해당 배열의 복사본이 Excel 주소 공간을 보내집니다. Excel 프로시저를 실행한 다음, 해당 배열의 복사본이 클라이언트에 전달됩니다. out-of-process 서버로 사용하여 ByRef 인수를 전달하면 수는 있지만 매우 효율적인 것은 아닙니다. in-process 자동화 서버 (동적 연결 라이브러리 (DLL)) 및 사용하여 ByRef 로 인수를 전달하면 없음 마샬링 수행됩니다 이후 반면, 이 매우 효율적입니다. 서버가 클라이언트 메모리에서 동일한 배열을 사용하고 있습니다. 서버가 클라이언트로서 동일한 주소 공간에서 실행되므로 가능합니다.

out-of-process 서버를 Excel과 같은 마샬링 인해 보다 효율적인 ByVal 대신 ByRef 배열을 전달할 수 있습니다. 이 방법은 하나의 복사본만 Excel로 전달되며 Excel 복사본을 클라이언트로 다시 전달할 수 없습니다. Excel 매크로를 ByVal 배열을 전달하려면 Variant 변수로 Excel 매크로 매개 변수를 정의해야 합니다. 예를 들어가, 이 문서의 앞부분에 나오는 각주 C를 참조하십시오.

예제 Visual Basic 프로시저

다음 Visual Basic 샘플 응용 프로그램 Sub 프로시저를 Excel에 배열을 전달할 방법을 보여 줍니다. 처음 두 절차에서는 워크시트 범위를 배열을 전달하여 워크시트에서 셀 범위를 채우는 방법을 보여 줍니다. 세 번째 프로시저를 위해 Excel 매크로 배열을 전달하는 방법을 보여 줍니다.

각 예제에서는 다음과 같은 선언이 사용됩니다.
명시적 옵션
개인 xlApp 개체로
개인 xlBook 개체로
개인 xlSheet 개체로
워크시트 범위 1 차원 배열 전달:
   Public Sub OneDimension()      Const size = 5461      Dim myarray(1 To size) As Integer      Set xlApp = CreateObject("Excel.Application")      xlApp.Visible = True      Set xlBook = xlApp.Workbooks.Add      Set xlSheet = xlBook.Worksheets("Sheet1")      xlSheet.Cells(1, 1).Resize(size, 1).Value = _         xlApp.Application.Transpose(myarray)   End Sub				
워크시트 범위 2 차원 배열 전달:
   Public Sub TwoDimension()      Const size = 2730      Dim myarray(1 To size, 1 To 2) As Integer      ' Number of elements = 2730 * 2 = 5460.      Set xlApp = CreateObject("Excel.Application")      xlApp.Visible = True      Set xlBook = xlApp.Workbooks.Add      Set xlSheet = xlBook.Worksheets("Sheet1")      xlSheet.Cells(1, 1).Resize(size, 2).Value = myarray   End Sub				
Excel 매크로 를 같은 인수를 배열 전달:
   Public Sub RunExcelMacro()      Const size = 5461      Dim myarray(1 To size) As Integer      Set xlApp = CreateObject("Excel.Application")      xlApp.Visible = True      Set xlBook = xlApp.Workbooks.Open("C:\MyBook.xls")      xlApp.Run "AcceptArray", myarray   End Sub				
모듈 내에 C:\MyBook.xls, AcceptArray 프로시저에서 다음과 유사한:
   Option Explicit   Public Sub AcceptArray(ByVal myarray As Variant)      MsgBox "Size of first dimension: " & UBound(myarray, 1)   End Sub				
참조
배열 및 Excel에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
166342Microsoft Excel 97 XL97: 최대 배열 크기

153307HOWTO: 매개 변수 상태로 Microsoft Excel 매크로 호출

153090Excel 워크시트에 VBA 배열 전달 방법
Visual Basic 응용 프로그램에 대한 도움말 보기에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
163435VBA: 리소스 응용 프로그램에 대해 VBA 프로그래밍
8.0 OLE

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 177991 - 마지막 검토: 12/05/2015 08:13:44 - 수정: 3.6

Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Excel 95 Standard Edition, Microsoft Excel 95a, Microsoft Excel 5.0c, Microsoft Office 2000 Developer Edition

  • kbnosurvey kbarchive kbmt kbautomation kbinfo KB177991 KbMtko
피드백