- ベストアンサー
excel vbaで今開いたばかりのファイルのパスを取得したい
お世話になっております excelで「今開いたシート名までのパス」を取りたいのですが、方法がわかりません 現在 For FileNo = 1 To .FoundFiles.Count(あるフォルダの中にある) *************** For intNum = 1 To intSC(ファイルの中のシートを端から開いて作業する) *************** というようにfor nextであるファイルのあるシートを指定して作業するようになっています いったん、別のファイルを選択してからまたこの開いたシートに戻る必要があるため、この直前に開いたシートのパスが必要なのです 「ThisWorkbook.Path」などではコードが書いてあるファイルのパスになってしまいます どうか教えていただけると大変助かります 宜しくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
.FoundFiles.Countを使える人が、 >Workbooks.Open "myBook.Path & " \ " & myBook.Name" こんな書き方をするとはちょと信じられませんが。。(^^;;; という突っ込みは置いといて。。 myBook.PathとかmyBook.Nameは変数ですので(定数ではない) ””で囲む必要はありません。 ¥ だけを囲みます。 Workbooks.Open myBook.Path & " \ " & myBook.Name もしこれでエラーがでるようでしたら、質問者のコードを全て提示してください。 その方が解決が早いでしょう。
その他の回答 (2)
- onlyrom
- ベストアンサー率59% (228/384)
>別のファイルを選択してから >またこの開いたシートに戻る必要があるため >この直前に開いたシートのパスが必要なのです この文言ではいくつか受け取り方がありますが、 それは無視して、パスの取得方法のための回答 ●のコードを追加する '----------------------------------------- ● Dim myBook As Workbook For FileNo = 1 To .FoundFiles.Count ● Set myBook = Workbooks.Open(.FoundFiles(FileNo)) For intNum = 1 To intSC ************ '------------------------------------------- 開いたブックのパス: myBook.Path 開いたブックのフルパス: myBook.Path & "\" & myBook.Name 開いたブックの選択: myBook.Select 但し、このオブジェクト変数myBookをどこで使用するかで、 宣言場所が違ってくるのは言うまでもありません。 以上。
お礼
すいません Workbooks.Open "myBook.Path & " \ " & myBook.Name" とすると「型が一致していません」というエラーがでます 色々やってみたのですが、どうしてもできませんでした そしてそこからシートを指定する方法がわかりませんでした でも、ご回答いただきありがとうございました 理解が足りず申し訳ありません
- notnot
- ベストアンサー率47% (4900/10358)
>別のファイルを選択してからまたこの開いたシートに戻る必要があるため、 ファイルオブジェクトないしシートオブジェクトを変数に保存しておけばいいのでは? パスは別に必要じゃないです。
お礼
すいません。 変数にいれるためのファイルオブジェクトないしシートオブジェクトの書き方が違っているらしくどうしてもできません ご回答いただきありがとうございました いただいたお答えを参考にもう少しオブジェクトについて調べてみたいと思います
お礼
ありがとうございました シートの選択もやっとなんとかできました もっとスマートな書き方があるだろうとは思いましたが とりあえず急ぎだったので今回はこれでよしとします すぐに対応していただき、またご指摘いただき大変ありがとうございました