中年落ちこぼれサラリーマンが、無謀にもVBAを学ぶことにしました。

 

日頃、事務でExcelとAccessを使う事が多いですが、基本操作を少し覚えたぐらいで

難しいことは一切できません。

 

でも、色々あって始めることにしました。

 

記念すべき勉強初日は漫画喫茶 ←今の若者はネットカフェと言います。

 

<本日の作業ログ> 作業時間:5H

①会社の人が書いたコードの解析に挑戦

⇒17行目で戦意喪失

 

②ネットのVBA講座で概要を学習

⇒2時間で目がとても疲れた 戦意戻らず

 

③簡単なコードを書いてみた。

⇒やってみなきゃわからん!とりあえず書いてみた。

 

④ネットからコピペしたコードを自分なりに日本語に置き換えた

⇒置き換えた結果が正しいかどうかは不明

 

以前、会社の人がカンマ区切りのCSVファイルからエクセルのリストを作成するマクロを作ってくれました。とりあえず真似して書いてみる事にしました。

 

が・・・

 

当然ですがどうやって書いて良いかわかりませんので、ネットでお勉強。

そもそも開発画面の開き方がわからない(涙)

VBAでコードを書く画面を表示するのにかなりの時間を費やしましたが、とりあえずスタートラインに立ちました。

 

<今回挑戦する内容>

・Before カンマ区切りのテキスト ←見難いし加工しづらい

 

・After Excelのリスト ←これならコピペしやすいし加工もしやすい

 

本日書いたコードは以下ですが、ネットで拾ったコードのコピペです。

はい。完コピ! オリジナルは1行目の「Sub 名簿リスト加工()」だけ(笑)

 

さすがにコピペだけはまずいだろと思い。書いた内容をネットで調べながら緑字で自分なりの解釈を追記しました。

 

ばっちり開始5行で力尽きましたけど・・・

でもとりあえずマクロが正常に動作してくれたので心が折れずにすみました。

続きはまた。

 

<VBA>

Sub 名簿リスト加工()

Dim buf As String   'bufという名前の作業BOXを作成(0落ち防止のため文字列)
Open "D:\data\meibo.csv" For Input As #1  'Dドライブの「meibo.csv」を開く(開いたtxtファイルにファイル番号#1を付与)
Do Until EOF(1)   'EOF関数でファイルの読み込みポイントに達したかどうか判別する(1)はファイル番号EOFは#つけるとエラーになる
    Line Input #1, buf   'ファイル番号#1のデータを作業BOXに一行ずつ読み込む Line Input #1 は、#をつけないとエラーになる

Dim tmp As Variant
Dim n As Long

tmp = Split(buf, ",")
n = n + 1
With Cells(n, 1)
.NumberFormat = "@"
.Value = tmp(0)
End With

Cells(n, 1).Value = tmp(0)
Cells(n, 2).Value = tmp(1)
Cells(n, 3).Value = tmp(2)
Cells(n, 4).Value = tmp(3)
Cells(n, 5).Value = tmp(4)
Loop
Close #1

End Sub