• ベストアンサー

Excelでのマクロ化

 先ほど質問したのですが、質問内容に不備があり、回答いただいたものでは対応が出来ませんでした(私の知識不足で改良できないもので)ので、再度質問させて下さい。  Excel(2000)の表のc列に2000~順にファイル名?(全て半角数字)が入っています。それに対応するファイル(SG2000~SG+数字になっています)をハイパーリンクで引いてきたいのですが、マクロで自動化するにはどのようにすれば良いのでしょうか?  リンクしたいファイルは、別のネットワークディレクトリに入っています。ファイルは、拡張子がdocもしくは、txtですが、両方あるものについてはdocを。docがないものについては、txtのものを貼りたいのです。どちらもないものはありませんので、そこで終了としたいのです。  どちらが簡単かわかりませんが、ハイパーリンクを貼らなくても、c列のセルをクリックしたら、対応ファイルが開くというものでも構いません。  このファイルのディレクトリがちょこちょこ移される(ファイル数が多くなると空きの多いドライブに移されます)と今後、doc,txt以外のファイルも必要となる可能性があるので、そのときに対応できるように、どこを書き換えたら良いのかもあわせて教えていただけると助かるのですが。  ちなみに、今までは、手で1つづつハイパーリンクで貼っていたのですが、先日より1日に5~10ファイルづつ増えてくるようになったので困っています。  また、このようなマクロの参考書で、これが良いよというものを紹介していただけるとありがたいのですが。もちろん、HPのURLでも構いません。 よろしくお願いします。

  • dogs59
  • お礼率77% (279/359)

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

  • ベストアンサー
  • eipu
  • ベストアンサー率39% (25/64)
回答No.1

うちで実験してみたら、下記で動きました。 使い方は、該当シートをアクティブにして マクロを実行するだけです。 file_type(*)の設定を追加するなり 変更するなりしてもらえれば、 doc、txt以外にも対応可能です。 Sub AutoAnchor() Dim file_dir As String Dim y As Integer Dim i As Integer Dim ck As String Dim file_type(10) As String 'ファイル置き場(ネットワーク上なら、\\PC名\共有名) file_dir = "c:\test" 'セルのスタート位置の行番号 y = 1 'ファイルの拡張子(優先する物ほど上へ) file_type(0) = ".doc" file_type(1) = ".txt" file_type(2) = "" Do Until Cells(y, 3).Value = "" i = 0 Do Until file_type(i) = "" ck = Dir(file_dir & "\" & Cells(y, 3).Value & file_type(i)) If ck <> "" Then Exit Do i = i + 1 Loop ActiveSheet.Hyperlinks.Add Anchor:=Cells(y, 3), Address:= file_dir & "\" & Cells(y, 3).Value & file_type(i) y = y + 1 Loop End Sub

dogs59
質問者

お礼

 ありがとうございました。 質問しておきながらなんですが、用事があって帰宅したので、明日試してみます。  ところで、このマクロどこで、c列を判断しているのでしょうか?

その他の回答 (2)

  • moon00
  • ベストアンサー率44% (315/712)
回答No.3

