2013-10-22 3 views
0

Excel 파일을 텍스트 파일로 변환하는 Visual Basic 스크립트가 있습니다. example.xlsx라는 Excel 파일이 있다고 가정 해 보겠습니다. 현재 스크립트는 example.xlsx.txt 파일로 저장합니다. 나는 그것을 저장해야합니다 : example.txtExcel 파일과 이름이 같은 텍스트 파일 저장

아이디어가 있습니까?

Option Explicit 

    Dim oFSO, myFolder 
Dim xlTXT 

myFolder="C:\..." 


Set oFSO = CreateObject("Scripting.FileSystemObject") 
xlTXT = 21 'Excel TXT format enum 
Call ConvertAllExcelFiles(myFolder) 
Set oFSO = Nothing 

Call MsgBox ("Done!") 


Sub ConvertAllExcelFiles(ByVal oFolder) 
Dim targetF, oFileList, oFile 
Dim oExcel, oWB, oWSH 

    Set oExcel = CreateObject("Excel.Application") 
    oExcel.DisplayAlerts = False 
    Set targetF = oFSO.GetFolder(oFolder) 
    Set oFileList = targetF.Files 
    For Each oFile in oFileList 
     If (Right(oFile.Name, 4) = "xlsx") Then 
      Set oWB = oExcel.Workbooks.Open(oFile.Path) 
      For Each oWSH in oWB.Sheets 
       Call oWSH.SaveAs (oFile.Path & ".txt", xlTXT) 
       Exit For 
      Next 
      Set oWSH = Nothing 
      Call oWB.Close 
      Set oWB = Nothing 
     End If 
    Next 
    Call oExcel.Quit 
    Set oExcel = Nothing 

End Sub 
+0

지금 당신은 당신이 실제로 그것을 변경해야 할 파일 경로의 끝에 .txt 인 추가하는 것이 가장 쉬운 방법은 ("(oFile.Path는". XLSX "교체'통화 oWSH.SaveAs 것 같다. txt "), xlTXT)' – engineersmnky

+0

고마워! 모든 텍스트 파일을 다른 폴더에 저장하려면 어떻게해야합니까? – Brandon

+1

현재 각각을 동일한 이름으로 저장하고 있으므로 각 워크 시트의 파일을 덮어 쓰는 것처럼 보입니다. 따라서 통합 문서에 둘 이상의 시트가있는 경우 마지막 워크 시트를 제외하고 모두 손실됩니다. – Harrison

답변

1

FileSystemObject를가 number of methods 같은 GetBaseName, GetFileName 갖는다. 그래서,

Call oWSH.SaveAs (myFolder & "\" & oFile.GetBaseName & ".txt", xlTXT) 

해리슨 설명으로, 당신은 아마 파일 이름의 일부로 시트 이름, 또는 어떤 수를 포함 할 것, (GetFileName은. 확장자를 포함 할 것)

하지만.

숫자를 고안하지 않고 파일 이름의 일부로 워크 시트 색인을 사용하는 것이 좋습니다.

0

foreach 루프를 종료 할 때 첫 번째 시트 만 저장합니다. 당신이

교체 할 수있는 모든 시트를 저장하려면

 For Each oWSH in oWB.Sheets 
      Call oWSH.SaveAs (oFile.Path & ".txt", xlTXT) 
      Exit For 
     Next 

당신은 단지 첫 번째 워크 시트를 저장하는 대신 첫 번째 시트 후 사용할 수 있습니다 위해 종료를 사용하기를 원한다면

 For Each oWSH in oWB.Sheets 
      Call oWSH.SaveAs (oWB.Name & "_" & oWSH.Name & ".txt", xlTXT) 
     Next 

주와 이.

 Call oWB.Sheets(1).SaveAs (oWB.Name & ".txt", xlTXT) 
+0

@AndyG, 완료 :-) – Harrison

관련 문제