今迄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 |