お世話になっております。
以下のような事をおこないたいのですが、VBAで可能でしょうか?
(1)ファイルAのボタンを押す
(2)複数のファイルを開く
(3)入力した案件コード名のシートが存在するファイルを選択する
(4)存在したシートの値をファイルAにコピーする
(1)及び(2)、(4)については個々の動きではありますが
実行できる事はわかったのですが、(3)の部分に
ついてはどうやったらいいのかが分からない状態です。
背景
現在、会社にて部署別の案件管理をしているのですが、現在は、対象部署が1つしかないので、ファイルAのVBA上に対象ファイルを記述しているのですが、今後対象部署が増えるので今後の事も考慮し、対象ファイルをソース上に記入した場合、組織改正毎に修正するのが大変なので、絶対に重複しない案件コードで対象ファイルを選択して情報をコピーする事ができれば、メンテナンスの面からも楽だと思い、
このような事ができないかと思案しております。
決まった1ファイルのみを選択して、入力したコード名のシートを選択しコピーする事はできるのですが、複数のファイルを開いた場合どのようにVBAを記述すればよいかわからなく、困っております。
お忙しいところ申し訳ありませんが、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
ごめんなさい。
昨日より不調のmatsu_junです。以下のように訂正します。For i# = 1 To Workbooks.Count
For j# = 1 To Workbooks(i).Worksheets.Count
If Workbooks(i).Worksheets(j).Name = Sh_Name Then GoTo NEXTSTEP
Next j
Next i
NEXTSTEP:
Workbooks(i).Worksheets(j) が目的のシートです。
ありがとうございます。
おかげで、問題が解決致しました。
ただ、また別用件が生じてしまいましたが、
当初課題でありました当問題は解消できました。
No.3
- 回答日時:
下記のコードで参考になりませんか。
Cドライブのtestというフォルダがあり、その中に
複数のExcelファイル(.xls)があるという前提で。
Dirメソッドでファイル名を取得して、それを開いて
For Eachでbook内のシートを全部なめて表示し、bookを閉じ、
次のExcelファイルを探して上記の動作を繰り返す、というものです。
book内のシートを全部舐めるところで、
目的のシート名と照合させればいいんじゃないでしょうか。
Private Sub CommandButton1_Click()
Dim i As Integer
Dim target As String
Dim ws As Worksheet
i = 1
target = Dir("C:\test\*.xls")
If target = "" Then
Exit Sub
End If
Cells(i, 1).Value = target
Workbooks.Open target
For Each ws In Workbooks(target).Worksheets
Cells(i, 2).Value = ws.Name
i = i + 1
Next ws
Workbooks(target).Close
Do
target = Dir()
If target = "" Then
Exit Do
Else
Cells(i, 1).Value = target
Workbooks.Open target
For Each ws In Workbooks(target).Worksheets
Cells(i, 2).Value = ws.Name
i = i + 1
Next ws
Workbooks(target).Close
End If
Loop
End Sub
No.1
- 回答日時:
検索したいシート名を、変数 Sh_Name ( As String ) に格納するとします。
その上で、以下の記述を行ってください。For Each wb In Workbooks
For Each sh In Worksheets
If sh.Name = Sh_Name Then GoTo NEXTSTEP
Next sh
Next wb
NEXTSTEP:
オブジェクト変数「wb」に目的のシートを含むブックが、同じくオブジェクト変数「sh」に目的のシートがセットされます。
試しにその下の行に
MsgBox wb.Name
MsgBox sh.Name
と記述して実行してください。検索したいシートを含むブックの名前がメッセージボックスに表示されます。OKをクリックすると次に検索されたシート名がメッセージボックスに表示されます。例えば
sh.Cells(1, 1).Value
とすれば、検索したシートのセルA1の値が取得できたりします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.DisplayAlerts =Fa...
-
WorkBooksをオープンさせずにシ...
-
指定ファィルの指定シートをシ...
-
Excel(2010)のフィルターが保...
-
【マクロ】【VBA】別ブックへの...
-
エクセルで50行ごとに区切った...
-
VBAでブックを非表示で開いて処...
-
複数のExcelブックのシート1の...
-
【マクロ】【VBA】同じフォルダ...
-
リンク元ブックのPWが分からな...
-
ブックのピボットを別ブックに...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
同じフォルダへのハイパーリン...
-
エクセルで開いていないbookの...
-
VBA バックグラウンドで別ブッ...
-
エクセルファイルを開かずにpdf...
-
複数のブックをひとつのブック...
-
【VBA】特定シート 名前編集・...
-
ブックの保護ができないんです...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
(マクロ)vlookupの元データを同...
-
Excelでブックの共有を掛けると...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
複数ファイルから特定シートの...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
Excelファイルをダブルクリック...
-
フォルダ内の複数ファイルから...
-
エクセルファイルを開かずにpdf...
-
外部ブック参照が#REF!になって...
-
エクセルで複数のシートを別フ...
-
エクセルシートの一部を送りたい
-
エクセルで50行ごとに区切った...
おすすめ情報