• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルを開くマクロ)

ファイルを開くマクロでフォルダ(A)の中のエクセルファイル(b)を開く方法

このQ&Aのポイント
  • フォルダ(A)の中にあるエクセルファイル(b)を開くマクロを作成しましたが、ファイルが見つかりませんとなってしまいます。
  • フォルダ(A)は場所を移動して使う予定で、マクロがうまく動かないため困っています。
  • フォルダ(A)内のエクセルファイル(b)を正しく開く方法について教えてください。

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

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

こんばんは。 このコードでつまづくようでしたら、サブルーチン化は避けたほうがよいと思います。 もちろん、モジュールレベル変数などが分かっていらっしゃるなら良いのですが……。 今回は、サブルーチンで、明示的に渡すようにさせました。 >  myWBPath = Workbooks(1).Path & "\" ' >  myWBName = Workbooks(1).Name それから、この部分は、上手くありません。ただ、現在、与えられた情報からでは変更出来ませんが、せいぜい、ActiveWorkbook 程度です。Workbooks(1)というのは、ブックを開いた順番の最初のものという意味です。それを認識してコードを書いていれば問題はありませんが、それは、一定しているとは思えません。ブック名を入れない限りは、ActiveWorkbook やThisWorkbook とか、明確にしたブックを指定したほうがよいです。 サブルーチンは、コードの融通性とメインコードの構造の明確化が目的ですから、あまりきれいにまとまっているとは思えませんが、それはやむを得ないと思います。 (こういう凝ったコードは嫌う人もいるかもしれません。元のコードよりも、ずっとややこしくなっていますから、間違いやすくなってしまいますが、ひとつのサブルーチンの例です。) '------------------------------------------- Sub CCC() Dim myWBPath As String Dim myWBName As String Dim fName As String   s_PathCheck myWBPath, myWBName   fName = myWBPath & "b.xls"   If Dir(fName) = "" Then MsgBox "ファイルが見つかりません。", vbExclamation: Exit Sub   With Workbooks.Open(Filename:=fName)    Application.Goto .Worksheets("P").Range("A11")   End With End Sub Sub s_PathCheck(myWBPath As String, myWBName As String)   Dim myWBNameF As String   Dim n As Integer   myWBPath = Workbooks(1).Path & "\" '←明示的にしてください。   myWBNameF = Workbooks(1).Name   n = InStr(1, myWBNameF, ".xls", vbTextCompare)   'ピリオドだけなら、テキストコンペアは必要ありません。   myWBName = Left(myWBNameF, n - 1) '←ここは使われていません。 End Sub '----------------------------------------

ymasamasa
質問者

お礼

参考になりました

その他の回答 (7)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.7

> こうでした。 > Sheets("P").Range("A11").Select このような記述は、ダメですよ!! 質問されている方の方が、正しいかと・・・

noname#130090
noname#130090
回答No.6

ANo.5間違えました。 こうでした。 Sub CCC()   Workbooks.Open Filename:=ThisWorkbook.Path & "\b.xls"   Sheets("P").Range("A11").Select End Sub

noname#130090
noname#130090
回答No.5

Sub CCC()   Workbooks.Open Filename:=ThisWorkbook.Path & "\b.xls" End Sub CCCはこれでいいのでは?

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>Sub CCC()   >s_PathCheck '正しくパスを含むファイル名が取得されているか確認すれば MsgBox myWBPath & "b.xls" >Workbooks.Open Filename:=myWBPath & "b.xls"

noname#130090
noname#130090
回答No.3

試しにやってみましたら開けました。 おそらく、ファイルbの名前か拡張子に問題があるのでは? ファイルbの名前をフォルダの中を見る画面で 「b」ではなく「b.xls」にしてみてください。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>Workbooks.Open Filename:=myWBPath & "b.xls" Workbooks.Open Filename:=myWBPath & "\b.xls"

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

myWBPathとmyWBNameがモジュール変数かパブリック変数としてちゃんと宣言されていると言う前提ですが、以下の様に変更すれば動きませんか? Workbooks.Open Filename:=myWBPath & "b.xls" ↓ Workbooks.Open Filename:=myWBPath & "\b.xls"

関連するQ&A