2016-10-21 2 views
0

다음 스크립트는 폴더 내의 모든 .xlsm 파일 형식을 열고 .xlsx 형식으로 새 디렉터리에 저장하지만 다음과 같이 저장하려고하면 스크립트가 계속 실패합니다. .xlsx..XLSX로 저장하려고하면 VBA 스크립트가 실패합니다.

반환 된 오류 메시지 런타임 오류 '1004'

이, 도움이 많이 appriciated되어 실패하고 난 미리 감사합니다 해결하기위한 모든 시도이다. SaveAsWorkbook 객체의 Method이기 때문에

Set fso = CreateObject("scripting.filesystemobject") 
Set fils = fso.GetFolder("FILE LOCATION").Files 

FldrPicker = "FILE LOCATION" 
With FldrPicker 
myPath = FldrPicker 
End With 
myExtension = "*.xlsm" 
myfile = Dir(myPath & myExtension) 

filepath = "NEW FILE LOCATION" 

Do While myfile <> "" 
Set wb = workbooks.Open(Filename:=myPath & myfile) 
Application.DisplayAlerts = False 
wb.SaveAs = myfile & ".xlsx" 
wb.Close Savechanges:=True 
Application.DisplayAlerts = True 
Loop 
+2

'wb.SaveAs'는 값을 할당 할 수 없습니다. 매개 변수를 전달해야합니다. 즉,'wb.SaveAs myfile & ".xlsx"'(참고 : "abc.xlsm" ""C : \ Temp1 \ Temp2 "디렉토리에서"abc.xlsm.xlsx "라는 파일을 활성 디렉토리에 생성합니다.이 디렉토리는 Excel 응용 프로그램이 저장된 곳일 수 있습니다. - 아마도 실제로 'wb'를 원할 것입니다. SaveAs myPath & Left (myfile, Len (myfile) - 5) & ".xlsx"') – YowE3K

+0

다음과 같은 매개 변수를 추가했지만 동일한 오류가 반환됩니다. 'teamname = Left (myfile, Len (myfile) - 5) & ".xlsx"''Destination = filepath & teamname' 'wb.SaveAs = Destination' – Paul

+0

경고로 인해 오류가 발생하면, Excel' **은 정말로 매크로 사용 가능 통합 문서를 일반 파일로 저장하는 것을 좋아하지 않습니다. 코드 시작 부분에'Application.DisplayAlerts = False'를 추가하십시오.DisplayAlerts = True'를 강제 종료합니다. –

답변

0

, 그것은 값을 할당 할 수 없습니다, 그래서 당신은 양식의 문 가질 수 없습니다 :

wb.SaveAs = ..... 

MSDN documentation for SaveAs는 것을 보여줍니다 위치 또는 이름으로 많은 매개 변수를 전달할 수 있습니다.

표현식 .SaveAs 파일 이름, 화일 형식, 암호

통합 문서 개체를 나타내는 변수) 로컬 WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout. 당신이 무엇을 쓸 대한 유효한 구문의

하나는 :

wb.SaveAs myfile & ".xlsx" 
그러나

, 당신은 "C에서"abc.xlsm "라는 파일을 열었다 경우 : \ TEMP1 \ TEMP2 Excel 응용 프로그램이 저장되는 위치 아마도 현재 디렉토리에 "abc.xlsm.xlsx를,"디렉토리, 당신은라는 파일을 생성 할 것 "- 당신은 아마 정말로 원하는 있도록

wb.SaveAs FileName:=myPath & Left(myfile, Len(myfile) - 5) & ".xlsx" 

또는 가능하면

wb.SaveAs FileName:=myPath & Left(myfile, Len(myfile) - 5) & ".xlsx", _ 
       FileFormat:=xlOpenXMLWorkbook 

저장을 강제로 매크로가 아닌 형식으로 설정하십시오.


그러나 기억해야 할 주요 포인트는 당신이 Method에 값을 할당 할 수 없습니다 ...입니다.

관련 문제