[[20110312090808]] 『目次ファイルからフォルダー内のファイルへリンクをはりたい』(初心者) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『目次ファイルからフォルダー内のファイルへリンクをはりたい』(初心者)
 Excel2003  WindowsXPを使用しています。 
 全文検索で下記のマクロを見つけ便利に使わせて頂いてます。
 フォルダを指定すると配下のファイル一覧が表示されハイパ-リンクがはられ
 ます。
 [[20070314165615]] 『目次からファイルを開けるようにしたい』
 Option Explicit
 '指定したフォルダ内のファイルの一覧を取得
 Sub Display_Directory()
 Const cnsDIR As String = "\*.*"
 Dim strPATHNAME As String
 Dim strFILENAME As String
 Dim GYO As Long
 Dim MyObj As Object
 Set MyObj = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "フォルダーを選択して下さい。", 0)
 If MyObj Is Nothing Then Exit Sub
 strPATHNAME = MyObj.Items.Item.Path
 '先頭のファイル名の取得
 strFILENAME = Dir(strPATHNAME & cnsDIR, vbNormal)
 'ファイルが見つからなくなるまで繰り返す
 With ActiveSheet
    .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).ClearContents
    Do While strFILENAME <> ""
        '行を加算
        GYO = GYO + 1        '先頭は1行目 ’3にすると3行間隔で表示
        .Cells(GYO, 1).Value = strFILENAME
        'ハイパーリンクをセットする
        .Hyperlinks.Add .Cells(GYO, 1), strPATHNAME & "\" & strFILENAME
        '次のファイル名を取得
        strFILENAME = Dir()
    Loop
 End With
 Set MyObj = Nothing
 End Sub

 今回の質問は
 あるホルダにA,B、C・・・と複数のファイルと目次ファイルをつくり
 目次ファイルを開き、ファイル一覧というマクロを起動すると

    A    B     C
 1  ファイル名 
 2   A
 3   B 
 4   C
 5
 A,B,Cのファイル名をクリックするとそのファイル(A,B,C)ファイルが開く
 といういうよいうに表示させたいと思います。
 上記のようにホルダを指定する操作をなくし
 自分自身(目次ファイル)は表示しないで他のファイルを2列目から一覧表示したい
 のですがどうすばいいでしょうか。
 宜しければ教えてください。


 質問の一部を修正しました。
 こういうふうな質問の方法はいけないでしょうか (初心者)


 今日は、質問者さんもですが 回答者さんの数が少ないです。
 (基本的に、土曜日は少ないですが
  さらに、東日本が大変な事に成ってますので。)
 なので、レスが付くのが遅いのは仕方ないと思います。。。

 ご質問に関しては、私としては
 ・何が分かれば良いのか
 を考えてみてもらいたいと思います。

 ご提示のコードで
  指定したフォルダ内のファイル名を一覧にする
  それぞれにハイパーリンクを設定する
 この部分は出来ています。

 後は
  指定したフォルダ → 目次ファイルが保存されているフォルダ
  一覧にするとき、目次ファイルは一覧に含めない
 が、分からないので そう言った事が出来るコードを探せば良いです。

 組み合わせる時に、現在のコードから要らない部分の削除も必要ですが。。。
 材料が揃わないと、事は先に進みませんので。

 マクロを実行しているファイル(そのマクロが書かれているファイル)のパスを取得するマクロを
 探してみて下さい。

 グーグル先生はユウシュウなので
