엑셀에 정리한 URL목록을 일괄로 웹브라우저 북마크로 추가할 수 있게 도와주는 VBA매크로입니다.

 

일단 아래와 같이 엑셀에 URL을 정리했습니다.

 

 

이 링크들을 일괄로 웹브라우저 북마크에 폴더를 하나 만들어 추가하고 싶습니다.

 

물론 모든 링크를 클릭해서 웹브라우저 탭에 띄운 다음

열린 탭들을 북마크에 추가할 수 있습니다.

 

하지만 모든 링크를 여는 것은 번거로운 작업입니다.

그래서 엑셀VBA로 이 과정을 자동으로 처리합니다.

 

핵심 원리는 웹브라우저 북마크를 내보내면 아래와 같은 HTML양식인데

이 양식에 맞게 VBA로 북마크 HTML을 만들면 되겠습니다.

 

특히 초반 헤더 부분과


<DL> Description List 태그와

<DT> Description Term 태그를 이용합니다.

원래는 DT 다음에  <DD> Description Description 이 따라오는데 생략합니다.

 

<DL>

    <DT><A HREF="https://your-link1.com">링크1</A>

    <DT><A HREF="https://your-link2.com">링크2</A>...

</DL>

이런 식입니다.

 

엑셀 URL 목록에 대해 위와 같은 양식으로 HTML 텍스트 파일을 생성하게 하면 됩니다.

 

Gemini에게 코드를 만들도록 시키고 약간만 수정했습니다.

 

먼저 html파일을 UTF-8 인코딩으로 만드는 경우입니다.

일본어, 중국어, 프랑스어 등 다른 나라 언어글자가 포함되는 경우

ADODB.Stream을 이용해 UTF-8 인코딩방식으로 텍스트파일을 만들어야 모든 언어가 제대로 보입니다.

