본문 바로가기
VBA

[VBA] 오픈채팅방 내용을 해당날짜의 폴더에 저장하기

by 일등미노왕국 2022. 1. 10.

별거 아닌거 같아서 시작했던 작업이 3일을 소요하게 되었다. 

폴더를 생성하고 날짜에 맞게 파일들을 이동하는건 어렵지않게 성공했으나...저장된 텍스트 파일안에 각 문장들 앞뒤에 쌍따옴표가 제거 되지 않은 현상이 나타났다..

https://hingle.tistory.com/39?category=928217 

 

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

엑셀 매크로로 만들어진 내용을 다른 프로그램에서 사용하기 위해 텍스트 파일로 변환할 경우가 있었다. 이 과정을 하면서 좀 더 쉽게 코딩할 방법이 없을까 생각하고 찾아보니 기존방식은 Objec

hingle.tistory.com

fileformat을 xlText와 xlTextPrinter로 인한 해결책도 본 코드를 만드는데 해당되지 않았고, 워드에 붙혀넣기해서 다시 값을 가져오는 방법도 해당되지 않았다.. 

 

엑사남님이 주신 방법으로 드디어 3일의 쌩고생이 마무리 되었다.

역시는 역시다.... 너무 이쁘지 아니한가.....

 

코드의 진행순서는 이렇다.

오픈챗팅의 대화를 다운로드 받아보면 알겠지만

1. 오픈챗 파일 처음에는 오픈챗에 대한 설명이 있다.. 이부분은 필요없는 부분이 아니기에

Boolean으로 조건을 달았다...즉...처음에는 False이기에 정규식 패턴이 일치하기 전까지는 임시배열에 담지 않는다.

2. 정규식 패턴에 일치하면(배열의 내용이 년 월 일 이 있으면) 그때부터 배열에 담기 위해 Bln을 조건식으로 넣는다.

3. 정규식으로 하다보면 2020.07.09일부터 대화내용을 담기 시작하면 2020.07.10일까지 날짜가 잡히기에 출력을 할때는 배열의 행번호에서 -2을 해야 깔끔하게 해당 내용들만 잡히게 된다...단, 텍스트의 마지막에는 더이상 담을 수 없기 때문에 대화 내용의 행번호를 그냥 출력하여야 한다.

4. 어쩌면 가장 중요한 구문일 수 있다. 엑사남님이 제안을 해주신 Replace구문으로 유령문자를 제거하면서 의도에 맞게 수정 후 임시배열에 담아서 출력을 하면된다.

5. 구문의 중간을 보면 exit sub이 있을것이다. 이 코드는 종료가 하위 맨 아래에서 종료되는 코드가 아니라 코드를 진행하다 파일 저장까지 마치면 바로 종료하는 구문이다. 그렇지 않으면 바로 아래 구문인 set mat 구문이 진행되기에 에러가 바로 발생한다....

최근3개월 대화한 멤버 찾기(22.01.08).xlsm
0.09MB

댓글