質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

61409閲覧

VBAでWorkbooks("")の中身は絶対パスの指定って出来ないのでしょうか?

nissanngtr34

総合スコア24

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/10/08 04:45

Workbooksの括弧の中身が○○.xlsなら指定できるのですが、

Workbooks("aa.xls").Sheets("bb").Activate

.xlsがある場所を絶対パスで指定するとインデックスが有効範囲にありませんとメッセージがでて指定できません。

Workbooks("C:\Users\aa.xls").Sheets("bb").Activate

絶対パスの指定はできないものなのでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Workbook オブジェクトの指定は 「名前またはインデックス番号を指定します」とありました
Workbook オブジェクト (Excel)

名前(ファイル名)なので、パス情報が付加されることは想定されていないのではと思います

"C:\Users\aa.xls"と指定した場合、恐らくそういう名前のブックを探しにいってるのでしょう
今開いていない適当な名前を与えても同じエラーが出るので

投稿2015/10/08 05:18

takito

総合スコア3116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nissanngtr34

2015/10/08 05:31

ご返答ありがとうございます。 ファイル名しか指定できないんですね。。。 閉じているブックを開いて、シートをコピーし、貼り付け先のブックに貼り付け、 コピー元のブックは必要ないのでブックを閉じたく。 コピー元のファイル名は常に変わってしまうので、ファイル名で指定をするということができず。。。 絶対参照からパス情報を抜き取る方法ってありますでしょうか? よろしくお願い致します。
nissanngtr34

2015/10/08 05:41

自分なりに思いついた方法は文字列から抜き出す手法で、右から必要な文字列分だけ残すという方法で試してみました。 一応これでうまくいきましたが、このような方法しかないでしょうか? fn = Strings.Right(fn, 19) Workbooks(fn).Close
swordone

2015/10/08 05:43

その場合,Workbooks.Openを使うのではないでしょうか?
takito

2015/10/08 05:48

コピー元ブックを開くためのパス情報でしょうか? 絶対参照とおしゃるのが絶対パスのことと思いますが、コピー元?コピー先?どちらのブックのでしょう?
nissanngtr34

2015/10/08 05:52

Workbooks.Openでフルパスで指定して開くことはできました。 fn = "フルパス" Workbooks.Open Filename:=fn アクティブになっているのがコピー元のほうであればActivebooks.Closeすれば閉じてくれますが、コピー先がアクティブになっていまして。 コピー元のブック名に日付などが入り、変化する仕様になっている為、 ファイル名で指定できず、フルパスで指定したくてもできず。。。といった感じです。
nissanngtr34

2015/10/08 05:55 編集

失礼しました。 絶対パスを指定したいのは、コピー元です。 例えばブック名_1008.xlsなど日付が入って変化してしまいます。 そのコピー元のシートをコピーするとこまでは出来ましたが、コピー完了後、ブック名が変わってしまうのでcloseが出来ず。
swordone

2015/10/08 05:57

フルパスで開いたWorkbookをWorkbookオブジェクトにSetして,後でそのオブジェクトをCloseする方法はどうですか?
takito

2015/10/08 06:07

swordone さんのおっしゃっているのはこんな感じですね --- Dim wb As Workbook Set wb = Workbooks.Open("フルパス") ・・・シートコピーとかの処理・・・ wb.Close ---
nissanngtr34

2015/10/08 06:09

あ、その方法でできるのですね。 試してみます。ありがとうございます!
nissanngtr34

2015/10/08 06:12

具体的に書いて頂きありがとうございます。 確かにフルパスが無理ならコピー元をオブジェクトにしてしまい、必要なくなったらこのオブジェクトを閉じればよいのですね。 一つ身に付きました。ありがとうございます。
takito

2015/10/08 06:17

解決できてなによりです! swordone さん、ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問