Sub ExportToChromeBookmarks()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim siteName As String
    Dim siteURL As String
    Dim filePath As Variant
    Dim stream As Object
    Dim sBookPath As String
    
    ' 현재 활성화된 시트를 기준으로 작업
    Set ws = ActiveSheet
    sBookPath = ws.Name
    
    ' A열의 마지막 데이터 행 찾기
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 데이터가 없으면 종료
    If lastRow < 1 Then
        MsgBox "출력할 데이터가 없습니다. A열과 B열에 데이터를 입력해주세요.", vbExclamation
        Exit Sub
    End If
    
    ' 북마크 제목
    sBookPath = InputBox("북마크 제목(Title)을 입력하세요." & vbNewLine & _
        "(크롬에서는 북마크를 불러오면 해당이름의 폴더 아래 북마크들이 생성됩니다.)", "Bookmark Title 입력", sBookPath)
    If Len(sBookPath) = 0 Then Exit Sub
    
    ' 저장할 파일 경로 및 이름 지정 대화상자 열기
    filePath = Application.GetSaveAsFilename(InitialFileName:=ws.Parent.Path & "\Chrome_Bookmarks.html", _
                                             FileFilter:="HTML Files (*.html), *.html", _
                                             Title:="북마크 파일 저장 위치 선택")
    
    ' 취소를 누른 경우 종료
    If filePath = False Then Exit Sub
    
    ' 한글 깨짐 방지를 위해 UTF-8 인코딩으로 파일 저장을 돕는 ADODB.Stream 객체 생성
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = 2 ' 텍스트 타입
    stream.Charset = "utf-8" ' UTF-8 인코딩
    stream.Open
    
    ' 크롬 북마크 표준 HTML 헤더 작성
    stream.WriteText "<!DOCTYPE NETSCAPE-Bookmark-file-1>" & vbCrLf
    stream.WriteText "" & vbCrLf
    stream.WriteText "<META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html; charset=UTF-8"">" & vbCrLf
    stream.WriteText "<TITLE>Bookmarks</TITLE>" & vbCrLf
    stream.WriteText "<H1>Bookmarks</H1>" & vbCrLf
    stream.WriteText "<DL><p>" & vbCrLf
    stream.WriteText "<DT><H3>" & sBookPath & "</H3>" & vbCrLf         'Bookmark Folder Name
    stream.WriteText "<DL><p>" & vbCrLf
    
    ' 2행부터 마지막 행까지 순회하며 데이터 추출
    For i = 2 To lastRow
        siteName = ws.Cells(i, 1).Value ' A열: 사이트 이름
        siteURL = ws.Cells(i, 2).Value  ' B열: URL
        
        ' 이름과 URL이 모두 있는 경우에만 북마크 태그 추가
        If Trim(siteName) <> "" And Left(Trim(siteURL), 4) Like "http" Then
            ' <DT><A HREF="URL">사이트이름</A> 형식으로 추가
            stream.WriteText "    <DT><A HREF=""" & siteURL & """>" & siteName & "</A>" & vbCrLf
        End If
    Next i
    
    ' 꼬리말 작성
    stream.WriteText "</DL><p>" & vbCrLf
    stream.WriteText "</DL><p>" & vbCrLf
    
    ' 파일로 저장 (adSaveCreateOverWrite = 2 : 덮어쓰기 허용)
    stream.SaveToFile filePath, 2
    stream.Close
    
    MsgBox "크롬 북마크 파일이 성공적으로 생성되었습니다!" & vbCrLf & _
           "저장 경로: " & filePath, vbInformation
End Sub

 

 

한글, 영어만 사용하는 경우 아래와 같이 ANSI인코딩으로 HTML 텍스트파일을 만들어도 됩니다.

Sub ExportToChromeBookmarks_ANSI()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim siteName As String
    Dim siteURL As String
    Dim filePath As Variant
    Dim fileNum As Integer
    
    ' 현재 활성화된 시트를 기준으로 작업
    Set ws = ActiveSheet
    
    ' A열의 마지막 데이터 행 찾기
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 데이터가 없으면 종료
    If lastRow < 1 Then
        MsgBox "출력할 데이터가 없습니다. A열과 B열에 데이터를 입력해주세요.", vbExclamation
        Exit Sub
    End If
     
    ' 북마크 제목
    sBookPath = InputBox("북마크 제목(Title)을 입력하세요." & vbNewLine & _
        "(크롬에서는 북마크를 불러오면 해당이름의 폴더아래 북마크들이 생성됩니다.)", "Bookmark Title 입력", sBookPath)
    If Len(sBookPath) = 0 Then Exit Sub
    
    ' 저장할 파일 경로 및 이름 지정 대화상자 열기
    filePath = Application.GetSaveAsFilename(InitialFileName:=ws.Parent.Path & "\Chrome_Bookmarks.html", _
                                             FileFilter:="HTML Files (*.html), *.html", _
                                             Title:="북마크 파일 저장 위치 선택")
    
    ' 취소를 누른 경우 종료
    If filePath = False Then Exit Sub
    
    ' 사용 가능한 빈 파일 번호 가져오기
    fileNum = FreeFile
    
    ' 기본 텍스트 파일 쓰기 모드로 열기 (ANSI 인코딩)
    Open filePath For Output As #fileNum
    
    ' 크롬 북마크 표준 HTML 헤더 작성
    Print #fileNum, "<!DOCTYPE NETSCAPE-Bookmark-file-1>"
    Print #fileNum, ""
    ' 주의: 파일은 ANSI로 저장되지만 크롬 규격상 헤더에는 UTF-8로 명시해 둡니다.
    Print #fileNum, "<META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html; charset=ansi"">"
    Print #fileNum, "<TITLE>Bookmarks</TITLE>"
    Print #fileNum, "<H1>Bookmarks</H1>"
    Print #fileNum, "<DL><p>"
    Print #fileNum, "<DT><H3>" & ws.Name & "</H3>" & vbCrLf         'Bookmark Folder Name
    Print #fileNum, "<DL><p>" & vbCrLf
    
    ' 2행부터 마지막 행까지 순회하며 데이터 추출
    For i = 2 To lastRow
        siteName = ws.Cells(i, 1).Value ' A열: 사이트 이름
        siteURL = ws.Cells(i, 2).Value  ' B열: URL
        
        ' 이름과 URL이 모두 있는 경우에만 북마크 태그 추가
        If Trim(siteName) <> "" And Left(Trim(siteURL), 4) Like "http" Then
            ' <DT><A HREF="URL">사이트이름</A> 형식으로 기록
            Print #fileNum, "    <DT><A HREF=""" & siteURL & """>" & siteName & "</A>"
        End If
    Next i
    
    ' 꼬리말 작성
    Print #fileNum, "</DL><p>"
    Print #fileNum, "</DL><p>"
    
    ' 파일 닫기
    Close #fileNum
    
    MsgBox "크롬 북마크 파일이 성공적으로 생성되었습니다!" & vbCrLf & _
           "저장 경로: " & filePath, vbInformation
End Sub

 

 

엑셀에 URL을 정리하고

Alt+F8을 눌러 매크로창에서

둘 중의 하나의 매크로를 실행하면 아래처럼 북마크 HTML을 생성합니다.

 

 

대화상자가 뜨면 북마크 제목을 확인하고 수정합니다. 북마크 제목은 <h3> 태그로 문서의 부제목 역학인데 생성된 북마크 HTML을 크롬브라우저에서 불러오면 이 폴더 이름 아래에 북마크들이 생성됩니다. 다른 브라우저에서는 영향이 없습니다.

 

 

 

생성된 Chrome_Bookmarks.html 입니다.

 

이제 웹브라우저에서 북마크 가져오기를 누르고 이 HTML파일을 불러오면 됩니다.

 

 

크롬, 엣지, 웨일 등 크롬 기반 웹브라우저에서 Ctrl+Shift+O를 누르고 북마크 관리자를 켭니다.

 

그 다음 오른쪽 상단 점 세개를 누르고 북마크 가져오기를 누르고 북마크 HTML파일을 선택합니다.

 

(참고로 기존 북마크 폴더가 없다면 폴더를 하나 만들고 가져오는 것이 좋을 수 있습니다.)

아래처럼 크롬에서는 지정된 폴더(myFolder)가 만들어지고 그 안에 북마크가 일괄 생성됩니다.

크롬에서는 북마크 HTML에서 <H3> 태그 안의 내용대로 폴더가 만들어지는 것으로 보입니다.

 

다른 브라우저에서는 '가져온 북마크'라는 폴더안에 생성됩니다.

 

 

 

 

엣지에서 즐겨찾기 가져오기:

Ctrl+Shift+O 누르고 즐겨찾기 가져오기 > HTML 파일 > 파일선택

 

파이어폭스에서 북마크 가져오기:

Ctrl+Shift+O누르고 가져오기 > HTML에서 북마크 가져오기

 

 


 

 

 

✅ 매크로가 포함된 샘플 파일입니다:

 

SaveAsBookmark1.xlsm
0.04MB

 

 

 

 

참고: addHyperlink2Self 매크로는

엑셀에서 B열의 URL링크에 대해 자기자신에게 하이퍼링크를 일괄로 적용해줍니다.

 

 


 

 

✔️ 자바스크립트 버전:

엑셀 등의 표를 아래 사이트에 붙여 넣고 Generate 버튼을 누르면 HTML로 만들어줍니다.

이 내용을 복사해서 HTML파일로 저장하세요.

원본은 https://jsfiddle.net/k0m9rqho/show인데 로그인이 필요해서 약간 수정해서 다른 데 올려놨습니다.

 

http://handin.woobi.co.kr/bookmark/

 

http://handin.woobi.co.kr/bookmark/

Copy the text below and save it as an .html file. Open your browser's Bookmark Manager (Ctrl+Shift+O), then select 'Import Bookmarks' from the menu to upload the file. ✨🎉사용 방법: 1. 위 박스의 내용을 복사하여 메모장에 붙여넣고

handin.woobi.co.kr