-추후 Addin으로 기능 업해서..배포예정
-혹시 제가 만든 기능들 쓰시는 분들은 고칠 부분이나 추가되야 할 부분 이야기좀 해주세요..
오래전 막 VBA를 시작하고...
엑셀 폴더에 있는 파일을 뿌려주는 vba를 봤었다...얼마나 신기했던지...
이 기능이 없었음 아마 몇시간을..파일이름들을 보며 직접 치고 있었을 것이다..
이렇게 간단한 기능에..한가지 추가해서 이왕 이름까지 바꿔보자...
(지금 파일이름을 정리할 일이 있어서..)
그냥 이 기능만으로 만족하시고 쓰실수 있겠다 싶으신 분은 엑셀실행파일을 다운 하시고..
VSTO공부중이신 분은 소스파일을 다운 받으셔서 보면 됩니다.
엑셀실행파일 : 압축을 풀고 SetUp파일 실행 후 안에 있는 엑셀파일 실행시키면 됩니다.
소스파일 :
실행화면 1]폴더 가져오고 엑셀의 간단한 기능을 이용해서 변경파일 이름을 지정해준다.
실행화면 2]엑셀 기능을 사용해서 채우기..
실행화면 3] 파일 변환 누른후 화면
엑셀로 파일이름 관리를 할 경우 이점. 1. 간단한 함수 및 기능으로 원하는 이름으로 완변하게 변경을 할 수 있다.. 2. 엑셀 파일 이름을 정리할 때 한번에 엑셀에 정리해주니 활용도가 높다.. |
이제 간단하게 파일관리기를 만들어 보자..
1. 아래와 같이 시트1에 간단한 모양을 만든다.
2. 작업을 할 요구사항을 몇개 적어보겠다..
- 간단히 VSTO하는 방법을 알려주는 거라..거창하게 이것저것 기능 안넣겠음)
- 이 기능만으로도 원하는 작업은 다 할 수 있을 것이며.. 추후에 Addin에 이 기능을 포함시킬것이다..
가. 원본 파일명만 나오게 하기.(폴더 경로까지 나오면 너무 지저분하고 이름 바꾸기도 힘들다.) 나. A5셀부터 파일명과 확장자명을 뿌려준다. 다. B5셀부터 변경할 파일이름을 사용자가 적어서 변경할 수 있게 해준다. 라. C5셀부터 변경여부를 표시해준다. |
3. 폴더의 파일을 가져오기 해보자..
private void btnGetFolder_Click(object sender, EventArgs e) foreach (string c in Directory.GetFiles(fld.SelectedPath)) |
- if (Convert.ToInt32(fld.ShowDialog()) == 1) (선택한 폴더가 있을 경우에는)
- int i = 5; (A5셀부터 입력 할 것이므로)
- this.Range["b3", missing].Value2 = fld.SelectedPath; (B3셀에 폴더경로를 넣어준다)
- foreach (string c in Directory.GetFiles(fld.SelectedPath)) (폴더경로의 파일이름들을 하나씩 c 에 넣는다)
- this.Range["a" + i, missing].Value2 = c.Substring(c.LastIndexOf('\\') + 1); (아래 참고 확인)
- 그리고 다음 row로 이동을 하기 위해서 +1을 해준다.
참고
c의 값이 c:\test\1.txt라고 가정해보자.. 우선 1.txt를 빼기 위해서는 뒤에서부터 \의 위치를 잡아줘야 한다.. 그러기 위해서 우선 LastIndexOf('\\')로 위치를 잡아주고 \는 필요 없기 때문에 +1을 해준다. 1. LastIndexOf('\\')만 해줬을 경우 값 : 7(0부터 시작하므로) 2. SubString(7)로 했을 경우 아래와 같이 \1.txt가 나온다. (0~6까지 지우고 7번째를 뜻함.) 3. +1을 해줬을 경우 : \도 지워지기 때문에 1~3번까지를 더해주면 c.Substring(c.LastIndexOf('\\') + 1)와 같이 된다. 뭐 엑셀에서는 중첩함수들은 기본이니....중첩함수로 생각하시면 될듯.. |
4. 이젠 이름 바꾸기 코딩을 해보자.
int i = 5; string filepath = this.Range["A1", missing].Text.ToString(); while (this.Range["A" + i, missing].Value2 != null) { if (filepath != null) { FileInfo fName = new FileInfo(filepath + "\\" + this.Range["A" + i, missing].Text.ToString()); if (fName.Exists && this.Range["B" + i, missing].Text.ToString().Length > 0) { fName.MoveTo(filepath + "\\" + this.Range["B" + i, missing].Text.ToString()); this.Range["C" + i, missing].Value2 = "성공"; } else { this.Range["C" + i, missing].Value2 = "실패"; } } i++; } |
- 이번에는 While 조건문을 바꿧다.. A셀에 값이 없을때까지 B셀에 값을 넣어준다.
- if (filepath != null) 폴더경로가 있어야지 실행이 되게 한다
- FileInfo fName = new FileInfo(filepath + "\\" + this.Range["A" + i, missing].Text.ToString());
(파일 이동을 위해..FileInfo클래스를 사용해서 다시 폴더경로와 파일이름을 더해준다.)
- if (fName.Exists && this.Range["B" + i, missing].Text.ToString().Length > 0)
(fname.Exists로 파일이 있는지 확인 하고 바꿀 이름인 B셀의 텍스트 길이가 0보다 크면 조건문을 실행하게 한다)
- 조건이 참이면 MoveTo를 이용해서 이름을 바꿔주고 C셀에는 "성공"이라고 넣어준다.
- false이면 실패라고 넣어준다.
'엑셀 유틸리티 다운 및 설명' 카테고리의 다른 글
ExcelUtil1.0]엑셀 사진관리(사진대지) + 엑셀 자동완성 + 엑셀 특수문자표 배포 (20) | 2011.05.23 |
---|---|
엑셀 AddIn)엑셀 사진대지 + 엑셀 자동완성 + 엑셀 사진 정렬 + 엑셀 특수문자표 기능을 소개합니다. (2) | 2011.05.11 |
[엑셀자동완성 1.8버전]엑셀 자동완성 + 엑셀 특수문자표(엑셀문자) + 엑셀 사진대지 예정 (0) | 2011.02.23 |
엑셀 자동완성 Ver1.5 사용동영상. (1) | 2011.01.18 |
엑셀 자동완성 Ver1.5 설명서 (0) | 2011.01.18 |