[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『目次ファイルからフォルダー内のファイルへリンクをはりたい』(初心者)
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.