본문 바로가기

프로그래밍(Programing)/엑셀매크로_vba(Excel-Macro)

엑셀 → 텍스트파일 [FileFormat]종류 0

엑셀 매크로로 만들어진 내용을 다른 프로그램에서 사용하기 위해 텍스트 파일로 변환할 경우가 있었다.

 

이 과정을 하면서 좀 더 쉽게 코딩할 방법이 없을까 생각하고 찾아보니

 

기존방식은 Object상위 클래스에서 기능을(Createtextfile) 사용해 한줄 한줄 넣었으면

 

엑셀 함수(ActiveWorkbook)를 사용해 코딩수를 크게 줄일 수 있었다. (4줄 끝!)

 

즉   내용물이 있는 시트를 새로운 텍스트 파일형식으로 변환 해준다고 본다.  

 

그런데, 이 방식을 쓸 때 문제가 발생했고 그 방법을 해결하려면 FileFormat를 바꿔줘야 한다는걸 알았다.

 

Object과 ActiveWorkbook 방식이 서로 접근하는 방법이 다르지만, 파일 형식을(.txt , .log등) 변환해주는것은 같다.

 

여기서는 ActiveWorkbook 방식으로 저장하는 방법을 알아보자.

 

간단하다.

 

1. ActiveWorkbook기능으로 시트를 선택한다.

2. 시트를 복사한다.

3. 복사될 지점을 지정하고 저장한다.

4. ActiveWorkbook기능을 끊다.

 

이게 끝이다.

ActiveWorkbook.Sheets(x).Select  (x : 시트 넘버)
ActiveSheet.Copy

ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "파일제목.형식", FileFormat:=xlText
ActiveWorkbook.Close

 

파란 줄이 중요한데 Path 를 주면 현재 폴더명에 파일을 저장하는 거고 다른곳에 저장하려면 파일 만들 경로를 직접 

입력해야 한다.

 

FileFormat 여기서 내가 하고 싶은 말이 나온다. 

FileFormat 의 종류가 xlText , xlTextPrinter등이 있는데 

 

ActiveWorkbook를  사용하면서  시트안에  반점' , ' 있으면   

xlTextPrinter 형식으로 실행해야  문제 없이 나온다.

 

xlText형식으로는 ""큰 따옴표가 나옴

 

xlTextPrinter로 하면 정상적으로 나옴

 

 

엑셀 매크로를 만들면서 필요한 기능이 있으면, 검색해서 빠르게 찾을 수 있는 이유가 

범용적으로 쓰이고 있는 덕분이라고 생각한다. 

저도 이런식으로라도 알릴 수 있는게 도움이 됬음 합니다.

 

 

 

728x90