@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- PR -

VBでのファイルデータ抽出方法を一緒に考えてください。

投稿者投稿内容
VB/VC初心者
会議室デビュー日: 2004/06/02
投稿数: 5
投稿日時: 2004-06-02 16:36
 1000(以上)行3列のexcelデータを.txtで保存したファイルから列データ取り出す必要があります。しかし、整数部分と小数点とTabの配列がずれてしまっていて、1列目の抽出と2列目&3列目の2パターン抽出しなければならないのですが、方法がわかりません。もしよろしければ誰か教えていただけないでしょうか。
 初歩的な質問ですいません。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-06-02 17:04
まず初めに確認させてください。
VB.NETではなくてVBですね?

>.txtで保存したファイル
というのはTab区切りのtxtですかね。

>整数部分と小数点とTabの配列がずれてしまっていて
配列というのはどこの配列でしょう。VBの配列ですか?
txtのファイルはすでにVBプログラムでメモリ上に読み込んでいて、その読み込んだデータを(Tabで区切って)配列に入れてはいるということですか?
あと「ずれる」が具体的にどういう状態なのかも教えて頂きたいと思います。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-06-02 17:11
引用:

VB/VC初心者さんの書き込み (2004-06-02 16:36) より:
 1000(以上)行3列のexcelデータを.txtで保存したファイルから列データ取り出す必要があります。しかし、整数部分と小数点とTabの配列がずれてしまっていて、1列目の抽出と2列目&3列目の2パターン抽出しなければならないのですが、方法がわかりません。もしよろしければ誰か教えていただけないでしょうか。
 初歩的な質問ですいません。


  タイトル通り、一緒に考えるで宜しいですね?

>方法がわかりません。
  2つの抽出を、どう「設計」したらいいのか解らないと判断しました。
  
  経験上、システム開発の設計が解らない場合は、「仕様」が解っていない事が多いです。
  これは頭に入れておいて下さい。
  仕様が解れば大半の事は、許容範囲以上に不細工になっても「設計」は出来ます。
  文書だけで推測すると、VB/VC初心者さんは、まず「仕様」が理解出来ていない様です。

>1000(以上)行3列のexcelデータを.txtで保存したファイルから列データ取り出す
  ・これは私も理解致しました。

>整数部分と小数点とTabの配列がずれてしまって
  ・それは何故ですか?(Excelの仕様?Excelを記述する時の規定?)
  ・3列とは「整数部分」、「小数点」、「Tab」の3列があると言う事ですか?

>1列目の抽出と2列目&3列目の2パターン抽出しなければならない
  ・ここでは、2パターン必要である理由を聞きませんが、実務では認識する事をお奨めします。
  ・2パターンとは処理の方法が2つある意味ですね?
   それを判断する条件は何ですか?
VB/VC初心者
会議室デビュー日: 2004/06/02
投稿数: 5
投稿日時: 2004-06-02 19:11
>一郎さん
VB.NETでなくVBです。そしておっしゃる通りTab区切りです。
「ずれる」っていうのは、excelではフィールドがちゃんと整列されていますが、テキスト保存すると、
1234.243 34645.75745 366.3
345.34 553.65 5.3
654.46 5654.54645 565.5654
・   ・   ・
・   ・   ・
・   ・   ・
見たいになってしまい、n列の数値だけを抽出する方法がわかりません。
よろしくお願いお願いします。
VB/VC初心者
会議室デビュー日: 2004/06/02
投稿数: 5
投稿日時: 2004-06-02 19:24
実は小型人工衛星の開発を行っていまして、宇宙でどのような姿勢でいるかを検証するミッション解析を担当しています。来週ジャイロの精度が正しいかを実験します。その時のデータが1000(以上)行3列の形式で出力されます。
この列データは1列目が横軸成分、2,3列目が縦軸成分となっており、それぞれの電圧データを演算して角速度などに直して解析します。
そこで行数値だけを取り出し、テキストボックスに表示し、それを演算させたいのですが、まだまだはじめたばかりで・・・
ご教授お願いします。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-06-02 19:40
こんばんは。

見た目がおかしいだけで何も問題ないってことはありませんか?
タブのサイズを調整、マーク表示してみはいかがでしょうか。
本当におかしくなってたら、excelでも解析不能のはずです。

_________________
すなめり
常連さん
会議室デビュー日: 2003/01/29
投稿数: 37
お住まい・勤務地: 横浜
投稿日時: 2004-06-02 19:48
http://www7.plala.or.jp/imajo/ke/samp/samp01.html
ここの「文字の分割」というサンプルなどはどうでしょう?
このサンプルを使って、タブ(定数はvbTab)で分割してやると良いのでは、と思います。

ただ、なぜExcelで計算しないのかというところが不思議なのですけど。
電圧から角速度を求める式はわかっていらっしゃるのだと思いますので、そのままどこかのセルに計算式を入れてしまえば、VBでプログラムを組む必要もないのでは?
VB/VC初心者
会議室デビュー日: 2004/06/02
投稿数: 5
投稿日時: 2004-06-02 20:53
Private Sub cmd_DataRefer_Click()

Dim strFileName As String
Dim FileNum As Integer
Dim X As Integer, Y As Integer, Fa As Integer

Dim z As Integer, shuturyoku As String



Visible = True

CommonDialog1.Filter = "Text (*.txt)|*txt|All Files(*.*)|*.*"
CommonDialog1.InitDir = "C:\vb_prog"
CommonDialog1.ShowOpen
strFileName = CommonDialog1.FileName

FileNum = FreeFile()
Open strFileName For Input As FileNum
If Not EOF(FileNum) Then

If opt_ImportV = True Then

///ここにtxt_DataImportVっていうテキストボックスに1列目のデータを書き込むファイルをはりたいのですが。。。///                    
 


ElseIf opt_ImportH = True Then
If (EOF(FileNum) = 0) Then
While (EOF(FileNum) = 0)
Input #1, shuturyoku
txt_DataImportH = shuturyoku
Wend
End If

ElseIf opt_ImportVH = True Then
If (EOF(FileNum) = 0) Then
While (EOF(FileNum) = 0)
Input #1, shuturyoku
txt_DataImportV = shuturyoku
txt_DataImportH = shuturyoku
Wend
End If

Else
MsgBox "軸成分が選択されていません。"

End If
End If
Close #FileNum
End Sub

不細工なプログラムを見せるのは恥ずかしいのですが載せました。

スキルアップ/キャリアアップ(JOB@IT)