ExcelでHTMLファイルを作成し、自動でサーバにアップロードする方法
この記事では、ExcelとVBAを使ってHTMLファイルを自動生成し、サーバにアップロードする仕組みを構築する方法を紹介します。
ステップ1:Excelで広告リストを作成
Excelの「メイン」シートにて、以下のように広告のリストを作成します。
- C4:タイトル
- D4:本文
- 11行目以降に1件ずつ追加されます
以下の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を作成し、サーバへアップロードする作業を自動化できました。記事リスト作成〜アップロードまで一括で完了できるため、定期更新や複数ファイル処理にも便利です。
コメントを投稿する
コメント一覧
まだコメントはありません。