?> ExcelでHTMLを作成し自動アップロードする方法   YPO Industry
ExcelでHTMLを作成し自動アップロードする方法

この記事をシェアする:

 ExcelでHTMLを作成し自動アップロードする方法

ExcelでHTMLファイルを作成し、自動でサーバにアップロードする方法

この記事では、ExcelとVBAを使ってHTMLファイルを自動生成し、サーバにアップロードする仕組みを構築する方法を紹介します。

ステップ1:Excelで広告リストを作成

Excelの「メイン」シートにて、以下のように広告のリストを作成します。

以下のVBAを「広告の追加」マクロとして登録します:

Sub 広告の追加()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim X As Long

    Set ws = ThisWorkbook.Sheets("メイン")

    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    If lastRow < 11 Then lastRow = 10
    lastRow = lastRow + 1

    X = lastRow - 11

    ws.Cells(lastRow, "C").Value = ws.Range("C4").Value
    ws.Cells(lastRow, "D").Value = ws.Range("D4").Value
    ws.Cells(lastRow, "B").Value = "ad" & X & ".html"

    ws.Range("C4:D4").ClearContents
End Sub

ステップ2:HTMLファイルの自動生成

以下のマクロで、11行目以降のリストを元にHTMLファイルを生成します。ファイルはデスクトップの「html_output」フォルダに出力されます。

Sub ファイル作成()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim fso As Object
    Dim htmlFile As Object
    Dim filePath As String
    Dim folderPath As String
    Dim fileName As String
    Dim content As String

    Set ws = ThisWorkbook.Sheets("メイン")
    folderPath = Environ("USERPROFILE") & "\Desktop\html_output\"
    If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath

    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    If lastRow < 11 Then Exit Sub

    Set fso = CreateObject("Scripting.FileSystemObject")

    For i = 11 To lastRow
        fileName = ws.Cells(i, "B").Value
        content = ws.Cells(i, "C").Value

        If fileName <> "" And content <> "" Then
            filePath = folderPath & fileName
            Set htmlFile = fso.CreateTextFile(filePath, True, False)

            htmlFile.WriteLine "<!DOCTYPE html>"
            htmlFile.WriteLine "<html lang='ja'>"
            htmlFile.WriteLine "<head><meta charset='UTF-8'><title>" & fileName & "</title></head>"
            htmlFile.WriteLine "<body>"
            htmlFile.WriteLine "<p>" & Replace(content, vbLf, "<br>") & "</p>"
            htmlFile.WriteLine "</body></html>"

            htmlFile.Close
        End If
    Next i

    MsgBox "HTMLファイルの作成が完了しました。"

    ' アップロード用バッチファイルを実行
    Shell """C:\Users\YourUserName\OneDrive\ホームページ\upload_html.bat""", vbNormalFocus
End Sub

ステップ3:アップロード用バッチファイル

以下の内容で upload_html.bat を作成し、Excelと同じ階層または任意の場所に保存します。

@echo off
:: サーバ接続情報
set SSH_HOST=your_user@your_host
set PRIVATE_KEY="C:\Path\To\your_private_key.key"
set REMOTE_UPLOAD_DIR="~/public_html/ads/"
set SSH_PORT=10022

:: HTML出力フォルダへ移動
cd /d "%USERPROFILE%\Desktop\html_output"

:: 全HTMLファイルをアップロード(上書き)
for %%F in (*.html) do (
    echo Uploading: %%~nxF
    scp -P %SSH_PORT% -i %PRIVATE_KEY% "%%F" %SSH_HOST%:%REMOTE_UPLOAD_DIR%
)

:: フォルダ削除
cd /d %~dp0
rmdir /s /q "%USERPROFILE%\Desktop\html_output"

echo Upload completed.
pause

まとめ

これで、Excelで入力した内容からHTMLを作成し、サーバへアップロードする作業を自動化できました。記事リスト作成〜アップロードまで一括で完了できるため、定期更新や複数ファイル処理にも便利です。

コメントを投稿する




コメント一覧

まだコメントはありません。