兎に角よく使う。良く調べるコードのメモ。
最終行、最終列を取得するコード
最終行を取得するコード
Cells(Rows.Count, 1).End(xlUp).Row
一番下から Ctrl+↑した行番号を返す。1はA列の事。例えばB列にしたければ2にする。
Cellを指定して上から 「Ctrl + ↓」した行番号を返す方法は
Cells(1,1).End(xlDown).Row
最終列を取得するコード
Cells(1,Columns.Count).End(xlToLeft).Column
1行目の一番右のセルから「Ctrl + ←」をした列番号を返す。
Cellを指定して左から「Ctrl + →」をした列番号は
Cells(1,1).End(xlToRight).Column
参考サイト
第18回.最終行の取得(End,Rows.Count)
Excelの神髄
https://excel-ubara.com/excelvba1/EXCELVBA318.html
処理時短
‘画面更新OFF 途中で止まったらイミディエイトウィンドウで直す
Application.ScreenUpdating = False
‘ウエイトカーソル カーソルが点滅する時に xlDefaultで戻す
Application.Cursor = xlWait
‘シートを選んだ時などのイベントを抑止
Application.EnableEvents = False
‘シートを消す時に出るメッセージを抑止
Application.DisplayAlerts = False
‘ワークシートの計算を止める。 戻すときはxlCalculationAutomatic
Application.Calculation = xlCalculationManual
参考サイト
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ
Excelの神髄
https://excel-ubara.com/excelvba5/EXCELVBA210.html
CSVファイルの取込
CSVファイルの取込(Line Input)
C\test に以下のようなtestcsv.csvファイルを作ったとする。

Sub CSVデータの取り込み()
Dim 行 As Long
Dim 列 As Long
Dim ファイル番号 As Long
Dim ファイル名 As String
Dim 行データ As Variant
Dim v配列 As Variant
Dim 配列番号 As Long
行 = 1
列 = 1
ファイル番号 = FreeFile 'FreeFile 空き番号を探す関数
ファイル名 = "C:\test\testcsv.csv"
Open ファイル名 For Input As ファイル番号
ActiveSheet.Cells(行, 列).Select
Do Until EOF(1)
Line Input #ファイル番号, 行データ
v配列 = Split(行データ, ",")
'v配列 = Replace(行データ,"""", "") ' ダブルクォーテーションの削除
列 = 1
For 配列番号 = 0 To UBound(v配列)
ActiveSheet.Cells(行, 列).Value = v配列(配列番号)
列 = 列 + 1
Next 配列番号
行 = 行 + 1
Loop
Close ファイル番号
End Sub
CSVファイルの1文字ずつ読み込む
Line Inputはカンマ区切りを途中に使われると区切る位置を間違えてしまう。1文字ずつ読んだ場合でも対応するには1文字ずつ読む方法を使う。
C\test に以下のようなtestcsv2.csvファイルを作ったとする。

Sub CSVデータを1文字ずつ読む()
Dim 行 As Long
Dim 列 As Long
Dim ファイル住所 As String
'事前に参照設定で[Microsoft Scripting Runtime]にチェックを入れる
Dim ムサイ As New FileSystemObject
Dim ドム As Textstream
Dim 攻撃 As String
Dim 連続攻撃 As String
行 = 1
列 = 1
ファイル住所 = "C:\test\testcsv2.csv"
Set ドム = ムサイ.OpenTextFile(ファイル住所, ForReading)
Do Until ドム.AtEndOfStream
'一文字ずつ読む
攻撃 = ドム.Read(1)
'改行ならデータを貼って行を送る
If 攻撃 = vbCr Then
'最初と最後の["]を取る
ActiveSheet.Cells(行, 列) = Mid(連続攻撃, 2, Len(連続攻撃) - 2)
連続攻撃 = ""
'Linefeedを避ける
ドム.Skip (1)
'次の行データへ準備
行 = 行 + 1
列 = 1
Else
'文字をつなげる
連続攻撃 = 連続攻撃 + 攻撃
End If
' [",]で区切る
If 連続攻撃 Like "*""," Then
ActiveSheet.Cells(行, 列) = Mid(連続攻撃, 2, Len(連続攻撃) - 3)
連続攻撃 = ""
列 = 列 + 1
End If
Loop
ドム.Close
'オブジェクトの開放
Set ドム = Nothing
End Sub
CSVファイルの書き出し
Dim 書き出したいシート名 As String
Dim ファイル名 As String ’フルファイルパス
’このシートだけのExcelファイルを生成して保存→Excelは保存せずに削除
Sheets(書き出したいシート名).Copy
ActiveWorkbook.SaveAs Filename:=ファイル名 & “.csv”, FileFormat:=xlCSV
ActiveWorkbook.Close SaveChanges:=False
ThisWorkbook Activate
参考サイト
Microsoft
XlFileFormat 列挙体 (Excel)
https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlfileformat