VBA를 사용하여 세미콜론으로 구분된 CSV 파일을 저장하는 방법은 무엇입니까?
데이터를 스프레드시트에 복사하고 VBA를 사용하여 포맷한 다음 CSV 파일에 저장합니다.
다음 코드를 사용합니다.
ws.SaveAs Filename:=filestr, Fileformat:=xlCSV
ws는 제가 저장한 워크시트입니다.
그러면 쉼표로 구분된 CSV 파일이 제공됩니다.
저는 그 시트를 세미콜론 구분 파일로 저장하고 싶습니다.
다음을 찾았습니다.
- 시작>설정>으로 이동국가 및 언어 옵션
- 사용자 지정 단추 클릭
- 목록 구분 기호 옆에 세미콜론 형식(;)
위의 절차에 따라 코드를 다음으로 변경했습니다.
ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True
쉼표로 구분된 CSV 파일을 출력으로 받습니다.
저는 Excel 2003을 사용하고 있으며 운영체제는 Windows XP입니다.
같은 문제가 있어서 방금 확인했습니다.이 경우 파일 이름에 기능이 없습니다.
이것이 저에게 도움이 되었습니다.
With ActiveWorkbook
.SaveAs Filename:="My File.csv", FileFormat:=xlCSV, Local:=True
.Close False
End With
국가별 설정에서 -> ; <- 목록 구분 기호입니다.합니다. -> 를 사용하면 사항을 저장할 수 .False
.
이 모든 변수를 선언할 필요는 없습니다. 다음과 같이 SaveAs 메서드 끝에 local:=true를 추가하기만 하면 됩니다.
ActiveWorkbook.SaveAs Filename:="C:/Path/TryMe.csv", FileFormat:=xlCSV, Local:=True
저는 같은 문제에 부딪혔고 VBA 코드와 커널 호출을 사용하여 국가별 설정에서 "회선 구분자"를 변경하는 것을 고려한 후에 그것이 훨씬 더 고통스러울 것이라고 판단했기 때문에 대신 스크립팅을 사용하는 몇 가지 예를 찾았습니다.파일 시스템 개체입니다.
다음 코드는 기존 csv 파일을 사용하고 모든 쉼표를 타일 "~" 문자로 바꿉니다.
Private Sub commaReplace()
Dim objFSO
Dim filePath
Dim migratorFileName
Dim strFullPath1
Dim strFullPath2
Const ForReading = 1
'define a TextStream object
Dim objTS
Dim strContents As String
'note, my code actually uses the below commented out filepath
'as the location of the workbook can be arbitrary, e.g.
'Worksheets("FilePath").[A2:A2].Value is determined when workbook
'is opened
'filePath = Worksheets("FilePath").[A2:A2].Value
filePath = "C:\Temp\"
'our original file that we've exported as csv file in another section of code
migratorFileName = "MigratorInput.csv"
strFullPath1 = filePath + migratorFileName
'the path and file name we want to save to, tilde separated vs. comma
migratorFileName = "MigratorInput.tilde.csv"
strFullPath2 = filePath + migratorFileName
'read everything from the csv file, replacing comma with tilde
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(strFullPath1, ForReading)
strContents = objTS.ReadAll
strContents = Replace(strContents, ",", "~")
objTS.Close
'write everything out to another file, note, this could just overwrite
'the original file if you pass the optional overwrite flag
Set objTS = objFSO.CreateTextFile(strFullPath2)
objTS.Write strContents
objTS.Close
End Sub
그런 다음 csv 파일을 만드는 하위 루틴에서 commaReplace 하위 루틴을 호출하면 됩니다.
누군가에게 도움이 되길 바랍니다!
구성을 완료한 후 vbs 스크립트를 사용하려면:
.SaveAs Filename, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
여기서 인수는 다음과 같습니다.
Object Filename,
Object FileFormat,
Object Password,
Object WriteResPassword,
Object ReadOnlyRecommended,
Object CreateBackup,
XlSaveAsAccessMode AccessMode,
Object ConflictResolution,
Object AddToMru,
Object TextCodepage,
Object TextVisualLayout,
Object Local
소스 링크: https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook.saveas.aspx
"다른 이름으로 저장" 기능의 마지막 "1"은 Local=과 동일합니다.진실의
또한 OS 국가별 설정에서 세미콜론을 목록 구분 기호로 정의해야 합니다(위의 답변 참조).
xlCSV 대신 xlSCVMSDOS 사용
ActiveWorkbook.SaveAs Filename:="my File.csv", FileFormat:= xlCSVMSDOS, Local:=True
그것은 나에게 효과가 있었다.
다음 코드를 사용합니다.활성 워크북입니다."내 파일.csv", xlCSV, 로컬로 저장:=참
(사용 안 함:파일 이름: = )
언급URL : https://stackoverflow.com/questions/13496686/how-to-save-semi-colon-delimited-csv-file-using-vba
'code' 카테고리의 다른 글
코드에서 장치의 IP 주소를 가져오는 방법은 무엇입니까? (0) | 2023.06.27 |
---|---|
외래 키는 항상 다른 테이블의 고유 키를 참조합니까? (0) | 2023.06.27 |
접두사/접미사를 사용하여 이름을 변경하는 방법은 무엇입니까? (0) | 2023.06.27 |
Express에서 "다음" 매개 변수는 무엇에 사용됩니까? (0) | 2023.06.22 |
중첩된 시도/제외 블록에서 예외를 다시 발생시키는 방법은 무엇입니까? (0) | 2023.06.22 |