0
私はこのコードを使用しています(Splitting worksheet into multiple workbooks)、列3でフィルタリングする短いデータベースを使用するとコードが不思議に思えます。フィルタとして使用される列、別名フィールドは、35列または "AI"にあり、この場合コードは機能しません。したがって、このコードでは、フィルタリングされた列の値に応じてワークブックが作成されますが、データ自体はフィルタリングされず、この場合は3つの同一ファイルが作成されます。助言がありますか?これは私が使用したコードです:Excelワークシートのデータを列の値に基づいて複数のワークブックに分割する
Sub CreateBatchWorkbooks()
On Error Resume Next
Application.DisplayAlerts = False
With ThisWorkbook.Sheets("CalcData") 'Replace the sheet name with the raw data sheet name
Set Newsheet = ThisWorkbook.Sheets("cal")
If Newsheet Is Nothing Then
Worksheets.Add.Name = "cal"
Else
ThisWorkbook.Sheets("cal").Delete
Worksheets.Add.Name = "cal"
End If
FilterField = WorksheetFunction.Match("BatchNumber()", ThisWorkbook.Sheets("CalcData").Range("1:1"), 0)
.Columns(FilterField).Copy
With ThisWorkbook.Sheets("cal")
.Range("a1").PasteSpecial (xlPasteAll)
.Columns("a").RemoveDuplicates Columns:=1, Header:=xlYes
End With
For Each cell In ThisWorkbook.Sheets("cal").Columns("a").Cells
i = i + 1
If i <> 1 And cell.Value <> "" Then
.AutoFilterMode = False
.Rows(1).AutoFilter field:=FilterField, Criteria1:=cell.Value
Set new_book = Workbooks.Add
.UsedRange.Copy
new_book.Sheets(1).Range("a1").PasteSpecial (xlPasteAll)
new_book.SaveAs Filename:=ThisWorkbook.Path & "\" & cell.Value & ".xlsx"
new_book.Sheets(1).UsedRange.Columns.AutoFit
new_book.Save
new_book.Close
End If
Next cell
ThisWorkbook.Sheets("cal").Delete
End With
End Sub
ありがとうございます!
vba/3211 /エラー処理/ 11022/resume-keyword))。この行のために、コード内のエラーは完全に無視されています。表示されているエラーメッセージを報告してください(投稿を編集してください)。次に、エラー処理に関するそのドキュメンテーションのセクションの残りの部分を読んでください。 OERNを使用する正当な理由はほとんどありません**。 – FreeMan
また、フィールド#35を1つの列範囲でフィルタリングしようとしています。あなたがリンクした前の投稿は、この訂正をコメントに示しています。 –
私はちょうどコードを更新しました。まだ何も解決されていません。助言がありますか? – dmalvareg