セル内容は数字のみで、ファイル名には必ず「SG」がつく、 ということならば、 ck = Dir(file_dir & "\" & "SG"&Cells(y, 3).Value & file_type(i)) ActiveSheet.Hyperlinks.Add Anchor:=Cells(y, 3), Address:= file_dir & "\" & "SG"& Cells(y, 3).Value & file_type(i) とすれば大丈夫だと思います。Excel97で確認しました。 それぞれファイル名を取得するときに、「SG」を付け加えています。 私も1年ほど前からマクロに手を出し始めましたが、 http://www.moug.net/ http://www.sigoto.co.jp/excel/ http://www2s.biglobe.ne.jp/~iryo/index.html このあたりが参考になるかと。 これらのHPからリンクを貼られているところも参考になります。 その他は日経パソコンの連載を参考にしてます。

dogs59
質問者

お礼

 有難うございました。助かりました。  お2人に、良回答をお付けしたいのですが、システム上無理なので、申し訳ありません次点とさせていただきます。  今後ともよろしくお願いします。  紹介いただいたURLは、すぐに参考にさせていただきます。

回答No.2

>ところで、このマクロどこで、c列を判断しているのでしょうか? プログラムの中の Cells(y, 3) の3です。 Cellsの中の左側が行番号右側が列番号を示すのです。 これは僕もやってしまうんですがマジックナンバーといってあまり好ましくないものですね。 この場合例えば最初に Const linkretsu = 3 と宣言しておいて Cells(y, 3) を Cells(y, linkretsu) としておいたほうがいいんですね。 そうすれば何かの理由でD列に変えたいとき Const linkretsu = 3 を Const linkretsu = 4 に直せばいいことになるんですね。

dogs59
質問者

お礼

 有難うございました。  またまた、私の質問ミスです。 セルの内容は、2000とか2020なのですが、ハイパーリンクするファイル名は、SG2000やSG2020でした。 教えていただいたマクロで、2000や2020というファイルを捜してハイパーリンクを貼り付けようとしていますね。 これ以上は、個人的な質問になるので、控えた方が良いのでしょうか?基礎がわからないための失敗です。もし、時間があったら申し訳ないのですが、教えてください。

関連するQ&A

  • Excelでのマクロ化

     Excel(2000)の表のB列に2000.doc~順にファイル名(全て数字+拡張子)が入っています。それにリンクを貼っていきたいのですが、マクロで自動化するにはどのようにすれば良いのでしょうか?また、拡張子がdocで存在しないものには、代わりにtxtのものを貼りたいのですが。どちらも同じフォルダにありますし、docもtxtもあるものもありますが、docもしくは、txtは必ず存在します。  ちなみに、今までは、手で1つづつハイパーリンクで貼っていたのですが、先日より1日に5~10ファイルづつ増えてくるようになったので困っています。  また、このようなマクロの参考書で、これが良いよというものを紹介していただけるとありがたいのですが。もちろん、HPのURLでも構いません。 よろしくお願いします。

  • excel マクロコードを教えていただきたいです

    マクロを使うのが初心者のため、詳しい方に以下のマクロ コードを教えていただきたいです。 ある表の一番右の列にハイパーリンクが並んでいます。 そのハイパーリンクにて、各Bookファイルが開くのですが ハイパーリンクを一回押すことで、その一行(数セル)を、 開いた別ファイルのsheet内に貼り付けたいです。 今は方法がわからないため、ハイパーリンクにてファイル だけ開き、表の一行をコピーして、そのファイル内に貼り 付けています。 すみませんがわかる方教えていただきたいです。よろしく お願いします。

  • Excelのハイパーリンク埋め込みを簡単に作業するには?

    Excelのハイパーリンク埋め込みを簡単に作業するには? お世話様です。EXCEL2003でつまづいて、投稿させていただきました。 セルA列に、記載されているフォルダパス、ファイル名へのハイパーリンクを、セルB列に埋め込みたいのですが、その作業が数百個あります。地道にリンクするのがひとつの選択ですが、できれば楽にしたいです。 セルA      |    セルB c:\file-1.txt |  c:\file-1.txtへのハイパーリンク c:\file-2.txt |  c:\file-2.txtへのハイパーリンク c:\file-3.txt |  c:\file-3.txtへのハイパーリンク     * c:\file-n.txt |  c:\file-n.txtへのハイパーリンク   これは、関数の類で実現できるものなのでしょうか。 それとも、VBAを紐解いて、「値の取得とハイパーリンクのメソッド、、」などをプログラミングする 術を学習すべきでしょうか。

  • エクセルかマクロで・・・

    エクセル関数かマクロで作りたいのですが、   A列に数字B列に個数を入力していくとします。   A列の数字をB列の個数分だけC列に表示したいのです。  例えばA1に300、B1に5、A2に500、B2に6と入力した場合、   C1からC5に300、C6からC11に500、と表示するにはどうしたらよい  でしょうか。 よろしくお願いいたします。

  • エクセルマクロに詳しい方

    すいません教えて下さい。  例えば、A1のセルに30、A2のセルに5 A3のセルに7 といった感じで数字があるとして どこかの列のある位置 を基準として 例えば C列の先頭から A1のセルにある 数字の分だけ色分けるマクロってどのようになるのでしょうか この場合 C1からC30までが黒 C31~35までは緑 といった具合にしたいのです。 A列に入る数字は必ずしも 一定ではありません。  できましたら、 マクロを簡単に書いて頂けると大変うれしいです。 よろしくお願いします。

  • エクセルのマクロで教えてください

    エクセルのマクロで教えてください A1に入っている値が変化するごとにD列に順にその変化を出力していきたいのですが マクロではどのようにしたらいいでしょうか A1には=C1+C2というような計算式が入っていてC2の数字を変えて計算結果が変わるごとに出力したいのですが

  • Hyperlink関数をクリックしてくれるマクロ

    どなたか詳しい方教えていただけないでしょうか? ExcelのセルA1に以下のhyperlink関数を入れています。 =HYPERLINK(″#C″&MATCH(B1,C:C),″クリック″) 隣のB1に入れた数字を元にC列に存在する同じ数字先にジャンプするように関数を作ってます。 A1にできたリンクをクリックしたは、B1に入力されているものと同じ数字先のC列に飛ぶようにマクロを組みたいのですが、どうしたらいいでしょうか? ハイパーリンク関数がマクロに組み込めないのと色々調べてみましたがうまくいかないのでお手上げです。 どなたか詳しい方教えていただければと思います。 どうぞよろしくお願いします!

  • Excelマクロで、WORDを閉じるには。

    Excel2000のマクロ内で、Word2000を起動してファイルを開き、それを別名保存した後Wordを閉じてExcelに戻る…という処理を行いたいのですが、Wordを閉じる所がうまく出来ません。 [現在のマクロ]------------------------------ Set wd = CreateObject("word.Application") wd.Visible = True wd.documents.Open Filename:= _ "C:\aaa.doc" wd.ActiveDocument.SaveAs Filename:= _ "C:\test\bbb.doc" wd.Close SaveChanges:=False -------------------------------------------- これで実行すると、開いたファイル(aaa.doc)は閉じるのですが、別名保存したファイル(bbb.doc)が閉じません。両方のファイルおよびWORDアプリケーションを閉じたければどう記述すればよいのでしょうか? どなたか教えてください。

  • ワード+エクセルのマクロ

    めぐみと申します。 ワード+エクセルのマクロのことで質問させて頂きます。 少し複雑ですみません。 ワードに書いてある単語をエクセルの中に記載されてある辞書(A列の単語→B列の単語)を置換したいです。 対象ファイル: 1.ディレクトリ内にあるワードファイルすべてのワードファイル 2.エクセルファイル  A列 検索対象の単語  B列 置換対象の単語 動作: エクセルのマクロを実行すると同じ階層にあるワードを探して、A列の単語の一覧を検索してB列に置換 エクセルのマクロを実行してワードのファイルの中の単語を変換するといった複雑なマクロは可能なのでしょうか? 恐れ入りますがご存じの方がいらっしゃいましたら教えて下さい。

  • エクセルVBAハイパーリンクの自動設定について

    はじめて質問させていただきます。 エクセルVBAハイパーリンクの自動設定についてですが A列にAAA、BBB、CCC、DDD・・・という文字列が入っています。 D:\dataというフォルダーにAAA-01、BBB-02、CCC-01、DDD-05 という名前のファイル(.DOC)が入っています。 A列の文字列にハイパーリンクを貼りたいのですがどうしたらよいでしょうか? AAAの文字にAAA-01.docのハイパーリンクを自動で貼る。 -01はファイルのバージョンで更新されたら-02、-03と変わって いくため頭から3文字があえばリンクを貼るようにしたいのです。 よろしくお願いします。

専門家に質問してみよう