VBA 오류 1004 및 소스 파일이 읽기 전용이 됨

리 성 웨이

Excel 파일의 두 페이지 ( "SYN"및 "STR")를 두 개의 다른 배열로 읽으려고합니다.

코드는 매우 간단하며 한 페이지 만 필요하면 잘 작동합니다.

Sub recap()
Dim wb As Workbook  
Dim fpath As String
fpath = Application.ActiveProject.Path & "\Suivi d'études.xlsm"  
'(this is the file I want to read in the same folder)

Set wb = Workbooks.Open(fpath, True, False)

Dim rng1 As Range
Dim i, j As Integer

i = wb.Worksheets("STR").UsedRange.Rows.Count
j = wb.Worksheets("STR").Columns.Count

Set rng1 = wb.Worksheets("STR").Range(Cells(1, 1), Cells(i, j))

Dim data2(), data1() As Variant
data1() = rng1

wb.Close

Debug.Print (data1(10, 10))

End Sub

잘 작동합니다. 그런 다음 두 번째 페이지를 통합했습니다.

Sub recap()

Dim wb As Workbook   'Need Microsoft Excel 16.0 Object Library
Dim fpath As String
fpath = Application.ActiveProject.Path & "\Suivi d'études.xlsm"

Set wb = Workbooks.Open(fpath, True, False)

Dim rng1, rng2 As Range
Dim i, j, a, b As Integer

a = wb.Worksheets("SYN").UsedRange.Rows.Count
b = wb.Worksheets("SYN").Columns.Count

i = wb.Worksheets("STR").UsedRange.Rows.Count
j = wb.Worksheets("STR").Columns.Count

Set rng1 = wb.Worksheets("SYN").Range(Cells(1, 1), Cells(a, b))
Set rng2 = wb.Worksheets("STR").Range(Cells(1, 1), Cells(i, j))

Dim data2(), data1() As Variant
data1() = rng1
data2() = rng2
wb.Close
Debug.Print (data2(10, 10))
End Sub

범위 설정 줄에 1004 오류가 발생했을뿐만 아니라, set rng1 = blablabla 코드가 완전히 실행되지 않았기 때문에 입력 엑셀 파일이 코드에서 여전히 "열려있어"읽기 전용 파일이되었습니다.

그래서 내 질문은 다음과 같습니다. 1.이 오류를 일으킬 수있는 이유는 배열에서 두 번째 페이지를 읽을 수없는 이유는 무엇입니까? 2. wb.close가 실행되지 않은 경우 입력 파일을 "닫기"로 강제하는 방법은 무엇입니까?

Foxfire 및 화상 및 화상

여기서 문제는 변수를 정의하는 방법입니다. 첫 번째 코드에서 다음을 수행했습니다.

Dim rng1 As Range
'
'
'
Set rng1 = wb.Worksheets("STR").Range(Cells(1, 1), Cells(i, j))

rng1으로 생성 되었기 때문에 Range Object, 예,로 설정해야합니다 Set.

두 번째 코드에서 다음을 수행했습니다.

Dim rng1, rng2 As Range
'
'
'
'
Set rng1 = wb.Worksheets("SYN").Range(Cells(1, 1), Cells(a, b))
Set rng2 = wb.Worksheets("STR").Range(Cells(1, 1), Cells(i, j))

만으로 rng2정의됩니다 Range Object. 변수 rng1Variant유형을 지정하지 않을 때 VBA의 기본 옵션 인 으로 정의됩니다 .

따라서 VBA rng1Variant다음과 같이 생각 하고 나중에 수행합니다.

Set rng1 = wb.Worksheets("SYN").Range(Cells(1, 1), Cells(a, b))

Set객체에만 사용해야 하므로 오류가 발생 합니다.

VBA rng1는로 정의 되었기 때문에 다음과 Variant같은 줄을 예상했습니다.

rng1 = wb.Worksheets("SYN").Range(Cells(1, 1), Cells(a, b))

즉, 해당 범위의 모든 값을 라는 2 차원 배열 로 가져 옵니다 rng1. 이 작업을 원하지는 않지만 VBA에서 해당 오류가 발생하는 이유를 설명합니다.

해결책은 정말 쉽습니다. 사용중인 변수 / 객체 유형을 항상 정의하십시오 .

라인 Dim rng1 as Range, rng2 As Range이 문제를 해결해야합니다. 항상 모든 변수를 올바르게 선언하십시오.

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VBA의 인덱스 및 일치를 사용하는 런타임 오류 1004

분류에서Dev

ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

분류에서Dev

ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

분류에서Dev

ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

분류에서Dev

Tar : 읽을 때 파일이 변경됨 / 읽기 전에 파일이 제거됨 오류

분류에서Dev

Redmine 파일 업로드 오류-클라이언트 연결 해제 오류 : 요청 본문 읽기 오류 : 예기치 않은 스트림 끝 (errno = -1004)

분류에서Dev

BTRFS가 IO 오류와 함께 읽기 전용이 됨

분류에서Dev

바이너리 액세스 읽기를 사용하여 .dat 파일에서 모든 데이터 추출 (응용 프로그램 정의 오류 1004)

분류에서Dev

파일에서 데이터 가져 오기 및 읽기 오류

