- 締切済み
これのおかしいところはありますか?エクセル B列
Option Explicit Sub ExtractColumnB() Dim FolderPath As String Dim FileName As String Dim SourceWorkbook As Workbook Dim TargetWorkbook As Workbook Dim SourceWorksheet As Worksheet Dim TargetWorksheet As Worksheet Dim LastRow As Long Dim TargetLastRow As Long ' 対象フォルダの選択 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "フォルダを選択してください" .AllowMultiSelect = False If .Show <> -1 Then Exit Sub FolderPath = .SelectedItems(1) End With ' 出力用ワークブックとワークシートを作成 Set TargetWorkbook = Workbooks.Add Set TargetWorksheet = TargetWorkbook.Worksheets(1) ' 対象フォルダ内のExcelファイルを順次処理 FileName = Dir(FolderPath & "\*.xls*") Do While FileName <> "" ' ソースファイルを開く Set SourceWorkbook = Workbooks.Open(FolderPath & "\" & FileName) Set SourceWorksheet = SourceWorkbook.Worksheets(1) ' B列のデータを抽出 LastRow = SourceWorksheet.Cells(Rows.Count, 2).End(xlUp).Row ' 抽出したデータを出力用ワークシートにコピー TargetLastRow = TargetWorksheet.Cells(Rows.Count, 2).End(xlUp).Row + 1 SourceWorksheet.Range("B1:B" & LastRow).Copy TargetWorksheet.Range("B" & TargetLastRow) ' ソースファイルを閉じる SourceWorkbook.Close SaveChanges:=False ' 次のファイルへ FileName = Dir Loop ' 確認メッセージ MsgBox "B列のデータ抽出が完了しました。", vbInformation End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 兼元 謙任(@kanekaneto)
- ベストアンサー率90% (1436/1591)
このれは(VBAを使用して)Excelファイルの複数のファイルからB列のデータを抽出し、新しいExcelファイルにコピーすることを目的としたものですね。 “ VBAでデータ転記する方法とは?5つのサンプルを使って解説!“ https://www.sejuku.net/blog/94349 “ エクセルマクロVBAでデータ項目別にシートコピーし自動転記“ https://fastclassinfo.com/entry/vba_sheet_tenki/ このコードには、明らかな構文エラーは見当たりらないようですが、ファイルが存在しないとかや該当ファイルにB列のデータを含まないとかの場合などは、例外処理が不足する場合があるかもです。改善は以下のような点に考慮が必要かもです。 フォルダ選択ダイアログのキャンセルに対するエラー処理を追加する。 こうすることで、ユーザーがキャンセルボタンを押した場合などにエラーが発生しない対応ができるかもです。 ファイルが存在しない場合にはエラーになるかもなので、関数を使用する前に、指定されたフォルダにExcelファイルがあるかどうかを確認する必要があるかもです。 抽出するべきB列が存在しない場合、エラーが発生するかもなので、変数を使用する前に、B列にデータが存在するかどうかを確認する必要があります。コードを追加する必要があるかもです。 VBAのプログラムを半自動でチェックしてくれるサイトには↓のようなものがありますので、利用してみてください。 コードの品質・構文エラーチェック、最適化提案、および一貫性の維持などをやってくれるようです。ただ全てを自動的にやってくれるわけでないようなので、手動での確認も必要です・・・ VB Watch Code Analyzer: https://www.vbwatch.com/Products/CodeAnalyzer/ VBA Code Compare: https://www.vbacodecompare.com/ Rubberduck VBA: https://rubberduckvba.com/ こちらも参考に! “ ExcelマクロVBA関数の一覧と解説“ https://excel-ubara.com/EXCEL/EXCEL903.html 「マクロ」「VBA」「excel」に関する質問と回答 https://okwave.jp/search?word=%E3%83%9E%E3%82%AF%E3%83%AD%E3%80%80VBA%20excel 良い方向に進みますように! 参考になれば幸いです。