教えて! goo のコンテンツに対する取り組みについて

サイトでよくある新着情報をExcel管理、html出力したいです。

Excelで必要情報を入力し、作成ボタンを押したらHTMLが出力されるようにしたいのですが、自分なりに調べているのですが知識不足で煮詰まってしまいました。
どうかお力をお貸しいただけないでしょうか。
やりたい事は下記になります。

Excel上では下記のよう管理したいです。

A列に日付(2022/01/21)
B列にリンクタイトルの文字列(〇〇を更新しました)
C列にリンク先URL
D列にターゲット(_blank)
※これを何行も上から追加します。

出力されるHTMLは下記のようにしたいです。

<html>
<head>
<title>新着情報です</title>
</head>
<body>

<dl>

<dt>A列に入力した日付</dt>
<dd> <a href="B列に入力したURL" target="D列に入力したターゲット">C列に入力したURL</a> <img src="new.png">
</dd>

</dl>

</body>
</html>

※上記の<dt>〜</dd>をExcelの1行とする。
※ <img src="new.png">は、A列に入れた日付が、作成日より1週間以内であれば表示する。

下記サイトを参考にHTMLは出力できたのですが、
上記※で書いたようにする方法がわからず困っています。
https://nanmemo.com/html-output

どのようにすれば良いか、教えて頂けないでしょうか。
どうかよろしくおねがいします。

教えて!goo グレード

A 回答 (2件)

こんばんは



>下記サイトを参考にHTMLは出力できたのですが~~
どこまでできているのかよくわかりませんけれど、VBAの知識が多少おありなら、さほど難しいことではないと思われます。

>※上記の<dt>〜</dd>をExcelの1行とする。
単に、セルの文字列を定型で連結すればよさそうなので、ご提示のサイトのようにループで処理すればよいでしょう。
ループに関しては、繰り返す部分のスタート行が n行目からならば
 For i = n To MaxRow
などとしておく要領です。
ループ内で、文字列演算(連結は & 演算子)で、必要な部分(A~D列)を連結してゆけばよいことになります。

>※ <img src="new.png">は、A列に入れた日付が、作成日より1週間以内であれば表示する
「今日」の日付は NOW()でも取得できますし、どこかの空きセルに「=TODAY()」と入力しておいてその値を利用することもできます。
日付の実態は数値なのでそのまま比較することが可能です。
A列の日付と比較して、「今日の日付-7」より大きいか否かで、「<img~~」部分の連結をするかしないかを決めるようにしておけばよいと思われます。
(エクセルの日付の場合、1日が1に相当しますので、1週前は -7となります)


別法として、エクセルの表をそのままUTF-8のCSVで出力してしまう方法もありそうに思われます。
こちらの場合は、エクセルのデータは可変部分だけにしてしまって、UTF-8で出力するだけです。
html側に「CSVファイルを読み込んで、ご提示のようなタグに構成し直して表示する」という仕組みを組み込んでおくことが必要にはなりますが、一度作成してしまえば、あとはCSVファイルだけを入れ替えれば内容が更新されるようになるという考え方です。
こちらの場合は、ブラウザで動作するスクリプト(=javascript)の知識が必要にはなりますけれど・・
    • good
    • 0

こんばんは


<dt>A列に入力した日付</dt>
<dd> <a href="B列に入力したURL" target="D列に入力したターゲット">C列に入力したURL</a> <img src="new.png">
</dd> 部分の文字列作成に躓いているのでしょうか

列との事なのでループするのかな?
”の位置などこれで良いのか試せませんが・・参考程度に

>Excelの1行とする
コードも1行で とりあえず

Sub test()
Dim HtmlCode
Dim i
i = 1
HtmlCode = "<dt>" & Cells(i, "A") & "</dt>" & _
"<dd> <a href=""" & Cells(i, "B").Text & """ target=""" _
& Cells(i, "D").Text & """> " & _
Cells(i, "C").Text & "</a> <img src=" & """new.png""" & " > "
Cells(3, 5) = HtmlCode
End Sub

1行目の該当セル文字をE1セルに出力しています。

ご質問自体を勘違いしていたら忘れてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング