こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

長いHTMLタグとフォルダ名を組み合わせたマクロ

エクセル
A1にフォルダ名を入力 「2019」
B1にフォルダ名を入力 「april」
C3にファイル名を入力 「tokyo-minato」
D1にタイトル名を入力 「tokyo」
E1にフォトギャラリーの数 「40」
マクロ実行で以下のようにしたいですが、初心者なので、アドバイスをもらえたらと思います。
宜しくお願いします。

<!-- フォトギャラリー1 -->
<div class="ngg-gallery-thumbnail-box ngg-3-columns" >
 <div class="ngg-gallery-thumbnail">
 <a href="http://aaa.com/2019/april/tokyo-minato01.jpg" title="tokyo01">
<img src="http://aaa.com/2019/april/tokyo-minato01.jpg.jpg" width="240" height="160"/></a>
</div>
</div>

<!-- フォトギャラリー2 -->
<div class="ngg-gallery-thumbnail-box ngg-3-columns" >
 <div class="ngg-gallery-thumbnail">
 <a href="http://aaa.com/2019/april/tokyo-minato02.jpg" title="tokyo02">
<img src="http://aaa.com/2019/april/tokyo-minato02.jpg.jpg" width="240" height="160"/></a>
</div>
</div>



<!-- フォトギャラリー40 -->
<div class="ngg-gallery-thumbnail-box ngg-3-columns" >
 <div class="ngg-gallery-thumbnail">
 <a href="http://aaa.com/2019/april/tokyo-minato40.jpg" title="tokyo40">
<img src="http://aaa.com/2019/april/tokyo-minato40.jpg.jpg" width="240" height="160"/></a>
</div>
</div>

投稿日時 - 2019-04-30 12:23:02

QNo.9612034

困ってます

質問者が選んだベストアンサー

#1です。
お礼の補足に関して、その方が、はるかに簡単。
基データが、シートSheet1のA1:C1
出来上がりは、シートSheet3のA列とすると(4行目以下)
標準モジュールに
Sub test02()
Set sh = Worksheets("Sheet3")
For nm = 1 To 40
s = "<a herf=""http://aaa./com/"
s = s & sh.Range("A1") & "/" & sh.Range("B1") & "/" & sh.Range("C1")
s = s & Format(nm, "00")
s = s & ".jpg""" & "Title =" & """" & "tokyo=" & Format(nm, "00")
s = s & """" & " > "
Cells(nm + 3, "A") = s
Next nm
End Sub
を作り、実行。
ーー
附言。
質問例のHTML文全体の中に対して、各自を挟み込むとなるともっと複雑になり、そこまでしてエクセルVBAとエクセルワークシートを使ってやるのは、ベテランがやるならともかく、初心者が考えるのは行き過ぎ。
別にHTML作成ソフト(エディター)を探し、そこでコピーと置換などで対処できないかなと想像する。
全体的に質問の意向に沿って答えているかどうか自信なし。珍しい質問。

投稿日時 - 2019-04-30 20:09:49

お礼

うまくいかない箇所がありましたので、上記を参考に自分なりに改造したところうまくいきました。エディターでコピーと置換って面倒ですよね。
やはりマクロの方が一発ですね。
ありがとうございました。

投稿日時 - 2019-04-30 21:01:12

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

質問の趣旨を、小生は十分とらえきれてない。なぜこんなことを、VBAを使って、エクセルシートを使って、やるのか。コピーと貼り付けした後に、一部手修正でよいのでは。そんな事情は書いておいた方がよいと思う。
ーーー
下記を手慰みで、つくってみた。しかし>初心者なので、という人にわかってもらえるかな。意味ないかも。
Sheet1のA1-D1に
2019april tokyo-minato tokyo 40
と入れる。
A2に「作成」と入れる。このセルのクリックは、コマンドボタン替わりです。
ーー
標準モジュールMojule1に
Public cl
Public nm
Sub test01()
cl = 0: nm = 0
End Sub
を書く。初期化。
Sheet1のWorksheet_SelectionChangeのイベントに
ーー
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$2" Then
MsgBox "データをセットします"
s = "<a herf=""http://aaa./com/"
s = s & Range("a1") & "/" & Range("B1") & "/" & Range("C1")
nm = nm + 1
s = s & Format(nm, "00")
s = s & ".jpg""" & "Title =" & """" & "tokyo=" & Format(nm, "00")
s = s & """" & " > "
MsgBox s
cl.Value = s
ElseIf Not Application.Intersect(Target, Range("A2:A30")) Is Nothing Then
'データをセットするセルを決定。
MsgBox "A2クリックで" & Target.Address & "に作成します."
Set cl = Target
Else
End If
End Sub
と書く。
Sheet1の画面に戻ってA3:A30のどれかをクリック(選択)。今回はA3セルとする。
続けて、A2セルをクリック(選択)。データ作成を実行せよという意味。
これでA3セルに
<a herf="htpt://aaa./com/2019/april/tokyo-minato1.jpg"Title ="tokyo=01" >
がセットされる。
次にA3以外のセルをクリック。A4とする。
続けて、A2セルをクリック。これでA4セルに
<a herf="htpt://aaa./com/2019/april/tokyo-minato2.jpg"Title ="tokyo=02" >
がセットされる。
以下繰り返すと、指定セルに、前回とは、一部が変化して、セットされる。
「データをセットするセルの選択」と、「A2セルの選択」は、前後で、1対1で行うこと。
ーー
 変化する番号を01に戻したいときは、標準モジュールのtest01を実行する。
その後は01,02,03・・と連続して進む。
データを作るところは、文字列結合の&の利用と、”(ダブルコーテーション)の扱いだけに注意した、が平凡な繰り返しで新味無し。

投稿日時 - 2019-04-30 15:19:18

お礼

コメントありがとうございます。
お陰様でできましたが、おっしゃる通りA3:A30のどれかをクリックして作成ボタンをクリックの繰り返しで40まではいけましたが、一気に40までは難しいでしょうか?

投稿日時 - 2019-04-30 18:35:54

あなたにオススメの質問