분류에서Dev

기능의 VBA 오류 1004

분류에서Dev

Ext4 오류 및 디스크가 읽기 전용으로 다시 마운트 됨

분류에서Dev

특정 파일에 액세스 할 때 파티션 오류 및 읽기 전용으로 다시 마운트

분류에서Dev

특정 파일에 액세스 할 때 파티션 오류 및 읽기 전용 다시 마운트

분류에서Dev

제목 및 텍스트를 제거한 후 MS CRM 2013 노트가 읽기 전용이 됨

분류에서Dev

제목 및 텍스트를 제거한 후 MS CRM 2013 노트가 읽기 전용이 됨

분류에서Dev

재부팅 후 CentOS 루트 파일 시스템이 읽기 전용으로 전환됨

분류에서Dev

EXCEL VBA : 워드 문서 오류 무시 및 내용 읽기

분류에서Dev

EROS | 읽기 전용 파일 시스템 오류

분류에서Dev

이 VBA에서 1004 오류가 발생하는 이유

분류에서Dev

"패키지가 여러 번 구성됨", "저장소에 릴리스 파일이 없음"및 업데이트시 404 오류

분류에서Dev

VBA 및 텍스트 파일 (읽기, 쓰기 및 다시 저장)

분류에서Dev

NPM 오류 : 오류 : EROFS : 읽기 전용 파일 시스템, mkdir '/ npm'

분류에서Dev

오류 1004 : Excel VBA

분류에서Dev

ActiveSheet 이름을 바꿀 때 Excel VBA 런타임 오류 1004

분류에서Dev

이 읽기 전용 파일 시스템 오류를 해결하는 방법은 무엇입니까?

분류에서Dev

'오류 : 읽기 전용 파일 시스템', Bash 셸에서 루트 권한이 있어도

분류에서Dev

C # 오류 : OutOfMemoryException-큰 텍스트 파일 읽기 및 사전에서 바꾸기

분류에서Dev

VBA를 사용하여 텍스트 파일 읽기 및 처리 문제

분류에서Dev

웹 쿼리의 Excel 2007 VBA 오류 1004 "이 사이트의 주소가 유효하지 않습니다."

Related 관련 기사

  1. 1

    VBA의 인덱스 및 일치를 사용하는 런타임 오류 1004

  2. 2

    ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

  3. 3

    ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

  4. 4

    ubuntu 응용 프로그램 segfault 및 파일 시스템이 읽기 전용 모드로 다시 마운트 됨

  5. 5

    Tar : 읽을 때 파일이 변경됨 / 읽기 전에 파일이 제거됨 오류

  6. 6

    Redmine 파일 업로드 오류-클라이언트 연결 해제 오류 : 요청 본문 읽기 오류 : 예기치 않은 스트림 끝 (errno = -1004)

  7. 7

    BTRFS가 IO 오류와 함께 읽기 전용이 됨

  8. 8

    바이너리 액세스 읽기를 사용하여 .dat 파일에서 모든 데이터 추출 (응용 프로그램 정의 오류 1004)

  9. 9

    파일에서 데이터 가져 오기 및 읽기 오류

  10. 10

    기능의 VBA 오류 1004

  11. 11

    Ext4 오류 및 디스크가 읽기 전용으로 다시 마운트 됨

  12. 12

    특정 파일에 액세스 할 때 파티션 오류 및 읽기 전용으로 다시 마운트

  13. 13

    특정 파일에 액세스 할 때 파티션 오류 및 읽기 전용 다시 마운트

  14. 14

    제목 및 텍스트를 제거한 후 MS CRM 2013 노트가 읽기 전용이 됨

  15. 15

    제목 및 텍스트를 제거한 후 MS CRM 2013 노트가 읽기 전용이 됨

  16. 16

    재부팅 후 CentOS 루트 파일 시스템이 읽기 전용으로 전환됨

  17. 17

    EXCEL VBA : 워드 문서 오류 무시 및 내용 읽기

  18. 18

    EROS | 읽기 전용 파일 시스템 오류

  19. 19

    이 VBA에서 1004 오류가 발생하는 이유

  20. 20

    "패키지가 여러 번 구성됨", "저장소에 릴리스 파일이 없음"및 업데이트시 404 오류

  21. 21

    VBA 및 텍스트 파일 (읽기, 쓰기 및 다시 저장)

  22. 22

    NPM 오류 : 오류 : EROFS : 읽기 전용 파일 시스템, mkdir '/ npm'

  23. 23

    오류 1004 : Excel VBA

  24. 24

    ActiveSheet 이름을 바꿀 때 Excel VBA 런타임 오류 1004

  25. 25

    이 읽기 전용 파일 시스템 오류를 해결하는 방법은 무엇입니까?

  26. 26

    '오류 : 읽기 전용 파일 시스템', Bash 셸에서 루트 권한이 있어도

  27. 27

    C # 오류 : OutOfMemoryException-큰 텍스트 파일 읽기 및 사전에서 바꾸기

  28. 28

    VBA를 사용하여 텍스트 파일 읽기 및 처리 문제

  29. 29

    웹 쿼리의 Excel 2007 VBA 오류 1004 "이 사이트의 주소가 유효하지 않습니다."

뜨겁다태그

보관