Programming/MS Excel VBA 6

VBA Code: 엑셀 시트를 이름 순으로 정렬(오름차순/내림차순)

여러분은 업무 내용중 핵심내용이나 기억해야할 내용을 기록할 때 어떤 도구를 사용하시나요? 동기화를 지원하는 Web 기반 여러가지 좋은 도구들이 참 많이 있지만 사내 보안상 이곳도 저곳도 업로드 Traffice이 막힌 경우는 결국 동기화는 포기하고 원노트나 엑셀에 기록하는 수밖에 없죠... 저도 사내 정책상 어쩔수 없이 (동기화도 안되는)원노트에 대부분의 업무 주요 내용을 통합하는데, 원노트는 아직도 검색 기능이 부실한 관계로 정말 중요한 자료(빨리 검색해야 하는)와 숫자를 다루는 데이터는 결국 엑셀로 모일수 밖에 없는 것이 현실인것 같습니다. 엑셀에 이런저런 주요 요약 내용을 추가하다보니 시트는 점점 늘어나고 어느날 부턴가 세로 스크롤 만큼 가로 스크롤도 많이 하게 되더군요^^; 시트가 많아지면 시트간 ..

VBA Code: 날짜를 인수로 받아 요일을 반환하는 함수

엑셀에 weekday라는 내장 함수가 있는데요, 이 함수는 인수로 주어진 날짜가 일요일이면 1, 화요일이면 3, 이런식으로 번호를 반환합니다. 이를 응용해서 ChooseWeekday란 함수를 간단히 만들어 보았습니다. Function ChooseWeekday(ByVal dateValue As Date) As String Dim weekdayIndex As Integer weekdayIndex = Weekday(dateValue) Select Case weekdayIndex Case 1 ChooseWeekday = "일" Case 2 ChooseWeekday = "월" Case 3 ChooseWeekday = "화" Case 4 ChooseWeekday = "수" Case 5 ChooseWeekday = ..

VBA Code: 엑셀 파일 연결 끊기가 안될 때 문제 해결

지난번 포스팅에서 엑셀 파일을 새롭게 생성하지 않고 여러사람이 작업을 하고, 또 작업본을 다른 이름으로 저장해서 사용할 때 시트복사시 이름충돌에 대한 문제를 해소할 수 있는 VBA Code 를 소개해 드렸는데요, 오늘은 엑셀파일 링크가 깨져서 데이터 연결을 끊어도 끊어지지 않는 문제를 해결할 VBA Code를 소개해 드립니다. 경험상 해당 문제는 회사 파일 서버에 위치한 엑셀 파일을 링크하거나, 웹 드라이브에 있는 엑셀 파일에 링크가 걸려있는 파일에서 문제(ex. 서버의 특정 디렉토리에 파일이 저장되어 있다가 해당 파일이 다른 곳으로 옮겨진 경우)가 되는데요, 아래에 소개해 드릴 코드로 간단히 해결할 수 있습니다. 먼저 파일 연결에 문제가 있는 파일을 열면 아래와 같은 경고를 만나게 됩니다. '콘텐츠 사..

VBA Code: 엑셀 시트 복사시 이름 충돌 해결을 위한

엑셀 파일을 새롭게 생성하지 않고 여러사람이 작업을 하고, 또 작업본을 다른 이름으로 저장해서 사용하다 보면 시트복사시 아래와 같은 알림 메세지가 떠서 복사할 때마다 번거로운 상황이 생깁니다. 이름 관리자에 들어가 보면 보통은 아래와 같이 참조가 깨진 이름 목록들이 나와있고 전체 선택 후 삭제하면 시트 복사시 에러 메시지가 없어집니다. 문제는, 이름을 모두 삭제하고 아래와 같이 참조가 깨진 이름이 더이상 목록에 없는데도 에러 메시지가 발생하는 경우가 있다는 것입니다. 이 때는 VBA창을 열고 아래 코드를 실행해 주면 이름 관리자에서 보이지 않는 이름들이 삭제되어 문제가 해결 됩니다. Sub ShowNames() Dim areaName As Name For Each areaName In ThisWorkbo..

VBA Code: 엑셀 파일 저장시 파일 이름에 날짜 시간을 추가하여 사본을 생성

중요한 데이터를 엑셀로 작업 도중 저장을 눌러 되돌리기가 안되는 상황이 발생할 때가 있습니다. 이때 저장 버튼을 누를 때마다 파일 저장경로에 날짜와 시간을 추가하여 사본을 생성하는 코드를 공유 합니다. 먼저 VBA 창을 열고 모듈을 하나 추가하여 아래 코드를 입력합니다. Sub AutoSaveCopy() Dim filePath As String Dim fileName As String Dim fileExtension As String Dim newFileName As String '현재 파일의 경로 및 파일명, 확장자 추출 filePath = ThisWorkbook.Path & "\" fileName = ThisWorkbook.Name fileExtension = "." & Split(fileName, ..

VBA 코딩 환경 설정하기(배경화면 검은색으로 눈을 편하게 하기)

VBA 코딩을 오래 하다 보면 기본 배경화면이 흰색이라서 눈에 피로가 많이 쌓이게 됩니다. 코딩시 눈을 편안하게 하기 위해 개인적으로 설정해서 사용하는 레지스트리를 공유합니다. Office 2016, VBA 7.1 기준입니다. 레지스트리 변경전 기존 레지스트리는 백업해 두는게 좋겠죠? 첨부 레지스트리를 적용 후, 옵션 메뉴에 들어간 다음 사용자가 원하는 색만 골라서 변경할 수 있습니다. 저는 최대한 눈의 피로를 줄이기 위해 그레이 계열로 색상을 설정했지만, 일부 텍스트 색을 변경하면 아래와 같이 키워드를 더 도드라지게 보이게 할 수도 있습니다.