この度EXCELに入ってくるCSVデータをリアルタイムで折れ線グラフに変換することになりました。
何とかVBAで出来そうだ・・・まではわかったのですが、初めてVBの画面を開いた私ですので
命令語の意味すらわからず大変困っています。
・約0.5秒に1回セルA1とB1にデータが入ってくる。
・それを別々に折れ線グラフに表示する。
・表示後、セルA1とB1の内容をクリアする。
以上の繰り返しで行いたいと思っています。
どなたか詳しい方がいらっしゃいましたらどのようなプログラムに
なるのか教えて頂けませんでしょうか?
どうかよろしくお願い致します。
OSはXP、Officeは2000を使用しております。
No.1ベストアンサー
- 回答日時:
1,2
3,4
5,6,
7,8
9,10
11,12
13,14
15,16
17,18
19,20
こういう<Test.csv>を0.5秒間隔で呼び込んで折れ線グラフにするということですか?
Excel は、操作したこともない門外漢ですが、出来そうな気がします。
まず、0.5秒間隔で休止する関数とCSVを読み込む関数を標準モジュールに追加。
Public Sub Pause(ByVal PauseTime As Single)
Dim Finish As Single
Finish = Timer + PauseTime
Do
DoEvents
Loop Until Timer > Finish
End Sub
Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String
On Error GoTo Err_FileRead
Static isOpen As Boolean
Static fso As FileSystemObject
Static fil As File
Static txs As TextStream
If Not isOpen Then
isOpen = True
Set fso = New FileSystemObject
Set fil = fso.GetFile(FileName)
Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)
End If
FileRead = txs.ReadLine
Exit_FileRead:
If Len(FileRead) = 0 Or isStop Then
isOpen = False
Set txs = Nothing
Set fil = Nothing
Set fso = Nothing
End If
Exit Function
Err_FileRead:
Resume Exit_FileRead
End Function
※Microsft Runtime Scripting を参照するように設定!
次に、グラフを用意しコマンドボタンを配置しCSVを読み込んでみる。
Private Sub CommandButton1_Click()
Dim N As Integer
Dim Data As String
Dim Datas() As String
Do
Data = FileRead("C:\Temp\Test.csv")
Datas() = Split(Data, ",")
N = UBound(Datas())
If N = 1 Then
Me.Cells(1, 1) = Datas(0)
Me.Cells(1, 2) = Datas(1)
End If
' Worksheets("Sheet1").ChartObjects(1).Chart.Refresh
Pause 0.5
Loop Until Data = ""
End Sub
Chart.Refresh は、あってもなくてもグラフは変化するようです。
もちろん、エクセルのグラフはエクセルデータを反映するもんだから、セルの更新を先にしている。
こんなんでどうでしょうか?
生まれて初めて挑んだんで最適解かどうかはかなり怪しいですが・・・。
回答ありがとうございます。
先頭の方の考え方はまさにイメージ通りです!
訳もわからず質問したこちらが申し訳ない程です。
早速使わせていただきます!
結果は後程報告させていただきますね。
こんなに出来て生まれて初めて・・・なんですか?
私はいろいろなHP見てるだけで3日使っちゃいました。
ありがとうございました!
No.2
- 回答日時:
もしかしてセルが更新されたらリフレッシュするということかな。
1、更新後グラフが自動更新されないなら
・コードでリフレッシュする。
2、更新イベントが発生しないやり方ならば、
・コードで定期的にチェックする。
が、考えられます。
が、ならば、もう少し、質問の焦点を絞られたがいいです。
回答ありがとうございます。
1分でも120個x2のデータが入ってきてしまうので定期的チェック
よりは毎回グラフに書き込みしたらリフレッシュでイメージして
おりました。(0.5秒ごとにデータは入ってきますので・・・)
自分でもよく内容を把握していなかったので漠然とした質問になって
しまいました、すみません。
でも、それだけでもいろいろな考え方があるのですね!
参考にさせていただきます。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) エクセルの折れ線グラフで教えて下さい 1 2023/03/05 22:48
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのセル内でタブキーの...
-
日報のデータを月報にデータを...
-
ウェブから貼ったドロップダウ...
-
エクセルオンラインのみ勝手に...
-
#DIV/0!があるデータの折れ線...
-
エクセルVBA 長さ0の文字列をNu...
-
エクセル 文字の先頭4文字だ...
-
Calcからエクセルへの貼り付け...
-
エクセルの二重引用符と貼り付け
-
VBでリアルタイムにグラフを...
-
文字を入力するだけで、強制終...
-
VBA初心者です。電話番号の数字...
-
エクセルのグラフでデータテー...
-
エクセル2000:phonetic関数で...
-
エクセルで他のブックを参照し...
-
エクセル会員名簿について。 Ya...
-
エクセルでテキストデータ貼り...
-
【エクセル】原点を通るグラフ...
-
HTML形式の表を、Excel形式に...
-
エクセルで関数グラフを描きた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセル内でタブキーの...
-
エクセルで3Dの円錐形を作成...
-
エクセルのグラフでデータテー...
-
エクセル 文字の先頭4文字だ...
-
エクセル データ追加するもグ...
-
エクセルVBA 長さ0の文字列をNu...
-
差し込み印刷で文字化け!
-
VBA初心者です。電話番号の数字...
-
エクセルのデータを自動的にweb...
-
エクセルオンラインのみ勝手に...
-
日報のデータを月報にデータを...
-
エクセルで全波整流回路の波形
-
文字をアルファベット順に3つ...
-
エクセルの変換
-
ウェブから貼ったドロップダウ...
-
一太郎からエクセルに
-
エクセルのセルが突然選択でき...
-
エクセル2000:phonetic関数で...
-
文字を入力するだけで、強制終...
-
エクセルのテーブルで自動拡張...
おすすめ情報