• ベストアンサー

VBAで色々な種類のファイルを開く

仕事で使うファイルの整理が苦手で、フォルダーを用途別にしたまでは よいのですが、どこに置いたか忘れて結局ファイル名の検索などで 目的のファイルにたどりついたりしています。 「効率よく作業したい」これが第一なのですが 「私はこうしている」と同僚に自慢したい面もあり 下記のようなことが出来ないかと考えました。  (1)Excel VBA でファイル一覧を作成する。  (2)ファイル名を格納したセル(あるいは行)をクリックすると   目的のファイルが開く。    (1)は出来ました。  (2)はOffice系だけでなくPDF・JPEG・CSV等がありつまづいています。   (1)もサンプルVBAを使ってどうにか作れた程度の初心者です。  (2)はVBA初心者レベルで何とかなるものでしょうか。 OS:VISTA Office2007です。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 拡張子が正しく設定されているなら、こういうコードで開くはずです。 ダブルクリックして開きます。ハイパーリンクは必要ありません。ファイル名は、フル・ファイル名であっても、単に、ファイル名だけでも開くようにしてあります。ファイル名だけの時は、デフォルト・パスに入っていないと開かないようになっています。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   'Win 2000以上   Dim Fname As String   Cancel = True   'デフォルト・パス(ユーザー設定)   Const mPATH As String = "C:\MyFiles\" '*要設定   If Target.Value = "" Then Exit Sub   If Dir(mPATH, vbDirectory) = "" Then MsgBox "Default Path Err!": Exit Sub   If InStr(Target.Value, mPATH) > 0 Then     Fname = Target.Value   Else     Fname = mPATH & Target.Value   End If   If Dir(Fname) <> "" Then     CreateObject("Shell.Application").ShellExecute Fname   Else     MsgBox "ファイルが見当たりません。", vbInformation   End If End Sub  

noname#96255
質問者

お礼

CreateObject("Shell.Application").ShellExecute Fname 色々な局面で利用できそうです。ありがとうございました。 また、ファイルなしの判定も載せていただき大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>ファイル名を格納したセル(あるいは行)をクリックすると >目的のファイルが開く。  下記のコードの内、"D:\hoge\hoge.csv" の部分は、行内の文字列から取得してください。 ●その行のどこかに、「目的のファイル」へのハイパーリンクを貼る  ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="D:\hoge\hoge.CSV", _  TextToDisplay:="表示名" ●その行を右クリックで、「目的のファイル」を開く  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Cancel = True   ActiveWorkbook.FollowHyperlink "D:\hoge\hoge.csv"  End Sub

noname#96255
質問者

お礼

