• ベストアンサー

エクセルVBAでセルに入力したパスでブックを開く

Excel2013で、あるファイルを使用している時に、別のブックを開きたいとして、 例えば、D:\oshiete\Desktop\2014年\開きたい.xlsm とT6セルにいれてあり、VBAを読み込むと開くようにするにはどうすればよいでしょうか? はじめに、エラー回避でファイルが存在しているのと、まだ開いていないことを確認してから動かしたいです。 色々やってみたけどうまくいかなかったので、よろしくお願いいたします。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

>VBAを読み込むと開くようにする すいません、ブックを開いたときに同時に開くではなく、 VBA読み込み時に開く場合は VBEから、挿入→標準モジュールで標準モジュールを挿入し 以下のコードを貼り付けてください。 Alt+F8または表示→マクロから「指定ファイルを開く」を選び実行で T6セルのファイルを開きます。 コードの内容はNo1と同じものですが、補足致します。 末尾「'★」は同様で、末尾「'☆」の行の「T6」を変更することで 対象のセルアドレスを変更できます。 ■VBAコード Sub 指定ファイルを開く() Dim i As Integer Dim filepath As String filepath = Range("T6").Value '☆ If Dir(filepath) = "" Then   MsgBox filepath & vbCrLf & "はファイルが見つかりません。" '★   Exit Sub End If For i = 1 To Workbooks.Count   If filepath = Workbooks(i).FullName Then     MsgBox filepath & vbCrLf & "は既に開いています。" '★     Exit Sub   End If Next i Workbooks.Open Filename:=Range("T6").Value End Sub

hinoki24
質問者

お礼

問題なくバッチリ動作しました。 どうもありがとうございました。

その他の回答 (1)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

Alt+F11でVBEを開き、 ThisWorkbookを右クリック→コードの表示を選択し 表示されたウィンドウに下記のVBAコードを貼り付けて VBEを閉じてください。 上書き後開き直すと、T6セルのパスを開きます。 (添付画面を参考にしてください) ファイルが存在しない場合、ファイルが開かれている場合に ダイアログを表示します。 ダイアログを表示させたくない場合は行末に「'★」を記述 している1行を削除してください。 ■VBAコード Private Sub Workbook_Open() Dim i As Integer Dim filepath As String filepath = Range("T6").Value If Dir(filepath) = "" Then   MsgBox filepath & vbCrLf & "はファイルが見つかりません。" '★   Exit Sub End If For i = 1 To Workbooks.Count   If filepath = Workbooks(i).FullName Then     MsgBox filepath & vbCrLf & "は既に開いています。" '★     Exit Sub   End If Next i Workbooks.Open Filename:=Range("T6").Value End Sub

