2013-10-01 5 views
1

나는 재귀 적으로 통과하고 모든 단어를 가져 와서 디렉토리에서 파일을 추출한 다음 템플릿이 열리고 저장 될 때마다 VBA 스크립트를 작성합니다. 모든 것이 적절하게 작동하지만 열린 엑셀 응용 프로그램을 닫으려고하면 오류를 얻고있다 "런타임 오류 '91': 개체 변수 또는 블록이 설정되지 않습니다":재귀 저장 - throwing 오류

를 다음과 같이

코드는

If ExtFind = "xlsx" Or ExtFind = "xls" Then 
Debug.Print ("EXCEL FILE FOUND") 
Dim xlApp As Excel.Application 
Set xlApp = CreateObject("Excel.Application") 
xlApp.DisplayAlerts = False 
xlApp.Visible = True 
xlApp.Workbooks.Open strFile 
ActiveWorkbook.SaveAs FileName:=saveString, FileFormat:=xlTemplate 
ActiveWorkbook.Close 
xlApp.Quit 

Set xlApp = Nothing 
End If 

에러 라인에 발생

ActiveWorkbook.SaveAs FileName:=saveString, FileFormat:=xlTemplate 

I savestring이라는 변수가 액세스 테이블로부터 검색되고 정확한 값을 포함하고 있음을 100 % 확신한다. 이 코드는 루프의 일부로 실행됩니다. 문제는 현재 통합 문서와 관련이 있다고 생각하지만 확실하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

내가 너무 장님, 내가 할하는 데 필요한 모든했습니다 변화 믿을 수 없다 : ActiveWorkbook.SaveAs 파일 이름 : = savestring이라는, 화일 형식 : = xlTemplate ActiveWorkbook.Close 사람 : xlApp.ActiveWorkbook.SaveAs 파일 이름 : = savestring이라는, 화일 형식 : = xlTemplate xlApp.ActiveWorkbook.Close – Finklesteinn

+1

Excel에서 열린 새 인스턴스가 이미있는 경우에 왜 오 네? –

답변

0

나는 당신이 Excel 응용 프로그램 개체의 속성으로 Activeworkbook을 참조해야한다는 것을 알게되었습니다. 나는 당신이 With 블록에 그 일을 고려 제안 할 그러나

...

With xlApp 
    .DisplayAlerts = False 
    .Visible = True 
    .Workbooks.Open strFile 
    .ActiveWorkbook.SaveAs FileName:=saveString, _ 
     FileFormat:=xlTemplate 
    .ActiveWorkbook.Close 
    .Quit 
End With 
+0

좋은 생각입니다. 건배 – Finklesteinn