ここから本文です

Excel Vbaにお詳しい方に質問です。

アバター

ID非公開さん

2018/8/1815:51:23

Excel Vbaにお詳しい方に質問です。

あるフォルダの一番上の階層のExcelファイルに下記コード
を書き、一つ下の階層のサブフォルダに Test1.xlsxがあるか
検索して該当するExcelファイルが見つかった場合開きたい
と考えておりますが、動きません。
『アプリケーション定義またはオブジェクト定義のエラーです 1004』
と出てしまい動きません。
(下記コードはネットで調べたものです。)

サブフォルダは複数のフォルダが存在する事を想定して
おり、フォルダの階層は親フォルダと子フォルダの二階層
を想定しています。

Sub Test1()

Dim fName As String
Dim mPath As String
Dim i As Long

mPath = ThisWorkbook.Path
fName = "Test1.xlsx"
i = Len(mPath) - Len(Replace(mPath, "\", ""))
If i > 1 Then
mPath = Mid(mPath, 1, InStrRev(mPath, "\") - 1)
Workbooks.Open mPath & "\" & fName

Else: MsgBox "ファイルが見つかりません"

End If

調べてみたのですが、私に知識が無く問題点が良く
分かりませんでした。

どなたか、問題点がお分かりになる方がいらっしゃいましたら
どうすれば動くのかご教授頂ければ幸いです。

よろしくお願いいたします。

閲覧数:
62
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

tam********さん

2018/8/1816:48:59

こんにちは。

ご提示のコードは、実行ファイルと同じフォルダにあるファイルを探しているので、ご要望通りにならないのだと思われます。

以下のコードでどうでしょうか。

Sub Test1()

Dim fName As String 'ファイル名
Dim sFolder As Object 'サブフォルダ
Dim dFile As Object '発見ファイル
Dim flg As Boolean 'フラグ

fName = "Test1.xlsx" 'ファイル名設定
flg = False 'フラグ初期化

With CreateObject("Scripting.FileSystemObject") 'FSO生成

For Each sFolder In .GetFolder(ThisWorkbook.Path & "\").SubFolders '実行ファイルがあるフォルダのサブフォルダコレクションを走査

For Each dFile In sFolder.Files 'サブフォルダのファイルを走査

If dFile.Name = fName Then 'ファイル名が一致すれば
flg = True 'フラグ立てる
Workbooks.Open (dFile) 'ファイル開く
End If

Next dFile

Next sFolder

End With

If flg = False Then MsgBox "ファイルが見つかりません" 'フラグが立っていなければメッセージ

End Sub

  • アバター

    質問者

    ID非公開さん

    2018/8/1819:34:32


    tam********さん
    ご返答ありがとうございます、教えて頂きました
    コードで無事動きました!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

hig********さん

2018/8/1816:29:17

補足要望
>フォルダの階層は親フォルダと子フォルダの二階層を想定しています。
エクセルブックのあるフォルダの、子フォルダと孫フォルダを調べるという意味ですか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

wyb********さん

2018/8/1816:21:53

まずこのコードにはEnd subがありません。
そしてTest1.xlsxがあるべき所は本コードが入っている上の階層です。(逆です)
一つ下の階層にどんな名前のフォルダがあるのかを調べているコードでは無いので開く事は出来ません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる