Excel : VBA를 통해 CSV로 저장하고 수동으로 다른 파일을 생성합니다.
문제
다른 프로그램 (예 : R 등)에서 가져 오기 위해 여러 XLSM 파일을 CSV로 저장해야합니다. 글쎄, 다른 모든 프로그램에서 필요한 수입 루틴을 썼으며 케이스 1 :
와 매우 잘 작동합니다.사례 1 : XLSM을 CSV로 수동으로 저장 이 옵션을 사용하고 각 파일을 CSV로 수동으로 저장하고 모든 프롬프트에서 예를 클릭하면 Excel 내에서 다시 열 때 일반 Excel 파일과 매우 유사한 .csv 파일을 얻습니다. 표준 컬럼보기이며, 쉼표는 구분되지 않습니다. (어쩌면 그것은 그렇지도 모르지만 그런 식으로 보이지 않습니다.)
케이스 2 : VBA에서 CSV로 XLSM 저장 여기에서는 Excel에서 다시 열 때 완전히 다른 파일을 얻습니다. 이 것은 쉼표로 구분 된 모든 값이있는 "실제"CSV 파일처럼 보입니다.
내 질문은 다음과 같습니다. 1. 왜 차이가 있습니까? 2. 프로그래밍 방식으로 VBA에서 사례를 도달 할 수 있습니까? 또는 불가능한 것입니까?
가 불가능한 경우 "정상적인"CSV 파일을 처리하기 위해 내 임포트 코드 루틴을 다시 작성해야하지만 여전히 많은 일이 아직도 많은 일이 왜 그 차이가 있는지 정말 궁금해합니다 .. < / P>
해결책
Q1 : 나는 적어도 내가 함께 끌어 당기는 예에서는 아무런 차이가 있다고 생각하지 않는다. Q2 : 이 작업을 시도하십시오 :
아래 그림과 같이 C:\stack\folder1
에 XLSM 파일의 예제 xlsm 파일이 있습니다.
각 파일에는 단일 데이터 시트가 있습니다. 우리는 CSVS로 바뀔 것입니다 :
는 훨씬 더 복잡하다고 확신하고 있지만 CSV 출력을 테스트하는 것은 파일을 루프하고 각각의 Per xlCSV
로 저장할 것입니다.
Option Explicit
Sub TestCSVOutput()
Dim DataBook As Workbook
Dim DataSheet As Worksheet
Dim FilePaths(3) As String
Dim FileIdx As Long
'set up file paths for test
FilePaths(1) = "C:\stack\folder1\test_file_01.xlsm"
FilePaths(2) = "C:\stack\folder1\test_file_02.xlsm"
FilePaths(3) = "C:\stack\folder1\test_file_03.xlsm"
'loop through array and save each file as a CSV
Application.DisplayAlerts = False
For FileIdx = 1 To UBound(FilePaths)
Set DataBook = Workbooks.Open(FilePaths(FileIdx))
Set DataSheet = DataBook.ActiveSheet
DataBook.SaveAs FileFormat:=xlCSV '<~~ the save step
DataBook.Close
Next FileIdx
Application.DisplayAlerts = True
End Sub
.
스크립트가 완료되면 세 가지 CSV 파일로 끝납니다.
텍스트 편집기에서 열 때 각 파일은 쉼표로 구분됩니다.