VB를 사용하여 Excel 워크시트를 파일 이름+워크시트 이름으로 CSV 파일에 저장
저는 VB 코딩이 매우 생소합니다. 여러 엑셀 파일 워크시트를 csv에 저장하려고 합니다. 여러 시트에 대해 이 작업을 수행할 수는 없지만 단일 파일에 대한 방법을 찾았습니다.이 사이트에서 제가 하려는 일에 매우 유용한 코드를 찾았습니다. 문제는 파일이 워크시트 이름으로 저장된다는 것입니다. 하지만 원래 파일과 워크시트 이름으로 저장하려고 합니다.filename_worksheet name
제가 직접 해봤는데 계속 오류가 발생하는데, 제가 뭘 잘못하고 있는지 알려주실 수 있나요?
제가 사용하고 있는 코드는 다음과 같습니다.
Public Sub SaveWorksheetsAsCsv()
Dim WS As Excel.Worksheet
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
SaveToDirectory = "H:\test\"
For Each WS In ThisWorkbook.Worksheets
WS.SaveAs SaveToDirectory & WS.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
' about overwriting the original file.
End Sub
이게 당신이 원하는 것 같아요
Sub SaveWorksheetsAsCsv()
Dim WS As Excel.Worksheet
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
SaveToDirectory = "H:\test\"
For Each WS In Application.ActiveWorkbook.Worksheets
WS.SaveAs SaveToDirectory & WS.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
' about overwriting the original file.
End Sub
저도 비슷한 문제가 있었습니다.워크시트의 데이터를 별도의 CSV 파일로 저장해야 했습니다.
명령 단추 뒤에 내 코드가 있습니다.
Private Sub cmdSave()
Dim sFileName As String
Dim WB As Workbook
Application.DisplayAlerts = False
sFileName = "MyFileName.csv"
'Copy the contents of required sheet ready to paste into the new CSV
Sheets(1).Range("A1:T85").Copy 'Define your own range
'Open a new XLS workbook, save it as the file name
Set WB = Workbooks.Add
With WB
.Title = "MyTitle"
.Subject = "MySubject"
.Sheets(1).Select
ActiveSheet.Paste
.SaveAs "MyDirectory\" & sFileName, xlCSV
.Close
End With
Application.DisplayAlerts = True
End Sub
이것은 나에게 효과가 있습니다 :-)
이것이 당신이 시도하는 것입니까?
Option Explicit
Public Sub SaveWorksheetsAsCsv()
Dim WS As Worksheet
Dim SaveToDirectory As String, newName As String
SaveToDirectory = "H:\test\"
For Each WS In ThisWorkbook.Worksheets
newName = GetBookName(ThisWorkbook.Name) & "_" & WS.Name
WS.Copy
ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSV
ActiveWorkbook.Close Savechanges:=False
Next
End Sub
Function GetBookName(strwb As String) As String
GetBookName = Left(strwb, (InStrRev(strwb, ".", -1, vbTextCompare) - 1))
End Function
매크로를 기록하고 정확한 단계를 수행하여 매크로가 생성하는 VBA 코드를 확인하는 것이 가장 좋습니다.그런 다음 일반적으로 만들 비트(예: 파일 이름 및 기타)를 교체할 수 있습니다.
위의 코드는 하나의 사소한 결함으로 완벽하게 작동하며 결과 파일은 .csv 확장자로 저장되지 않습니다.2일전에 텐시
코드에 다음 사항을 추가했더니 파일이 csv로 저장되었습니다.코드를 만들어 주셔서 감사합니다.모든 것이 예상대로 작동했습니다.
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & "-" & WS.Name & ".csv", FileFormat:=xlCSV
언급URL : https://stackoverflow.com/questions/10551353/saving-excel-worksheet-to-csv-files-with-filenameworksheet-name-using-vb
'source' 카테고리의 다른 글
UI 레이블 내에서 텍스트를 맨 위에 수직 정렬 (0) | 2023.05.04 |
---|---|
로컬로 생성된 스크립트를 원격 서명 실행 정책에서 실행할 수 없는 이유는 무엇입니까? (0) | 2023.05.04 |
Postgres/SQL에서 두 정수의 최소값/max를 얻는 방법은 무엇입니까? (0) | 2023.05.04 |
MongoDB에서 개별 인덱스의 크기를 어떻게 구합니까? (0) | 2023.05.04 |
Just-in-Time(JiT) 대 AoT(Aud-of-Time) Angular 컴파일 (0) | 2023.04.29 |