最終行をL列から求める場合と
220行固定の場合とを用意してみました。
作成してみてわかったことですが、
新たなシートにコピペして保存していますので
必然的に範囲末の空行は全数除かれることから、
最終行はあまり深く考えなくてもよさそうです。
Option Explicit
Public Sub Sample1()
Dim rng As Range
Dim FileName As Variant
Dim wb As Workbook
Dim LastRow As Long
'最終行を取得 'L列の最終行
LastRow = Cells(Rows.Count, 12).End(xlUp).Row
'MsgBox LastRow
'抽出するデータ範囲を定義
Set rng = Range(Cells(6, 12), Cells(LastRow, 18)) 'L6~Rの最終行'
'新規ブック作成→rngをA1にコピー
Set wb = Workbooks.Add
rng.Copy wb.ActiveSheet.Range("A1")
'ダイアログで保存ファイル名のフルパスを取得
FileName = Application.GetSaveAsFilename(InitialFileName:="規定の名称.csv", FileFilter:="CSVファイル,*.csv")
If FileName = False Then
Exit Sub
End If
'保存し、クローズ
Application.DisplayAlerts = False
wb.SaveAs FileName:=FileName, _
FileFormat:=xlCSV, CreateBackup:=False
Application.DisplayAlerts = True
wb.Close
End Sub
Public Sub Sample2()
Dim rng As Range
Dim FileName As Variant
Dim wb As Workbook
Const LastRow = 220
'抽出するデータ範囲を定義
Set rng = Range(Cells(6, 12), Cells(LastRow, 18))
'新規ブック作成→rngをA1にコピー
Set wb = Workbooks.Add
rng.Copy wb.ActiveSheet.Range("A1")
'ダイアログで保存ファイル名のフルパスを取得
FileName = Application.GetSaveAsFilename(InitialFileName:="規定の名称.csv", FileFilter:="CSVファイル,*.csv")
If FileName = False Then
Exit Sub
End If
'保存し、クローズ
Application.DisplayAlerts = False
wb.SaveAs FileName:=FileName, _
FileFormat:=xlCSV, CreateBackup:=False
Application.DisplayAlerts = True
wb.Close
End Sub
お礼
補足し忘れたのですが、最終行は220となります。 宜しくお願い致します。
補足
何度もすみません。 データはL列、R列並列で表示されます。 そして文字で検索するのですが、その際には行数は変動します。10行だったり20行だったりします。 因みにL6,R6が最初の行となります。 宜しくお願い致します。