FC2ブログ

データ更新(追記有) CSVファイルにに書き込む

2017–08–30 (Wed) 14:18
エクセルマクロですが、ほぼ備忘録です。
なかなか上手く作れず、二時間ほど格闘しました。

データ更新 CSVに書き込むとき

Dim myName As Variant, buf As String
Dim msg() As String, t As Long
Open "CSVファイル指定" For Binary As #1
buf = Space(FileLen("CSVファイル指定"))
Get #1, , buf
Close #1
myName = Split(buf, vbCrLf)
msg2 = Split(myName(1), ",")
ReDim msg(UBound(myName), ubound(msg2))

For i = 0 To UBound(myName)

For t = 0 To UBound(msg2)
msg(i, t) = msg2(t)
Next
Next i

dim naikazu as long
naikazu = 0
データを取ってくる処理を入れます。
CSVにデータが有る場合は、配列をそのまま変更します。

CSVにデータが無い場合の処理。
dim nai as variant
redim nai(ubound(msg2))

nai という配列を作成し、そこに代入します。

nai(0)=・・・


Open "CSVファイル指定" For Append As #1
Print #1, Join(nai, ",")
Close #1
naikazu = naikazu + 1

CSVファイルを開き、追記します。

変更した配列を新しい配列に追記します。

Dim msgmsg As Variant
kosu = naikazu + UBound(msg)
ReDim msgmsg(kosu, 17)
For i = 0 To UBound(msg)
For t = 0 To 17
msgmsg(i, t) = msg(i, t)
Next
Next i

「nai」配列を利用して追記した配列を上記で作成した「新しい配列」に書き込みます。


Open "CSVファイル指定" For Binary As #1
buf = Space(FileLen("CSVファイル指定"))
Get #1, , buf
Close #1
myName = Split(buf, vbCrLf)

For i = UBound(msg) To UBound(msgmsg)
msg2 = Split(myName(i), ",")
For t = 0 To UBound(msg2)
msgmsg(i, t) = msg2(t)
Next
Next i


Close #1

Open "CSVファイル指定" For Output As #1
i = 0
For i = 0 To UBound(msgmsg)
For j = 0 To 17
Print #1, msgmsg(i, j) & ",";
Next
Print #1,
Next
Close #1

「新しい配列」を書き込みます。

スポンサーサイト



« 一括名前指定 変更 | HOME |  CSVいろいろ »

コメント

コメントの投稿

 
管理者にだけ表示

 | HOME | 

プロフィール

はる

Author:はる
FC2ブログへようこそ!

最新記事

最新コメント

フリーエリア

月別アーカイブ

カテゴリ

ブロとも申請フォーム

検索フォーム

RSSリンクの表示

リンク