[VB.net]メルカリのビットコイン取引結果csvファイルを取り込みGridに表示
前回からまた8ヶ月ほど空いてしまいましたが、今回は別のコード紹介です
仮想通貨や投資の話をよく目にする昨今ですが私もビットコインに手を出してみました
ビットコインは調べてもどこか信用しきれない所があり、貯金を入れるのは嫌だなぁと思っていたのですが
メルカリの売却益でビットコインが買えるようにアップデートされましたね
売却益を口座に移動すると手数料かかるので、売るもの無くなったら移す予定の売上金とメルカリポイントをビットコインに入れてみたら結構増えました(増えるのは嬉しいけどいつ手を引くべきなのか…)
確定申告するほど儲けてはいませんが、どれぐらい利益を出したのか確認するためメルカリの売上記録をDLすると…まあ見づらい…
参画しているプロジェクトでは相変わらずVB.netを使用しているので練習がてらcsvをGridに取り込むアプリを作りました
環境
Windows 10 Version 21H1
.NET Framework 4.8.09037
Visual Studio 2022 Version 17.1.4
作成の準備
今回はwindowsフォームアプリで作成
最新の.NETを選択
Form1にボタンとGridとファイル選択用のコンボボックスを追加
GridにCSVファイルのデータを格納するための項目を追加
項目追加完了まで
ソースコード
ソースはModule1.vbとForm1.vbの2個作成
Module1.vb
Imports System.IO
Imports System.Text
Module Module1
Public data(15, 1)
Public csvFileName As String
Public count As Integer
Public Ans1(1000) As String
Public Ans2(1000) As String
Public Ans3(1000) As String
Public Ans4(1000) As String
Public Ans5(1000) As String
Public Ans6(1000) As String
Public Ans7(1000) As String
Public Ans8(1000) As String
Public Ans9(1000) As String
Public Ans10(1000) As String
Public Ans11(1000) As String
Public Ans12(1000) As String
Public Ans13(1000) As String
Public Ans14(1000) As String
Public Ans15(1000) As String
Public Ans16(1000) As String
Public DataGridView1 = New DataGridView()
Public rstStr As String = ""
Public extWord As String = ""
Public CsvFolderPath As String = "C:\Users\メルカリビットコイン"
Public Sub CsvRead(ByVal csvPath As String)
Dim Line As String
Dim Field() As String
'UTF-8でエンコードしcsvを読む
Using reader As New StreamReader(csvFileName, Encoding.GetEncoding("UTF-8"))
'csvの行が終わるまで取得
Do Until reader.EndOfStream
'1行取り出す
Line = reader.ReadLine()
'カンマ区切りで格納する
Field = Line.Split(",")
If count >= 0 Then
'csvの取引日時を格納
data(1, 0) = Field(0)
Ans1(count) = data(1, 0)
'csvの取引種別を格納
data(2, 0) = Field(1)
Ans2(count) = data(2, 0)
'csvの取引形態を格納
data(3, 0) = Field(2)
Ans3(count) = data(3, 0)
'csvの通貨ペアを格納
data(4, 0) = Field(3)
Ans4(count) = data(4, 0)
'csvの増加通貨名を格納
data(5, 0) = Field(4)
Ans5(count) = data(5, 0)
'csvの増加数量を格納
data(6, 0) = Field(5)
Ans6(count) = data(6, 0)
'csvの減少通貨名を格納
data(7, 0) = Field(6)
Ans7(count) = data(7, 0)
'csvの減少数量を格納
data(8, 0) = Field(7)
Ans8(count) = data(8, 0)
'csvの約定金額を格納
data(9, 0) = Field(8)
Ans9(count) = data(9, 0)
'csvの約定価格を格納
data(10, 0) = Field(9)
Ans10(count) = data(10, 0)
'csvの手数料通貨を格納
data(11, 0) = Field(10)
Ans11(count) = data(11, 0)
'csvの手数料数量を格納
data(12, 0) = Field(11)
Ans12(count) = data(12, 0)
'csvの登録番号を格納
data(13, 0) = Field(12)
Ans13(count) = data(13, 0)
'csvの社名を格納
data(14, 0) = Field(13)
Ans14(count) = data(14, 0)
'csvの備考を格納
data(15, 0) = Field(14)
Ans15(count) = data(15, 0)
End If
'csvの値取得のためのカウント(count)を1進める
count += 1
Loop
End Using
MsgBox("読み込みました")
End Sub
End Module
Public Class Form1
Private Sub Form1_load(sender As Object, e As EventArgs) Handles Me.Load
'テキストボックス部分は編集不可にする
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
For Each Fname As String In System.IO.Directory.GetFiles(CsvFolderPath, "*.csv")
'拡張子前の名前を取得
rstStr = Fname.Substring(0, Fname.IndexOf("."))
'6文字を抽出
extWord = Strings.Right(rstStr, 6)
'コンボボックスに項目(csvファイル名)を追加する
ComboBox1.Items.Add(extWord)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If ComboBox1.Text = "" Then
MsgBox("csvファイル名を選択してください")
Exit Sub
Else
'CSVファイルのパスを取得
csvFileName = ComboBox1.Text & ".csv"
End If
Dim MyPath As String = CsvFolderPath
If MyPath.EndsWith("\") = False Then
MyPath &= "\"
End If
csvFileName = MyPath & csvFileName
CsvRead(csvFileName)
With Me.DataGridView1
.Visible = False
For i = 0 To count
.Rows.Add()
.Rows(i).Height = .ColumnHeadersHeight
.Rows(i).DefaultCellStyle.Font = .ColumnHeadersDefaultCellStyle.Font
.Rows(i).Cells(0).Value = Ans1(i)
.Rows(i).Cells(1).Value = Ans2(i)
.Rows(i).Cells(2).Value = Ans3(i)
.Rows(i).Cells(3).Value = Ans4(i)
.Rows(i).Cells(4).Value = Ans5(i)
.Rows(i).Cells(5).Value = Ans6(i)
.Rows(i).Cells(6).Value = Ans7(i)
.Rows(i).Cells(7).Value = Ans8(i)
.Rows(i).Cells(8).Value = Ans9(i)
.Rows(i).Cells(9).Value = Ans10(i)
.Rows(i).Cells(10).Value = Ans11(i)
.Rows(i).Cells(11).Value = Ans12(i)
.Rows(i).Cells(12).Value = Ans13(i)
.Rows(i).Cells(13).Value = Ans14(i)
.Rows(i).Cells(14).Value = Ans15(i)
Next i
.Visible = True
End With
End Sub
End Class
動作の説明
基本的には画面ロードの処理(Form1_load)とボタン押下処理(Button1_Click)の2つで、ボタン押下処理でModule1.vbの(CsvRead)で指定のフォルダのcsvを読み込んで行く処理となる
画面ロードの処理(Form1_load)ではコンボボックスの値を指定のフォルダ内にあるcsvファイルを読み取り、YYYYMMを抜き出して表示している
実行中の動き
結果
指定のフォルダに格納されているCSVファイルを選択しGridに表示することができた
改善点
Gridに不要な行が入ってしまっている(グラフ表示に影響なければそのままでもいいかな)
表示したGridに対して適切なグラフを表示したい
折れ線グラフと棒グラフ
(横軸 年月日 縦軸金額 購入金額(円,bitcoin)
取引結果の利益を一目で分かるようにしたい
お金からビットコインに変換しビットコインに戻ったタイミングの差分など
あとがき
それにしてもビットコインの引き際難しいですね
株みたいにずっと保持するべきなんでしょうけど、一気に下がるんじゃないかと思ってしまい利確してしまう…(^_^;)
この記事が気に入ったらサポートをしてみませんか?