이 모듈은 엑셀에서 특정 셀 범위(테이블)를 HTML 형식으로 변환하여 웹 브라우저나 파일 등에서 볼 수 있도록 하는 역할을 수행합니다. 변환 과정에서는 셀의 서식, 폰트 크기, 정렬, 병합 및 테두리 스타일 등을 최대한 보존하여 HTML 코드로 재구성합니다. 결과적으로 엑셀 데이터를 HTML 웹 페이지나 문서로 쉽게 공유할 수 있으며, 시각적 정보의 손실을 최소화하는 것을 목표로 합니다.
많은 사용자가 엑셀 데이터를 웹에 올리거나 이메일, 블로그 등에 게시할 때 엑셀 내 서식이 깨지지 않고 그대로 전달되길 원합니다. 그러나 기본적으로 엑셀 데이터를 복사한 후 붙여넣으면 서식 정보가 손실되는 경우가 많습니다. 이 모듈은 다음과 같은 이유로 매우 유용합니다:
-
서식 보존: 셀의 폰트 크기, 정렬, 병합, 테두리, 그리고 배경색과 글자색 등 다양한 서식 정보를 HTML 코드로 반영하여, 엑셀 테이블의 모양을 거의 그대로 웹에서도 재현할 수 있습니다.
-
자동화: 사용자가 수동으로 HTML 코드를 작성하거나 복사-붙여넣기 작업을 반복하지 않아도 되므로, 반복 작업의 부담을 줄여줍니다.
-
데이터 공유 용이성: 변환된 HTML 파일을 웹 브라우저로 바로 열 수 있어, 데이터를 빠르게 검토하거나 다른 사용자와 공유할 때 효과적입니다.
-
확장 가능성: 코드 내에 스타일 및 테두리 관련 클래스, 메타데이터, 컬럼 폭 설정 등의 기능이 포함되어 있어, 필요에 따라 CSS 스타일이나 HTML 구성요소를 추가 및 수정할 수 있습니다.
-
셀 범위 HTML 변환
-
메인 서브루틴인
SelectionToHtml
에서는 인자로 전달된 셀 범위를 HTML 코드로 변환하는RangeToHTML
함수를 호출합니다. -
변환된 HTML 문자열은 ADODB.Stream 객체를 사용하여 UTF-8 인코딩으로 파일에 저장됩니다.
-
저장된 HTML 파일을 기본 웹 브라우저로 자동 실행할 수 있도록 명령을 전송합니다.
-
-
HTML 코드 생성 과정
-
HTML 문서의 메타 태그를 포함하여 문자 인코딩(UTF-8)을 명시합니다.
-
내부에 포함되는 스타일 태그에서는 테이블의 폰트 크기, 테두리, 정렬, 링크 스타일 등 기본 디자인 요소를 정의합니다.
-
선택된 셀 범위에 대해 각 행과 열을 순회하면서 셀의 내용, 빈 셀의 처리, 줄 바꿈(Chr$(10)의 HTML
<br />
변환), 그리고 하이퍼링크가 있는 경우 링크 태그 추가 처리를 진행합니다. -
셀의 폰트 서식(굵게, 기울임)과 폰트 크기 변경 내용도 HTML 태그를 사용해 표현합니다.
-
셀의 정렬 속성은 별도의 함수(
AlignmentAttr
)를 통해 HTML 태그에 align 속성으로 반영됩니다. -
병합된 셀에 대해서는 COLSPAN과 ROWSPAN 속성 값을 자동 할당하여, HTML 테이블에서도 병합된 셀이 동일하게 표현되도록 합니다.
-
셀의 테두리 정보는 셀에 적용된 테두리 스타일을 감지하여, 미리 정의된 CSS 클래스 이름으로 변환합니다. 예를 들어, 모든 테두리가 설정된 경우 “b-all” 클래스를 적용합니다.
-
셀의 배경색과 글자색은 Excel 내 색상 값을 RGB 코드로 변환(예: HexToRgb 함수)하여 스타일 속성에 추가합니다.
-
최종적으로 각 셀(즉,
<td>
태그)과 행(<tr>
태그)을 조합하여 하나의 HTML 테이블 구조를 완성하고, 전체 HTML 코드(헤더, 스타일, 테이블)를 반환합니다.
-
-
보조 함수들
-
Tag
함수: 전달된 문자열 값을 지정된 HTML 태그로 감싸 반환합니다. 필요에 따라 속성이나 들여쓰기도 지원합니다. -
AlignmentAttr
함수: 셀의 가로 정렬 값을 확인하여 HTML 태그의 align 속성에 적절한 값을 할당합니다. -
HexToRgb
함수: 엑셀의 색상 값을 16진수 문자열로 변환하여 CSS에서 사용할 수 있도록 합니다. -
columngroup
함수: 선택된 범위의 각 열의 폭을 백분율 형태로 계산하여, HTML의<colgroup>
태그에 반영합니다. -
UTF8
함수: 텍스트 값을 UTF-8 형식으로 인코딩하여, 웹에서 깨짐 없이 문자가 출력되도록 합니다.
-
-
엑셀에서 HTML로 변환하고자 하는 셀 범위를 선택합니다.
-
해당 매크로(예를 들어 리본 메뉴나 단축키에 연결된 버튼)를 실행합니다.
-
선택된 영역의 HTML 코드가 “c:\temp\temp_rangetowebhtml.html” 파일로 저장되고, 기본 웹 브라우저에서 자동으로 열립니다.
-
웹 브라우저에서 결과물을 확인할 수 있으며, 필요에 따라 HTML 파일을 추가 편집하거나 웹 페이지에 삽입할 수 있습니다.
이 VBA 모듈은 엑셀 내 테이블 데이터를 HTML 코드로 변환하여, 서식과 디자인 요소를 최대한 보존한 상태로 웹에서 표현하고자 하는 사용자에게 큰 도움을 줍니다. 자동화된 프로세스를 통해 시간과 노력을 절약할 수 있으며, 엑셀 데이터를 웹 기반 문서, 보고서, 블로그 포스트 등으로 쉽게 공유할 수 있는 유연한 솔루션을 제공합니다.
(변환전 엑셀 쉬트 선택영역)
폴더선택 | C:\Users\LHL\OneDrive\Documents\카카오톡 받은 파일 | |
더블클릭 | 변경 전 문자 | 변경 후 문자 |
파일이름 바꾸기 | KakaoTalk | re |
글자 추가하기 | 앞 | _ |
위치 지우기(숫자) | 앞 | 2 |
자동 증감 숫자 | 앞 | |
괄호속 지우기 | 【굵은괄호】 | |
제외후 남기기 | 숫자만 | |
정렬 하기 | 변경전파일확장자↑ |
Html 변환후 이미지
(엑셀의 주요 요소인 글자색, 바탕색, 셀병합, 테두리선을 완벽하게 구현하였습니다.)