현재 시트 Text File로 내보내기
현재(활성화된) 엑셀 시트를 구분자(deLimiter)로 구분하여 텍스트 파일로 내보내는 VBA code 입니다.
Sub ActiveSheet_TextExport()
' Export Each Sheet As Text File
Dim rng As Range
Dim iRow As Long, iCol As Integer
Dim sTxt As String, sPath As String
Dim ff As Integer
ff = FreeFile
' 파일을 다루려면 파일 핸들을 얻어야 한다.
' 파일핸들은 파일번호라고도 하는데, 운영체제에서 프로그램이 파일을 구분할 수 있도록 만든
' 고유의 식별번호로 중복되지 않는 정수형 숫자이다.
sPath = ThisWorkbook.Path & "\"
' 파일의 경로
' Workbook 개체 : 엑셀 문서 도는 엑셀 파일을 지칭한다.
' Worksheet 개체 : 엑셀 시트를 말한다.
' Range 개체 : 엑셀의 셀 또는 셀 집합(범위)를 말한다.
' FilePath = Application.GetSaveAsFilename(filefilter:="Text Files (*.txt),*.txt", Title:="저장")
' GetSaveAsFilename 메서드를 사용하여 사용자가 원하는 경로에 이름을 지정하여 저장할 수 있음.
' 내보내기 파일명을 하나만 지정하는 경우에는 이렇게 지정하면 됨
Open sPath & ActiveSheet.Name & ".txt" For Output As #ff
' 파일번호를 얻은 다음에는 파일을 열어야 한다. 파일을 열려면 open문을 사용한다.
' Open pathname For mode As [#]filenumber
' pathname은 파일의 전체 경로 및 이름을 지정하는 문자열이다.
' mode는 Input(읽기용도), Output(쓰기용도), Append(추기기록용), Binary(이진파일용)
' filenumber는 1에서 511 사이에 있는 유효한 파일 번호로 FreeFile 함수로 사용 가능한 파일 번호를 얻는다.
' Save 대화상자를 설정하여 열 경우에는 ....
' If Directory = False Then Exit Sub '(← Save 대화상자에서 취소를 누를 경우
' Open FilePath For Output As #ff '← 파일을 연다. 파일의 번호는 #ff
Set rng = ActiveSheet.UsedRange
deLimiter = ";" '// 구분자 수정해서 사용하세요
For iRow = 1 To rng.Rows.Count '// 1행부터 마지막 행까지
For iCol = 1 To rng.Columns.Count '// 1열부터 오른쪽 최대 열까지
sTxt = sTxt & ActiveSheet.Cells(iRow, iCol).Value & deLimiter
Next iCol
Print #ff, Left(sTxt, Len(sTxt) - 1)
' 파일에 데이터를 쓰기 위해서는 Print # 문을 사용한다.
' Print #filenumber, output
' Line Input # 문으로 읽어 온 데이터는 일반적으로 Print #을 사용하여 파일을 저장
' Write #filenumber, outputlist
' Print#과 달리 출력하는 데이터의 형식에 맞추어 파일에 기록한다.
sTxt = vbNullString
Next iRow
Close #ff '// 작업을 마치고 파일을 닫는다
End Sub
필요하신 분은 파일 받아서 활용하세요.
Sub CSVFile_Export() |
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
색상 개수와 색깔 표시하기 (동일 시트) (0) | 2014.01.26 |
---|---|
[VBA] 이름별로 구매금액 합계 구하기 (동일 시트) (9) | 2014.01.25 |
색상별로 시간합계 구하기 (0) | 2014.01.20 |
[VBA] Vlookup를 이용한 현재 재고 파악 (0) | 2014.01.20 |
[VBA] 다른 파일과 중복검사하는 Vlookup VBA (0) | 2014.01.20 |