dポイントプレゼントキャンペーン実施中!

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

A 回答 (2件)

Excelファイルを開かずにシート名を取得


http://excel-ubara.com/excelvba5/EXCEL121.html

方法としてはあるようですが、
・ExcelBookの量
・うちのは古いのでキチンと検証(今のExcelに対応)が出来ない
と言う問題はありますけど。

それに『開かなかった場合』のセル範囲の取得を考えると、『Sheetの存在の確認』のみに絞った方がよいかな?
ただ最近のExcelに『ExecuteExcel4Macro』があるのかはわからないので、オブジェクトブラウザ等で確認し、
仮になかったならこの回答は飛ばして下さい。
    • good
    • 0

問題は解決したのかもですが、気になった点は『Do~Loop間で変数を宣言している点』ですかね。


それと『SetステートメントによるBookの明確化』です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A