関連するQ&A

  • Excelvbaでブックをコピー名前翌月に変更

    Excel2013で開いているブックを丸ごとコピーして、コピーしたブックの名前の月を翌月に進めたいのですが、どうすればよいでしょうか? 現在は、とりあえず以下のような感じで一応コピーはできますが、名前は固定です。 「2014-11月.xlsm」のブックコピーのvbaを実行すると、「2014-12月.xlsm」のブックが作成され、、「2014-12月.xlsm」のブックのvba実行で、、「2015-1月.xlsm」のブックができるようにしていきたいです。 どうすれば実現できるでしょうか? Sub ブックコピー() ThisWorkbook.SaveCopyAs "D:\***\Desktop\サンプル\2014-12月.xlsm" End Sub

  • Excel VBA ブック内にエラーがあるかないか

    Excel VBA で、ある特定のセルが#REFなどのエラーになっているかどうかは If IsError(ThisWorkbook.Worksheets("Sheet1").Range("AB1256")) Then  MsgBox ("ファイルのデータが壊れています") End If というように、IsError()関数を使えば確認できます。 また、あるセル範囲の中にエラーになっているセルがあるのかどうかも、For文やFor Each文で順番にチェックしていけばできると思いますが、 シート全体、さらにはブック全体の中で、エラーになっているセルがあるのかないのかを簡単にチェックする方法はないでしょうか。エラーになっているセルは特定できなくてもいいです。 よろしくお願いします。(Windows7 , Excel2010)

  • ブックを開いて閉じるVBA

    初めまして、ブックを開いて閉じるループのVBAについて質問させてください! 別添の画像のようなブックAの中に、「りんご」のように名前のついたシートが複数あります。(この数は変動します。来月は「ぶどう」が入るかもしれないし、「りんご」がなくなるかもしれません。) そして「新しいフォルダ」という名前のフォルダに、別添の画像のようにいくつかブックAのシートの名前を含むファイルが入っています。別添画像のように、シートの名前は必ず含むものの、ファイル名はバラバラで、「すもも」のようにシートにはないものもあります。そして、「みかん」のようにシートにあるのにファイルがない場合もあります。 このうち、ブックAに存在するシートの名前を含むファイルのみ開いて閉じるというループのVBAを入力したいのですが、どうすればよいのでしょうか…?!ちなみに、「すもも」のようにブックAに存在しないシートの名前のファイルは開かないでおきたいです。 「みかん」のようにシートはあるがファイルがない場合は、エラーを出さずそのまま次の処理をすすめたいです。 ちなみに、「新しいフォルダ」の存在する場所は 「C:\Users\PC〇〇〇\Desktop\新しいフォルダ\」です。 VBA初心者なので、なるべく簡素なものにしたいと思っています。 ご助力いただけると大変嬉しいです…!よろしくお願いいたしますm(_ _)m

  • 複数のExcelブックから特定シートのセル範囲抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル範囲を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 このサイトで殆どよく似た回答を読んだのですがうまくいきません。VBA初心者です。 よろしくお願いします。 【前提】 ・実行する端末のOSはWindows 10 ExcelはOffice365 ProPlus ・対象フォルダはネットワーク接続フォルダ  この中に、複数のExcelブック(xlsx、xlsm)があります。 ・抽出したい対象は、各ブック内の「台帳」シートの「A3:Cの最終行」で  複数のブックの中には「台帳」シートが含まれていないブックも混在しています。 【抽出一覧作成イメージ】 ・「集約.xlsm」ブックの「集計」シートの2行目から抽出した結果を一覧表示する。 ・「集約.xlsm」ブックにマクロは登録する ・表示はA列に抽出元ブック名(=ファイル名)、B列からD列に抽出元「A3:Cの最終行」セルの値。 ・「A3:Cの最終行」セルの値を「集約.xlsm」ブックの「集計」に貼り付ける際には「値で貼り付ける」が望ましい。

  • エクセル(VBA)のブック間でのコピーペーストについて

    こんにちは。VBA入門レベルのものですが、質問させてください。 ブックAとブックBを開いた状態にし、 ・ブックA⇒VBAを組む&データ貼付け先 ・ブックB⇒データコピー元 ブックBの特定セル(例:D10)からブックAの特定セル(例:E12)にコピー⇒貼付 する方法を探しています。 なお、ブックBは、ブック名とシート名が都度変わるので、「ブックAではない方の開いているエクセルファイルからデータをコピーし、ブックAに貼付ける」の構文にしたいです。 また、コピペの他に数式(イコール)で飛ぶ方式でもかまいません。 この内容でのVBAの記述方法が分かる方、どなたか教えて頂けますでしょうか。 すみませんがよろしくお願いいたします。 ※エクセル2003です。

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

  • エクセル 未入力セルがあると保存できない設定

    エクセルVBAで、入力必須項目を設定し、未入力セルがある場合は保存ができないようにしたいのですが教えていただけませんか。 ブックには複数シートが存在し、入力必須項目を設定したいのはsheet1のみ。 sheet1のA1,A5, A9, B1, B5, B9の6つのセルはすべて必須入力。 未入力がある場合はファイルを閉じる時に保存が出来ないようにする。 出来ればどのセルが未入力なのかエラーメッセージが出るとベスト。 6項目すべて入力できていれば通常通りファイル保存して閉じることができる。 このブック作成者がブック作成、変更ができるようにしたい(ファイルを作成、変更する時はブランクなのでエラーメッセージが出てファイル保存ができないため)。

  • 複数のExcelブックの可視セルを統合VBA

    いつもお世話になっております。 複数のExcelブックの可視セルのみを、別のブックの1つのシートに統合することはできるのでしょうか? やりたいことは、始めに複数人に同一ファイルを配布し、1つのフォルダにそれを纏め、各担当者ごとでフィルタを掛けた部分(可視セル)だけを1つのブックの2シート目(1シート目はAccessにリンクさせています)に纏めたいと思っております。 ファイルは、1行目に集計・2行目に各項目があり、必要データは3行目からです。 VBA初心者の為、どなたかおわかりになる方いらっしゃいますでしょうか? 宜しくお願いいたします。

  • ExcelのVBA、セルについて教えて下さい

    セル内容の比較についてのマクロで教えてください。 まずブックAとブックBという2つのワークブックがあります。 ブックAのD4セルにはS144A03といったよな数字と英語が入っています。 ここからが行いたいことなのですが ブックAでマクロ実行 ⇒ ブックBを開きシートAを選択 Application.InputBoxでブックBのシートA内のセルを選択してOKを押した時 ブックAのD4セルの内容とApplication.InputBoxで選んだセルの内容が同じなら”認証OK” 違う場合は”認証NG”とMsgBoxで表示されるようにしたいです。 認証後はどちらの結果であってもブックBの方は閉じてしうまう形にしたいです。保存の確認はいりません。 ご指導のほどよろしくお願いします。

  • エクセルVBA ハイパーリンクを別ブックに

    皆さんこんにちは。 エクセル2013使用のVBA初心者です。 ふと「出来るのかな?」と思ったことを質問しておりますので とんちんかんな内容でしたらごめんなさいです。 現在book1.xlsmのユーザーフォームで記入した内容を book2.xlsxの特定のセルに反映させるマクロがあります。 book2にハイパーリンクを施してデータが格納してあるフォルダーに 飛ぶようにしたいのですが 直接book2に個人個人が記入すると誤ってデータを消されてしまう可能性があるので 出来るだけbook2は閲覧とハイパーリンクをクリックするのみにしたいのです。 book1のユーザーフォームに (1)ハイパーリンク先を指定するテキストボックスのようなものを設ける (2)book2の特定のセルに(1)で記入したハイパーリンクを反映させる という事は可能ですか?

専門家に質問してみよう