ActiveWorkbook.FollowHyperlink 大変参考になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • VBAでCSVファイルを分割したい

    VBAを利用して、あるCSVファイルを一定のレコード数ごとに新しいファイルにファイル分割したいです。 やりたいことは、以下のようなイメージです。 関連サイトなどを参考に自分なりに取り組んでみましたが、なかなかうまくいきません。 VBAでなくても実現できそうですが、ここまでやったので勉強のためにもVBAでやりたいです。 サンプルコードなど教えていただけるとうれしいです。 ヒントでも結構ですので、よろしくおねがいします。 (2レコードずつ分割する例) sample.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666 ↓↓↓ ☆sample_1.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4   →各ファイルにヘッダも入れたいです。 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ☆sample_2.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 ☆sample_3.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666

  • ネットからcsvファイルをvbaでダウンロード

    vbaでhttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13100002068と同じような事がしたいのですが、 ダウンロードしたいcsvファイルのパスはどうやって調べれば良いのでしょうか? リンク先では csvUrl = "http://WWW.***.com/***/sample.csv" 'csvファイルのある場所 となっています。 私がダウンロードしたいファイルは、 「analysis.fc2.com」の「fc2analyzer_0_2014-2.csv」なのですが csvUrl = "http://analysis.fc2.com/fc2analyzer_0_2014-2.csv" myFile = "C:\sample.csv" 'csvファイルの保存先とファイル名 retVal = URLDownloadToFile(0, csvUrl, myFile, 0, 0) If retVal <> 0 Then Exit Sub 'ファイルを開く Workbooks.Open myFile としても、-2146697210 が返り失敗します。 パスの取得方法を教えてください。

  • Access VBA TransferTextについて

    すみませんAccess初心者です。 VBAのTransferTextでCSVファイルをAccessnoデータベースにインポートしようとしてるのですが、 あるフィールドが400バイトのデータがある場合は 255バイト目までしかインポート出来ないようになっているのでしょうか? もしそうであれば、他にインポートする方法はありますか? CSVファイルを1行ずつ読み込み、1フィールドずつテーブルに格納するという処理を行わなければいけないのでしょうか? よろしくお願いいたします。

  • EXCEL2000 VBA CSVファイルの読み込み

    エクセル2000です。 VBAでCSVファイルを読み込もうとしているのですが、CSVファイルの一部に改行コード[*]が入っています。 そのまま読み込んだ場合、エクセルの中では改行されません。CSVファイル(文字列)を精査していって、[*]があれば、VBでの改行コードChr(10)に変換する方法でいけるのでしょうか。 Workbooks.Open   Filename:="C:\temp\sample.csv" Range("A2:J901").Select このsample.csvの中身を変換したいのですが。 よろしくお願いします。

  • C++でのcsvファイル読み込みについて

    C++でのcsvファイル読み込みについて質問です. 読み込みcsvファイルの規模は300*1000として,その情報をdouble型の2次元配列に格納したいですが,ネットでいろいろ調べたり自分でコードを作ってみてもabort()has been calledなどいくつかエラーが表示されてしまい先に進めません. csvファイル名をa.csv,格納したい2次元配列をA[300][1000]などとしてサンプルコードを提供してくださいますと幸いです. 質問前に散々調べましたがプログラミング初心者でして今現在の力では対応できませんでした.申し訳ありませんが何卒ご教示お願いします.

  • VBA 複数Word→PDF変換→Zip圧縮

    同一ファイル複数のWordファイルを全てPDFに変換した後、できあがったPDFをまとめてZipで圧縮しするVBAを考えています。 VBA初心者ですが、このやり方で業務効率化ができればと考えています。 良い方法があれば教えてください。

  • 複数のcsvファイルを1つのEXCELファイルにマージするVBAを教えてください

    csvファイル数は700~1000個程度でひとつのフォルダに格納されています。 このファイルをEXCEL形式で開くと、1行目にフィールド名(A~Z列で固定)、2行目以降にデータが入っています。行数はファイルにより1~100行程度で変動します。 このファイルを1つのエクセルファイルの同一シートに結合(マージ)するVBAがほしいです。 ここで、(できればですが)EXCELにマージするにあたり、1行目のみフィールドの値、2行目以降にそれぞれのcsvの2行目以降データの値を入れていくようにしたいです。つまり、フィールド名の行が何行も出てくるのを避けたいです。 申し訳ございませんが、ご指導いただけたら幸いです。よろしくお願いします。

  • VBAでファイル名を変更したい

    EXCEL2003のVBAでブックを連続して保存をするものを作成したのですが、スキルが足りないため、ファイル名が数字になってしまい、リネームをしたいのですが、出だしからつまずいております。 リネームをしたいブック(ファイル)は一つのフォルダに入っており、 excelのシートには旧ファイル名と新ファイル名の一覧をつくり VBAを実行すると一覧に載っているブック名が変更される というものを作りたいのですが、可能でしょうか。 一覧は 旧ファイル名  新ファイル名 1.xls      1北海道.xls 2.xls      2青森.xls という感じです。 フリーのリネームソフトではなく何とか自力でやりたいと思っております。 お力をお貸しください。 よろしくお願いいたします。

  • CSVファイルを読み込み、ファイル名を変更。

    CSVファイルを読み込み、ファイル名を変更。 使用言語はperlです。perlは初心者です。 アルゴリズムが、 CSVファイルを読み込み→2次元配列に格納→ファイル名変更 という流れになっているプログラムを作成中です。 CSVファイルの中身は あ.txt , a.txt い.txt , b.txt う.txt , c.txt です。 CSVファイルを読み込み2次元配列に格納するプログラムは以下のようにしました。 ----------------------------------- $i= 0; open IN, "sample.csv"; while (<IN>) { my @data = (); @data = split (/,/); for (0..@data) {$jdata[$i][$_] = "$data[$_]";} $i++; } close IN; ---------------------------------------- 「あ.txt」を「a.txt」に変更しようとして、この中に rename $jdata[0][0] , $jdata[0][1] ; と書いてみましたが、変換されません。 どう書けばよいのでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう