2011-09-23 3 views
0

엑셀 스프레드 시트의 각 워크 시트를 CSV 파일에 저장하려고합니다. 다음 스크립트는 작업을 수행합니다. 줄 .Parent.Close savechanges:=False은 생성 된 워크 시트를 닫지 만 주석을 제거하면 첫 번째 시트가 끝난 후 스크립트가 중지됩니다. 내가 주석을 달면 모든 시트가 처리됩니다.CSV로 내보낼 때 복사 한 워크 시트 닫기

Dim newWks As Worksheet 
Dim wks As Worksheet 

For Each wks In ActiveWorkbook.Worksheets 
wks.Copy 'to a new workbook 
Set newWks = ActiveSheet 
With newWks 
.SaveAs Filename:="C:\home\tmp\base\" & wks.Name & ".txt", FileFormat:=xlTextWindows 
.Parent.Close savechanges:=False 
End With 
Next wks 

MsgBox "done with: " & ActiveWorkbook.Name 

답변

1

액티브 워크 북을 닫습니다. 당신은 새로 생성 된 개체를 닫으려는 경우 같은 것을 할 (그것을 테스트하고 나를 위해 작동) :

Dim newWkb As Workbook 
Dim wks As Worksheet 

For Each wks In ActiveWorkbook.Worksheets 
    wks.Copy 'to a new workbook 
    Set newWkb = ActiveWorkbook 
    With newWkb 
    .SaveAs Filename:="C:\home\tmp\base\" & wks.Name & ".txt", FileFormat:=xlTextWindows 
    newWkb.Close savechanges:=False 
    End With 
Next wks 

MsgBox "done with: " & ActiveWorkbook.Name 
+0

내가 코드와 시드니의이 같은 일을 생각, 더 직접적으로 통합 문서를 식별 당신 있지만, 닫혀 야한다. 다른 말로하면 "Set newWkb = ActiveWorkbook"은 "Set newWks = ActiveSheet.Parent"와 동일합니다. 이는 시드니 코드가하는 것입니다. 귀하의 코드와 시드니의 코드가 모두 Excel 2010에서 올바르게 작동합니다. –

+0

예, 원래의 워크 시트에서 SaveAs가 수행되고 다른 워크 북에서 SaveAs가 실행된다는 유일한 차이가 있다고 가정합니다. 그래서, 왜 그것이 그를 위해 일하지 않고 있었는지 모르겠지만, 지금은 작동합니다! 이상한. – Jon49

+0

네,이 게시물을 읽기 전까지는 Worksheet.SaveAs를 할 수 있다는 것을 깨닫지 못했습니다. 나는 항상 새로운 것을 배운다. –

관련 문제