【VBA】CSVファイル(LFコード)取り込み→ダブルクォーテーション削除→Sheetに出力

人生初VBAに触りました。え…なにこれ難しくない…?(ドン引き)
今迄C#とかphpとかJavaとかやってたんだけど、ここら辺の言語って書式が違うだけで、大抵同じような書き方で通用するんですよね。しかしVBA、テメーはだめだった。
エラー原因は細かく教えてくれないくせにパスとか細かい厳格さを求めるくせに変なところはすごく適当になるってもうこの人自由奔放すぎ!私こんな頑固な人と一緒にやっていける自信がない!

はい、こういうツール作って、って言われたはいいものの、どういう機能があるかわからないから、どういう道筋をたててコーディングするものなのかがわからない。地図の見方がわからない感覚というか、出発地点がどこなのかわからない感覚というか…
あー新入社員の時初めてphp見たとき、ユーザ定義関数と設定ファイルの多さにどうすればいいかわからなかったなあと、しみじみ思い出して初心にかえったり。

さすが天下のMicrosoftさんのとこ出身のドメジャー言語というだけあって、検索すれば情報はわんさかでてくるんだけど、如何せん情報が古い…あと明らかに冗長なコードが多い…。
ということで、何一つ変更せず、そのまま使えるCSVファイルの取り込み→出力機能を記念に作りました。誰かの役に立ちますように。
改行コードはLF、ダブルクォーテーションが入り混じったcsvファイルの取り込みを想定しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub ImportCSV()
Dim File
Dim ws As Worksheet
Dim buf As String
Dim splitData As Variant, insertData As Variant
Dim i As Long
 
'csvファイル選択ウィンドウを開く
File = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", Title:="CSVファイルの選択")
 
'CSVシート作成
Set ws = Worksheets.Add
ws.Name = "CSV取り込みシート"
 
'出力するシートをアクティブにする
ws.Activate
 
'CSVのデータを取り込む
Open File For Input As #1
Line Input #1, buf
Close #1
 
'取り込んだデータをCSVシートに出力
splitData = Split(buf, vbLf)
For i = 0 To UBound(splitData) - 1
insertData = Split(Replace(splitData(i), """", ""), ",")
Cells(i + 1, 1).Resize(1, UBound(insertData) + 1).Value = insertData
Next i
End Sub