http://www.google.co.jp/search?hl=ja&source=hp&q=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%80%80%E3%83%9E%E3%82%AF%E3%83%AD%E3%80%80%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%80%80%E3%83%91%E3%82%B9%E3%80%80%E5%8F%96%E5%BE%97%E3%80%80%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B&lr=&aq=f&aqi=&aql=&oq=
 このくらいの事をすれば見つかると思います。

 (HANA) 

 HANAさん
 ありがとうございます。 
 教えて頂いた情報のなかから
 http://www.nurs.or.jp/~ppoy/access/excel/xlM064.htmlを見つけ
 試してみました。

 マクロのなかで手入力でホルダの位置設定すると

 処理日: 2011/03/12 (土) 21:42
 検索条件: *.*
 対象フォルダ: C:\〜 ・・・該当のホルダの位置を設定した表示
 検索件数: 4 件

 A.xls
 B.xls
 C.xls
 目次ファイル.xls
 と表示しました
 実際はもっと多くのファイルがあるので違いますが
 一歩前進しました。
 今まで、グーグル検索なんかしたことがなかったので、そういう方法もあるのか 
 と驚きました。
 現時点では、ホルダの位置を手入力しなければいけませんが、目次ファイル(このファイル)
 の上位のフォルダを自動的に設定する方法を見つけたいと思います。
 進展したらまたお知らせします。時間がかかりそうですが・・・
 (初心者)

 教えて頂いた情報のなかに参考となる情報がありました

 「自ブックが格納されているフォルダの取得、 
 ということのようですね。 
 ThisWorkbook.Path 
 で取得できます。 
 アクティブブックの場合は、 
 ActiveWorkbook.Path 
 となります。 」

 対象フォルダを ThisWorkbook.Path にしてフォルダがどの位置でも
 表示できました。
 目次ファイル.xlsの非表示はもっと探してみます。(初心者)

 仮措置ですが
 目次ファイルというファイル名を 1_目次ファイルというファイル名にしました
 マクロ走らせると1_目次ファイルは1番最初に6行に表示します。
 6行を非表示にしました。
 見た目には目次ファイルは表示しなくなりました。

 処理日: 2011/03/12 (土) 21:42
 検索条件: *.*
 対象フォルダ: C:\〜 ・・・現在のフォルダ
 検索件数: 3 件

 A.xls
 B.xls
 C.xls
 と見た目に表示しています。
 1_目次ファイルを表示対象外にする方法はまた探してみます。(初心者)


 遅くなりました、すみません。

 目的のページにたどり着けた様で良かったです。

 >今まで、グーグル検索なんかしたことがなかったので、そういう方法もあるのか 
 >と驚きました。
 と言う事なので、今回私が探した手順を書いてみます。

 まず、先にリンクした様なワードでグーグル先生に聞いてみます。
 基本的な構成は
  ●ページ名
  内容
  URL -キャッシュ- 類似ページ
 の様に成っています。
 そして、「内容」の部分は 検索ワードと一致するワードが太字に成って
 その前後の言葉が表示されています。

 一番最初にヒットしたページの内容の部分に書いてある文章を読むと
 「実行中のマクロが記述されているブックのパス」と言う記述があります。
 このページは開いてみる価値がありそうなので、新しいページとして開きます。
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv201.html

 このページは一つのページに沢山の情報が入っていて、何処に
 「実行中のマクロが記述されているブックのパス」と言う記述があるのか良く分からないので、
 Ctrl + F で検索窓を表示させ ↑の文字をコピーして貼り付け。[次へ]をすると
  パス = ThisWorkbook.Path                    '実行中のマクロが記述されているブックのパス
 の場所へジャンプ出来ます。

 これが目的のコードですが、もう少し探してみます。

 二番目にヒットしたページの内容の部分に書いてある文章は短くて
 今回探したい情報が何処にあるのか良く分からないので。。。。
 ここは保留。

 三番目にヒットしたページの内容部分には
 「'実行中のマクロが記述されているブックのフォルダへの絶対パス」と言う記述があるので
 開いてみます。

 今回は、まさに「フォルダのパス」が知りたいので、期待して開きます。

 せっかくなので -キャッシュ- の方から開いてみてください。
 検索したワードがハイライトされて表示されています。
 ページを下におろした時に、探している部分が見つかりやすいと思います。
http://webcache.googleusercontent.com/search?q=cache:7ksbWecqdycJ:www.k1simplify.com/vba/tipsleaf/leaf233.html+%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%80%80%E3%83%9E%E3%82%AF%E3%83%AD%E3%80%80%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%80%80%E3%83%91%E3%82%B9%E3%80%80%E5%8F%96%E5%BE%97%E3%80%80%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B&cd=3&hl=ja&ct=clnk&gl=jp&source=www.google.co.jp

 コードは、最初に見つけたものと同じ
  Thisbook_path = ThisWorkbook.Path
 ですね。。。

 >目次ファイル.xlsの非表示
 に関しては、最初に載せておられるコードをもう少し読んでみて下さい。

 『.Cells(GYO, 1).Value = strFILENAME』
 この部分で、ファイル名がセルに書き出されているのが分かりますか?
 その下の行のコメントが
 『'ハイパーリンクをセットする』で
 さらにその下の行のコメントが
 『'次のファイル名を取得』
 と書いてありますので。
 セルにファイル名を書き出すチャンスはここしか有りません。

 そして、strFILENAME = Dir() で、『次のファイル名を取得』しています。
 ちなみに、
 『'先頭のファイル名の取得
  strFILENAME = Dir(strPATHNAME & cnsDIR, vbNormal)』
 これが『先頭のファイル名の取得』です。

 このことからも、strFILENAME にファイル名が入っていると分かります。

 ですから、
 strFILENAME と 一覧に表示したくないファイル名が一致しなかった時にだけ
  '行を加算〜'次のファイル名を取得
 のコードが実行される様にすれば良さそうです。

 If 条件 Then
    条件が成立した時に実行したいコード
 End If

  ちなみに、等しいは「=」で表せ 等しく無いは「<>」で表せます。

 VBAの入門ページを確認してみて下さい。

 (HANA)

 HANAさん。ご丁寧な説明ありがとうございます。IF文で
 >strFILENAME と 一覧に表示したくないファイル名が一致しなかった時にだけ
 > '行を加算〜'次のファイル名を取得
 が出来るようやってみます。
 時間がかかると思いますが、やってみます。
 まずはお礼まで。(初心者)

 その様なコードを作ればお気づきでしょうけど。。。

 >strFILENAME と 一覧に表示したくないファイル名が一致しなかった時にだけ
 > '行を加算〜'次のファイル名を取得
 >のコードが実行

 ↑違ってました。。。

 次のファイル名を取得するのは
 strFILENAME と 一覧に表示したくないファイル名が一致するかしないかに関わらず
 時期が来たら実行しないといけないので

 行を加算。セルにファイル名を書き出す。ハイパーリンクをセットする。
 のコードをファイル名判定のIFの中で実行する様にしないとだめですね。

 「次のファイル名を取得する」は、ファイル名判定のIFの外に出します。

 (HANA)

 HANAさん。再度の助言ありがとうございます。 
 まだなにも進んでいませんが、
 >その様なコードを作ればお気づきでしょうけど。。。
 全然、気づいていません。
 マクロはあまりわからず、こちらで探してこれいいなと思った
 のを使わせて頂いています。
 >VBAの入門ページを確認してみて下さい。確認してみます。
(初心者)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.