2017-05-16 10 views
1

내 PC에서 잘 작동하지만 이전에 본 적이없는 친구의 PC에는없는 매크로가 있습니다.VBA : 다른 모든 통합 문서의 시트에 복사하십시오.

오류는이 부분에서 온다 :

... 
Workbooks("GOP_Flow_" + Format(DateAdd("m", -1, Date), "yyyy") + Format(DateAdd("m", -1, Date), "mm")).Worksheets(1).UsedRange.Copy 
main.Worksheets(2).Range("A1").PasteSpecial (xlPasteValues) 
... 

런타임 오류가 9있다 : 복사 라인에 "범위를 벗어난 첨자".
- 같은 버전의 Excel을 사용하기 때문에 이런 종류의 문제가 발생할 수 있습니까?
- 다른 방법이 있습니까?

미리 감사드립니다.

+2

아래 첨자는 범위를 벗어나 정의되지 않은 범위로 복사하려고합니다. 스크립트에 선언 된 "기본"통합 문서 나 인덱스 2가 포함 된 워크 시트가 없거나 이름에 특정 날짜가 포함 된 통합 문서를 찾지 못하거나 해당 통합 문서 내의 인덱스 1이있는 시트를 찾지 못했습니다. 예 : ActiveSheet.Range ("A0"). value = "something"도이 오류를 생성합니다. –

+0

감사합니다. Rik. 당신의 도움은 좋아합니다. – Francis

답변

1

그냥 추측하면 ... 파일 이름을보기위한 폴더 옵션 설정에는 다른 옵션이 있습니다.

PC에서 옵션 Hide extensions for know file types이 선택되어 파일의 확장명이 파일 이름에 표시되지 않습니다. 따라서 Workbooks("GOP_Flow_201704)은 파일 확장명없이 작동합니다.

Workbooks("GOP_Flow_" & _ 
Format(DateAdd("m", -1, Date), "yyyy") & _ 
Format(DateAdd("m", -1, Date), "mm") & ".xlsx")... 
'          ^^^^^^^ 

로 ... 친구의 PC에

는 옵션을 선택하지 않은, 그래서 당신은 이름에 확장자를 추가해야합니다 있도록 확장은 "GOP_Flow_201704.xlsx"처럼 뭔가를 통합 문서 이름의 일부를 만든다 솔루션, 이름의 파일 확장명을 넣을 경우 모두에서 작동합니다.

p.s. 그런데 +을 문자열 연결에 사용하지 말고 대신 &을 사용하십시오.

+1

ASH 감사합니다! 그것이 바로 문제입니다. – Francis

+0

@Francis 도움을 받아서 기쁘게 생각합니다. –