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.3
- 回答日時:
> Workbooks.Open (filename)
を
Workbooks.Open (ThisWorkbook.Path & "¥" & filename)
にしてみたら?
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.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
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
同一フォルダ内のファイルを開く
Excel(エクセル)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
-
4
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
5
ExcelVBAでカレントディレクトリのファイルを開く方法は?
Excel(エクセル)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
EXCELでワークシートを開いたらマクロを自動実行したい
Excel(エクセル)
-
8
EXcelマクロで同じフォルダ内のファイル全て開く。ドライブまたいでも対応
Android
-
9
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
10
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
11
EXcelのマクロで相対パスでファイルを開く
その他(Microsoft Office)
-
12
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
13
VBAでセル値からフォルダ名を取得するコードについて
Excel(エクセル)
-
14
同一フォルダ内の別ブックからシートをコピーするには? 「集計」フォルダ内に「項目別集計.xlms」と
Visual Basic(VBA)
-
15
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
パイソンでエクセルマクロを動...
-
google Drive 容量を減らせない...
-
常に「すべての列のサイズを自...
-
ショートカットファイルそのも...
-
PSP内で文字化けが起きてしまう...
-
Googleドライブ内のファイルを...
-
ファイル並び順がバラバラで困...
-
フォルダの中を特定のキーワー...
-
自分だけファイルが見られるよ...
-
ネットワーク経由の共有ファイ...
-
知恵袋で「予期せぬエラーが発...
-
知らないファイルがあります。
-
FileZillaと同じ順番でファイル...
-
テキストファイル内の文字列検索
-
Cドライブにconfig msiというフ...
-
ウォークマンのストレージの半...
-
レジストリの格納場所
-
コマンドプロンとでの実行の仕...
-
レジストリの変更が保存されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
VBAで同一フォルダにあるブック...
-
エクセルの数式で教えてください。
-
パイソンでエクセルマクロを動...
-
常に「すべての列のサイズを自...
-
System32内のファイルを書き換...
-
タスクスケジューラで指定フォ...
-
検索したファイルの場所を調べ...
-
シャットダウン時に自動ファイ...
-
ファイル並び順がバラバラで困...
-
Not kind:Folders
-
VB.net 任意の例外を発生させ...
-
貼り付けとショートカットの貼...
-
レジストリの変更が保存されない
-
エクセルを立ち上げるとBook2が...
-
ワードの作成日時と更新日時
-
Wordを開こうとすると『環境変...
-
google Drive 容量を減らせない...
-
Googleドライブで削除できない...
-
ネットワーク経由の共有ファイ...
おすすめ情報
Doの行からとばされました
そのように変更しても変わらずです泣