Excel : VBA를 통해 CSV로 저장하고 수동으로 다른 파일을 생성합니다.

StackOverflow https://stackoverflow.com//questions/23058398

  •  26-12-2019
  •  | 
  •  

문제

다른 프로그램 (예 : 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 파일이 있습니다.

start2

각 파일에는 단일 데이터 시트가 있습니다. 우리는 CSVS로 바뀔 것입니다 :

start

는 훨씬 더 복잡하다고 확신하고 있지만 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 파일로 끝납니다.

end2

텍스트 편집기에서 열 때 각 파일은 쉼표로 구분됩니다.

여기에 이미지 설명을 입력하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top