
Excelブックが複数あり、その中にある”みかん”シートのシートがあった場合のみ
データを取得したいのですが、下記の記述をしたのですが、ブックを1ブックづつ開くようにしたので
処理時間がかかってしまいます。処理時間を短縮するにはどのようにすればいいでしょうか?
また、最終的には、1つのブック内に”みかん”、”リンゴ”の複数の条件を盛り込みたいのですが
初心者では検討つきません。おしえてください。
Sub みかん()
'-------ブック抽出---------------'
Dim buf As String, i As Long, Dinm As String, gyou As Variant
Dinm = "C:\ブック格納"
buf = Dir(Dinm & "\*.xls")
'------ファイルを連結する-------’
Do While buf <> ""
Workbooks.Open (Dinm & "\" & buf) '対象ファイルを開く’
Dim ws As Worksheet, flag As Boolean
For Each ws In Worksheets
If ws.Name = "みかん" Then flag = True
Next ws
If flag = True Then '☆みかんシートが存在だったら。以下の処理
Worksheets("みかん").Activate
Dim a As Long
Dim b As Long
a = 18
b = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得’
Rows(a & ":" & b).Copy
ThisWorkbook.Activate
Worksheets("みかん").Select
b = Cells(Rows.Count, "B").End(xlUp).Row 'マクロファイルのB列の最終行を取得’
c = b + 1
Range("A" & c).PasteSpecial Paste:=xlPasteValues 'セルに値のみ張り付ける’
'商品番号のコピー’
Workbooks(buf).Activate
Worksheets("みかん").Select
gyou = Range("B6")
'商品番号の貼付’
ThisWorkbook.Activate
Worksheets("みかん").Select
c = Cells(Rows.Count, "DO").End(xlUp).Row 'マクロファイルのCG列の最終行を取得’
b = Cells(Rows.Count, "B").End(xlUp).Row 'マクロファイルのB列の最終行を取得’
d = c + 1
For i = d To b
Cells(i, 119) = gyou
Next i
flag = False
'-------事後処理---------'
Workbooks(buf).Activate 'コピー元をアクティブへ’
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Else
'-------事後処理---------'
Workbooks(buf).Activate 'コピー元をアクティブへ’
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
End If
Loop
End Sub
No.1ベストアンサー
- 回答日時:
Excelファイルを開かずにシート名を取得
http://excel-ubara.com/excelvba5/EXCEL121.html
方法としてはあるようですが、
・ExcelBookの量
・うちのは古いのでキチンと検証(今のExcelに対応)が出来ない
と言う問題はありますけど。
それに『開かなかった場合』のセル範囲の取得を考えると、『Sheetの存在の確認』のみに絞った方がよいかな?
ただ最近のExcelに『ExecuteExcel4Macro』があるのかはわからないので、オブジェクトブラウザ等で確認し、
仮になかったならこの回答は飛ばして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
ファイルを閉じたままの外部参照で最終行の行数取得
Visual Basic(VBA)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
-
4
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
5
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
6
【VBA】EXCELブックを開かずにシート名を取得したい
Visual Basic(VBA)
-
7
VBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法はありますか?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
Excelマクロ 該当する値の行番...
-
エクセルのマクロを使ってメー...
-
[Excel]ADODBでNull変換されて...
-
ワイルドカード「*」を使うとう...
-
Excel VBAマクロで複数のファイ...
-
Excel2007VBAファイルの表示に...
-
マクロで最終行を取得したい
-
サーバーに保存したエクセルフ...
-
VBAで別のブックにシートをコピ...
-
EXCEL→CSV形式で別ファイルに保存
-
VBA 二つのブックをうまく扱え...
-
VBScriptで自動リンクONでExcel...
-
ExcelVBA:すでに開かれている...
-
マクロVBA 1シートをまとめ...
-
[Excel VBA] 複数のサブフォル...
-
VBAが止まります。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
【Excel VBA】書き込み先ブック...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
[Excel]ADODBでNull変換されて...
-
Excelファイルを開くとき、読み...
-
VBA 実行時エラー 2147024893
-
Excelマクロ 該当する値の行番...
-
Excel にて、 リストボックスの...
-
VBS Bookを閉じるコード
-
複数のエクセルファイルとシー...
-
【ExcelVBA】インデックスが有...
おすすめ情報