
VBAについての質問です。
マクロが保存されているエクセルと同じフォルダにあるエクセルファイルを全て開くマクロをつくりたくて、以下のようにしました。
Dim filename As String
Dim openedbook As Workbook
Dim isbookopen As Boolean
filename = Dir(ThisWorkbook.Path & "*.xls")
Do While filename <> ""
If filename <> ThisWorkbook.Name Then
isbookopen = False
For Each openedbook In Workbooks
If openedbook.Name = filename Then
isbookopen = True
Exit For
End If
Next
If isbookopen = False Then
Workbooks.Open (filename)
End If
End If
filename = Dir()
Loop
エラーはでないのですが、ファイルは1つも開きません。何がだめなのかを教えていただきたいです。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
こんにちは
ファイルパスの「\」その他に関しては、既に指摘の出ている通りですね。
一方で、開いているブックとのチェックを
>For Each openedbook In Workbooks
で行っていますが、毎回ループでチェックしなければならないのと、ブックを開くごとにチェック対象が増えてゆく(実際は、新しく開いたブックのチェックは不要)という欠点があります。(別に、間違った処理にはなりませんけれど)
さらには、このチェックは、
>If filename <> ThisWorkbook.Name Then
とも重複していることになります。
(Workbooksには、ThisWorkbookも含まれているので)
最初にDictionaryオブジェクト等に、既オープンのブックをリスト化するなどしておくことで、チェックを単純にできるものと考えられます。
また、ロジックを単純化できると、IFのネストやループのネストも減るので、視認性もよくなると思われます。
以下、ご参考までに。
Sub Sample_12047309()
Dim fList, f
Dim folderPath As String, fileName As String
folderPath = ThisWorkbook.Path & "\"
Set fList = CreateObject("Scripting.Dictionary")
For Each f In Workbooks
fList.Add f.Name, ""
Next f
fileName = Dir(folderPath & "*.xls")
While fileName <> ""
If Not fList.Exists(fileName) Then _
Workbooks.Open (folderPath & fileName)
fileName = Dir()
Wend
End Sub
No.5
- 回答日時:
とりあえず、修正しておきました。
動作確認済みです。
Public Sub sample()
Dim filename As String
Dim openedbook As Workbook
Dim isbookopen As Boolean
filename = Dir(ThisWorkbook.Path & "\*.xls")
Do While filename <> ""
If filename <> ThisWorkbook.Name Then
isbookopen = False
For Each openedbook In Workbooks
If openedbook.Name = filename Then
isbookopen = True
Exit For
End If
Next
If isbookopen = False Then
Workbooks.Open (ThisWorkbook.Path & "\" & filename)
End If
End If
filename = Dir()
Loop
End Sub
ありがとうございます!
最初に私が訂正してたのは不十分だった用で、書いていただいた通りに訂正したら無事にできました
御丁寧にありがとうございました!
No.4
- 回答日時:
>filename = Dir(ThisWorkbook.Path & "*.xls")
これについては 他の方の指摘どり \ が無い
しかし この一行は ループの外にあり
”全て開く” 事は出来ないよな
基本的な事をまったく理解されていないように思われます
Dir関数をなかなか理解できずにうなっていたのを見透かされましたね笑
より正確に思ったものを作れるようになるためにご指摘の通り基本を学び直したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
ウインドウズXP2台とME1...
-
ファイルの並び順が勝手に変わる
-
ソフト探し
-
98のサーバーへ2000でア...
-
PCカードのドライバ(socketsv....
-
Excelのシート名で検索はできま...
-
IE5.5を使用中に突然例外OEが発...
-
スキャンディスクができません
-
Samba で新規作成したファイル...
-
ウィンドウズ8 でフォルダー内...
-
Not kind:Folders
-
隠しファイル
-
Apoint2Kってスパイウェアでし...
-
Ububtuでファイル共有できない...
-
batファイルで
-
Windows7でiniファイルが作成さ...
-
フォントのバージョンを下げたい
-
デスクトップ上に同じフォルダ...
-
VBAで、㉑という数値が、正しく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
excelで
-
エクセルの数式で教えてください。
-
VBAで同一フォルダにあるブック...
-
~$のファイルを含まずにフォル...
-
【再】MATLABのcsvreadについて
-
フォルダ名表示をするには?
-
常に「すべての列のサイズを自...
-
Not kind:Folders
-
検索したファイルの場所を調べ...
-
タスクスケジューラで指定フォ...
-
ファイル並び順がバラバラで困...
-
Ububtuでファイル共有できない...
-
Win 10エクスプローラーについ...
-
System32内のファイルを書き換...
-
VB.net 任意の例外を発生させ...
-
シャットダウン時に自動ファイ...
-
拡張子KIHを見るソフトって有り...
-
ショートカットファイルそのも...
-
貼り付けとショートカットの貼...
おすすめ情報
Doの行からとばされました
そのように変更しても変わらずです泣