1)指定フォルダからファイルを全て開く
2)開いたファイルのシート名を集計用シートに貼り付け
3)先月分の数字を集計し、2)で張り付けたシート名と同じ列に貼り付け
4)指定フォルダ内のファイル全てに対して2)3)を繰り返す
1)は出来たのですが、2)3)4)がなかなか出来ずに躓いております。
どなたかご教示いただけますと幸いです。よろしくお願いいたします。
※1)は下記VBAを使用したいと思っております。
できれば、このVBAの中に2)~4)を組み込めるといいのですが…
(フォルダの指定が簡単にできるため)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub 指定したフォルダ内のファイルを開く ()
Dim Filename As String
Dim IsBookOpen As Boolean
Dim OpenBook As Workbook
Dim myFolder As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show <> 0 Then
myFolder = .SelectedItems(1)
End If
End With
With CreateObject("WScript.Shell")
.CurrentDirectory = myFolder
End With
Filename = Dir("*.xlsx")
Do While Filename <> ""
If Filename <> ThisWorkbook.Name Then
IsBookOpen = False
For Each OpenBook In Workbooks
If OpenBook.Name = Filename Then
IsBookOpen = True
Exit For
End If
Next
If IsBookOpen = False Then
Workbooks.Open (Filename), UpdateLinks:=1
End If
End If
Filename = Dir()
Loop
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
No.1ベストアンサー
- 回答日時:
こんばんは
>開いたファイルのシート名を~
シート構成がどうなっているのか不明ですが、添付図だとブック内に1シートしか存在していないようなので、ブックを開いた時のシートで良いものと解釈しました。
また、ご提示のコードでは「既に開いているファイルか」をチェックしているようですが、状態が一定ではないようですので、以下では、チェックを省いてエクセルの別スレッドで開いてしまう方法にしてあります。
さらに、ThisWorkbookは.xlsmだと想像しますが、処理対象は.xlsxに限定されているようですので、こちらのチェックも省いています。
(.xlsmも対象に含める場合には、必要になるかも知れません)
>できれば、このVBAの中に2)~4)を組み込めるといいのですが
構成はそのままにしてありますが、不要な部分を削除するとあまり元のコードは残らない状態にはなってしまいましたが、以下ご参考までに。
※ 各ブックを順に開いて閉じることになるので、処理にはそれなりの時間がかかります。
(まずは、ブック数の少ないテストフォルダでテストしてください)
Sub Q12804215()
Dim OE, wb
Dim dRange As Range, r As Range
Dim myFolder As String, Filename As String
Dim d1 As String, d2 As String
With Application.FileDialog(msoFileDialogFolderPicker)
If Not .Show Then Exit Sub
myFolder = .SelectedItems(1) & "\"
End With
Set dRange = ActiveSheet.Range("B1:B3")
Set OE = CreateObject("Excel.Application")
d1 = ">" & CStr(DateSerial(Year(Date), Month(Date) - 1, 0))
d2 = "<" & CStr(DateSerial(Year(Date), Month(Date), 1))
Filename = Dir(myFolder & "*.xlsx")
Do While Filename <> ""
Set wb = OE.Workbooks.Open(myFolder & Filename, 3, True)
Set r = wb.ActiveSheet.Columns(1)
dRange(1).Value = r.Worksheet.Name
dRange(2).Value = OE.WorksheetFunction.SumIfs(r.Offset(, 1), r, d1, r, d2)
dRange(3).Value = OE.WorksheetFunction.SumIfs(r.Offset(, 2), r, d1, r, d2)
wb.Close False
Set dRange = dRange.Offset(, 1)
Filename = Dir()
Loop
OE.Quit
MsgBox "終了しました"
End Sub
早速にご回答いただいたにも関わらず、お礼が遅くなり申し訳ございません。先ほど、試したところ私の希望通りにアウトプット出来ておりました!ありがとうございます。
私の知らないコードもあり、勉強不足を痛感しております。
意味も掴めるようになってから仕事に活用したいと思います。
失礼ながら、再度質問なのですが、
ここまで書けるようになるのにどれくらいの年月がかかったのでしょうか?勉強法もご教示いただけると幸いです。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Visual Basic(VBA) excel VBAでメールを送る方法について 2 2021/11/03 15:34
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) VBA シート名が一致した場合の転記内容について 2 2021/11/15 13:07
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) 転記VBA エラーが出ます 2 2021/11/15 16:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
【マクロ】ファイル名の日付に...
-
ExcelのVBAでフォルダ指定がで...
-
VBA 最新のフォルダ取得
-
デスクトップの画像をhtmlに表...
-
ファイル名と同名のフォルダを...
-
Excelで指定したフォルダに保存...
-
ファイル名から該当フォルダへ移動
-
多量のファイルをフォルダに自...
-
空のフォルダの判定
-
パス名に2バイト文字(マルチバ...
-
保存先のフォルダ名を指定した...
-
バッチファイルで指定フォルダ...
-
【VBS】古い日付のフォルダを削...
-
言語[C#]..フォルダ選択ダイア...
-
エクセルマクロで指定フォルダ...
-
ThisWorkbookがあるフォルダ更...
-
フォルダ内のファイルの作成日...
-
バッチファイルにて連番付きフ...
-
フォルダに一括でファイル振り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
VBA フォルダ名に特定の文字を...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
C ファイル出力で、フォルダが...
-
Access VBA で フォルダ権限...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報