- ベストアンサー
VBAで.docのみを抽出
VBAを先週辺りから勉強し始めたのですが、 エクセルのワークシートにあるリストにリンクしてあるファイルの拡張子を確認して.doc(wordファイル)であれば、次のサブルーチンを適用し、そうでない場合は次のセルに移動するということをしたいのですが、どのようにVBAを書けば良いのでしょうか? 全くの初心者なので、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 #3は適当なシートにハイパーリンクを設定して実行すると、.doc の場合のみセルのアドレスを表示するマクロです。 私は下記の様に解釈したのですが違ってましたか、、、 1.シートにハイパーリンクを設定したリストがある。 2.ハイパーリンクのリンク元のファイルが.docか知りたい。 Sheet1のA1~A5に りんご ばなな めろん ・ ・ のようなリストがありますって感じで具体的な例をあげて質問された方が的を得た回答が得られやすいと思います。
その他の回答 (3)
- papayuka
- ベストアンサー率45% (1388/3066)
こんな意味ですか? Sub Test() Dim hr As Hyperlink For Each hr In ActiveSheet.Hyperlinks If LCase(hr.Name) Like "*.doc" Then MsgBox hr.Range.Address End If Next hr End Sub
お礼
ありがとうございます。と言いたいところなのですが、全く意味がわかりません。 質問すること自体が間違っていたようです。もう少し勉強して、また質問したいと思います。ありがとうございました。
- popesyu
- ベストアンサー率36% (1782/4883)
仕様がやや不明瞭なんですけども。 最初にリストを登録して特定のフォルダにファイルをコピーするんでしょうか? それとも特定のフォルダに入っているファイルをリスト化するんでしょうか? 後者であれば 1.特定の条件(拡張子.docとか)に合うファイルを取得2.リストボックスに登録 3.選択してOKボタンを押したらそのファイルを開くとか。 そちらの方が登録もれもないですし確実な仕様になると思うのですが。 前者であれば登録作業の段階からVBA化してしまえば (例えば登録したファイルをどこかのセルに書いておくとか)ワードファイルがどうのとかで悩まなくても良いかと。
お礼
ありがとうございます。 上記についてですが、ISOの文章がたくさんあるんです。今まで作った文書は、全てリストに登録されていますが、今後、ペーパーレスの関係から、それを今後は、PDFファイルにして保管することになっているのですが、最終的に、word文書はここ。excelの文書はここってな具合に仕分けする必要があるので、その第一段階なのです。あれもこれもと書き出すとなにがなんだかわからなくなるので。
- popesyu
- ベストアンサー率36% (1782/4883)
イベントのきっかけをどこに置くかで難しくなりそうなんですが。 >そうでない場合は次のセルに移動する ということであれば具体的には、ハイパーリンクをクリックした時(Worksheet_FollowHyperlink)に確認させたいとことなんでしょうか? しかしこれだとこのイベントはキャンセルが効かないので、難題ですよ。カスタムイベントを作る必要があるかなぁとこの辺はよく分りませんがw ハイパーリンクの機能を直接は使わない方法の方が簡単に作れそうかと。 例えば ・ブックロード時などに.docへのハイパーリンクはそのままだけどそれ以外はハイパーリンクは削除しておくとか。 ・ボタンがクリックされた時に、特定のセルの値に入っている文字列(ファイルのパス)を取得して開くとか。
お礼
早速の回答ありがとうございます。かなり難しそうですねぇ。 では、切り替えて、シートごとにリストされているファイルのフォルダは同じですので、ハイパーリンクを考えずに、リストされているファイルがワードファイルの場合は、実行するということにしておけば良いのでしょうか? リストには、ファイル名は載せてありますが、拡張子はありませんが。 私自身がわかっていないもので、色々とすみません。
お礼
ありがとうございました。 明日にでも、また考えて改めて質問させてもらいます。 一旦、締め切らせていただきますね。