- ベストアンサー
ホームページのリンクを自動で生成する方法
img1.jpg、img2.jpg、img3.jpg、という3000枚の連番になった画像を、ホームページ上でリンクさせたいのすが、 画像を(上記のような名前で)用意し、準備できたら、HTMLデータに、ひとつリンク用のテキストを用意して、あとは自動で、リンクを作成してくれる便利なやり方、もしくはそれに類似した方法はないものかと探しております。 自分はGO LIVE6.0を利用しているのですが、そんな裏技とか、もしくは、エクセルで準備して、最終的にWEBに保存するやりかたとかあるのかしらと今、模索してます。 文章で説明したら、なんだかよくわからないかもしれないですが、何かしらアドバイスでもいだければありがたいです。よろしくお願い申し上げます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
エクセルを使う方法は下のお二方が答えておいでなので、 javascriptを使った方法を考えてみました。 ソースをコピーしてHTMLファイルとして保存し、ブラウザで見てください。 開始数字、終了数字、リンクテキストを入力し、「リンク作成」を押すと指定した連番のリンクを生成します。 ソースここから ==================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>リンク生成</title> <script> function MakeLinkText(Start,End,LinkText) { Start = Start.value; End = End.value; LinkText = LinkText.value; if ((Start.match(/^\d+$/)) && (End.match(/^\d+$/)) && (LinkText)) { Links = new Array(); for (i = Start; i <= End; i++) { Links.push('<A href="img' + i + '.jpg" alt="画像' + i + '" title="画像' + i + '">'+ LinkText + i + '</A><br>'); } HtmlText = Links.join("\r\n"); document.MakeLink.html.value = HtmlText; return false; } else { alert ("開始数字と終了数字を入力してください"); return false; } } </script> </head> <body> <form name="MakeLink" onsubmit="return MakeLinkText(start,end,linktext)"> 開始数字 <input type="text" size="10" name="start"> ~ 終了数字 <input type="text" size="10" name="end"> (半角)<br> リンクテキスト <input type="text" name="linktext"> <input type="submit" value="リンク作成"><br> <textarea cols="80" rows="30" name="html"></textarea><br> <input type="button" value="すべて選択" onclick="html.select()"> </form> </body> </html> ==================================== ソースここまで ※Macの場合は「\r\n」を「\r」に変えないとうまく動かないかもしれません。
その他の回答 (5)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#4>マクロの呼び出し方 エクセルを起動したらとりあえず、名前を付けて保存します。<保存されるファイルの位置がわかるようにするため メニューの「ツール」~「マクロ」~「Visual Basic Editor」を選ぶか[ALT]+[F11]キーを押します。 左上の方にプロジェクトウインドウがあってその中の「ThisWorkBook」をダブルクリックすると 右側の部分が白紙が表示されます。 その部分に、 Public Sub MakeLinkText() から End Function までの部分をコピーして貼り付けます。 左上のエクセルのアイコンをクリックするかタスクバーでエクセルを選んでワークシートの画面に戻り、 いったん、上書き保存をして #4で言っている各セルに必要な項目を入力して メニューの「ツール」~「マクロ」~「マクロ▼(横向き)」を選ぶと、 先程コピペしたMakeLinkTextが表示されるはずですので、実行ボタンを押します。 それで実行されます。
お礼
ありがとうございました。
補足
誠にありがとうございます。 わざわざ詳細説明頂きまして。 実行してみました。 が、プロシージャーの呼び出し、または引数が不要です。 と出てきました。 確認させてもらいたいのですが、 セルの方で、必要な項目を入力というのは、 開始番号,終了番号,基本ファイル名,拡張子,リンク用テキスト,書き出しファイル名 だけでよろしいのですよね? すみません、よろしくお願いします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2の方のように、エクセルのセル上でデータを作成することも可能ですが、同じコトをやっても能がないので、マクロを作ってみました。 セルの方で、必要な項目を入力しておきます。 例: 開始番号,終了番号,基本ファイル名,拡張子,リンク用テキスト,書き出しファイル名 1,3000,img,jpg,画像,link.txt みたいな感じで準備します。 そして、以下のマクロを呼び出します。 '<A href="基本ファイル名(開始番号~終了番号).拡張子" alt="リンク用テキスト(番号)" title="リンク用テキスト(番号)">リンク用テキスト(番号)</A> '上記を自動作成する Public Sub MakeLinkText() Dim fso, tso, i, outputString '開始番号,終了番号,基本ファイル名,拡張子,リンク用テキスト,書き出しファイル名 'A2, B2, C2, D2, E2, F2 Dim startNum As Integer, endNum As Integer Dim imageName As String, exp As String, linkString As String, LinkTextFile As String startNum = Range("A2").Value endNum = Range("B2").Value imageName = Range("C2").Value exp = Range("D2").Value linkString = Range("E2").Value LinkTextFile = Range("F2").Value Set fso = CreateObject("Scripting.FileSystemObject") Set tso = fso.OpenTextFile(LinkTextFile, 2, True) For i = startNum To endNum outputString = "<A href=""" & imageName & CStr(i) & "." & exp & """ alt=""" & linkString & CStr(i) & """ title=""" & linkString & CStr(i) & """>" & linkString & toZen(i) & "</A><br>" tso.WriteLine (outputString) Next tso.Close End Sub '数値(符号無し)を全角数字文字列にする Private Function toZen(number) As String Dim str As String, result As String, i str = CStr(number) result = "" For i = 1 To Len(str) result = result + ChrW(AscW("0") + Asc(Mid(str, i, 1)) - Asc("0")) Next toZen = result End Function 指定したファイル名で以下のような内容のテキストファイルが作成されます。 <A href="img1.jpg" alt="画像1" title="画像1">画像1</A><br> <A href="img2.jpg" alt="画像2" title="画像2">画像2</A><br> <A href="img3.jpg" alt="画像3" title="画像3">画像3</A><br> … <A href="img2998.jpg" alt="画像2998" title="画像2998">画像2998</A><br> <A href="img2999.jpg" alt="画像2999" title="画像2999">画像2999</A><br> <A href="img3000.jpg" alt="画像3000" title="画像3000">画像3000</A><br>
補足
ほんとにありがとうございます!! ただ、せっかくここまでしていただいたのに、 あいにく自分はエクセルのマクロという 機能(名称)があることだけは知っているのですが、 実際にどのような手順で行うかわかりません。 (マクロを呼び出す?) 時間をかけて作っていただいたのですから、 まず、エクセルの市販本を買って勉強してみます。 もし、よかったら、あつかましくてすみませんが、 WEBでこのマクロというものを どう呼び出すのかなど参考になるURLなどあれば 教えていただけたらありがたいです。 どうぞよろしくお願いいたします。
済みません。リンクの部分を忘れてました。 とはいえ大体やり方は分かって頂けたかかと思いますので 提示はしません。
もう少し具体的に説明されないと何がしたいのか分から ないです。 連番が振られた文字列をクリックすることで 直接画像 を開くようにしたいということですか? 連番を振るな ら Excel でやるのが便利ですね。 画像が全て「images」フォルダに入っているとして __A___B 1_img1 2_img2 3_img3 ■B1セル ="<IMG src="&CHAR(34)&"images/"&A1&".gif"& CHAR(34)&" alt="&CHAR(34)&A1&CHAR(34)&">" A1:B1 を下方向にオートフィルコピー これをコピーして HTML文書のソースに貼り付け こういうことでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
<A href="img1.jpg">リンクテキスト1</A> <A href="img2.jpg">リンクテキスト2</A> <A href="img3.jpg">リンクテキスト3</A> … <A href="img3000.jpg">リンクテキスト3000</A> とかを自動的に作成したいってことですか? それか、imgタグとaタグ混用? エクセルを使ってもできますけど。 もう少し、具体的にどうしたいのか書いて貰えないと、具体的には書けません。
補足
説明不足申し訳ありません。 imgタグとaタグ混用? とおっしゃる意味は、どういうことかわからないのですが、 おっしゃる通りのことで、 <A href="img1.jpg">リンクテキスト1</A> <A href="img2.jpg">リンクテキスト2</A> <A href="img3.jpg">リンクテキスト3</A> … <A href="img3000.jpg">リンクテキスト3000</A> を自動的に作成したいってことです。
お礼
ありがとうございます。すごいですね、javascriptというものは。驚きです。他のひとにも利用価値がありそうですね。助かります。