VBAのPathという考え方が理解できません。 コードで、Workbooks.Open Filename:=ThisWorkbook.Path & "¥旧見積.xls"

Visual Basic | Excel118閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

ThanksImg質問者からのお礼コメント

なるほど。分かりやすい解説ありがとうございました。

お礼日時:10/18 14:24

その他の回答(3件)

0

多分、わかりにくいと思いますがごめんなさい・・・・ Excel2019(365)のオブジェクトブラウザで調べてみるとたとえば、Excel2019(365)使える「Path」は、全部で5つあり、すべて、「プロパティ」と呼ばれる命令(あるいは設定値)に属します。 以下の5つです。 Application.Path AddIn.Path AutoRecover.Path RecentFile.Path Workbook.Path それぞれ、イミディエイトウィンドウに「Path」の内容を表示するには、以下のように試します。 ? Application.AddIns.Item(1).Path C:\Program Files (x86)\Microsoft Office\root\Office16\Library ? Application.Path C:\Program Files (x86)\Microsoft Office\Root\Office16 ? Application.AutoRecover.Path C:\Users\user01\AppData\Roaming\Microsoft\Excel\ ? Application.RecentFiles.Item(1).Path C:\Users\user01\Desktop\q一括行 - コピー.xlsm ? Application.Workbooks.Item(1).Path C:\Users\user01\Desktop 基本的に、オブジェクトの階層構造をしっかり書かないとエラーになります。 が、 「グローバル」という種類に属するオブジェクトのプロパティは階層構造を省略してもエラーになりません。 上記の例で言うと、 AddIn.Path Workbook.Path Application.Path です。 AutoRecover.Path RecentFile.Path の2つは、「グローバル」という種類に属さないオブジェクトなので、「Application.」という階層(=上位のすべての階層)を省略して書くと「オブジェクトが必要です(省略すんなよ!)」というエラーになります。 「グローバル」という種類に属すか属さないかは、オブジェクトブラウザで「グローバル」を調べると、そこに載っているものはグローバル、です。 つまり、「省略書き」ができます。 また、 AddIn Workbook RecentFile といった単一のオブジェクトは、対になるコレクションオブジェクトが居るので、 「階層.コレクション名.Item(番号)」とか 「階層.コレクション名.Item("名前")」みたいに書かないと、 これもエラーになります。 AutoRecover のように、対になるコレクションオブジェクトが居ない=存在しない単一オブジェクトの場合は、 「.Item(番号)」みたいなのはつけなくてもエラーになりません。 なお、「.Item」は省略可能です。 ただし、ExcelでもWordでもAccessでも「階層構造や.Itemなど」を省略できますが、 省略ばっかりしてると、まったく上達しません。 バカになります。 (応用が利かず、初心者本より難しいことがまるでできなくなる)

Application.Workbooks.Item(1).Path は ThisWorkbook.Path ActiveWorkbook.Path と書くこともできます。 つまり、 Application.Workbooks. の部分を ThisWorkbook. ActiveWorkbook. で代用してもいい、ということになっています。 ただ、状況によっては「望まない値を返してくる」ので注意が必要です。 なお、 ThisWorkbook. ActiveWorkbook. も「グローバル」に属します。

0

〇〇.Path ○○がしまってある場所(・住所・本棚等)となるのかなぁ。 "旧見積.xls" がどこにあるのかをExcelには教えなきゃいけない。 それをドライブ名から全て書くよりも >ThisWorkbook.Path とすればマクロを実行しているBookが保存されているフォルダ内を基準として指定できる。

0

例えば、 「その、今開いているエクセルファイル、どのフォルダに置いてあるの?」 「このファイルは、Dドライブの2021っていうフォルダに入れています。」 という会話に現れる、 D:\2021 という、Excelブックがある場所だったり、保存するためのフォルダ名だったりを取得したり設定したりするための場所を表したものです。 質問の例でなら、今開いているブックが「D:\2021\hoge.xls」だとすると、「見積.xls」は「D:\2021\見積.xls」になり、「ThisWorkbook.Path」で「D:\22021」が得られるということです。 こんな説明で解りますか?