![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Excel VBAで外部テキストをTextBoxに読み込み、そのテキストの中から任意の場所の数値を取得する(変数に代入する)にはどのようにしたらいいのでしょうか?
例えば、外部テキストが以下のようなかんじだったとします。
ここから---------------------
・・・
通勤時間A
root 60
root 120
root 45
root 225
root 30
通勤時間B
root 90
root 150
root 75
・・・
ここまで---------------------
このテキストの中から通勤時間Aを検索し、その下の行にある、60,120,45,225,30という数値を変数に代入したいのです。
テキストをTextBoxに読み込む方法はわかりますが、数値の検索方法がわかりません。どうすればいいでしょうか?
(テキストをTextBoxに読み込まなくても数値を検索する方法があればそちらの方法もお願いします)。
No.2ベストアンサー
- 回答日時:
<C:\Temp\root_a.txt>
root 60
root 120
root 45
root 225
root 30
こういうファイルがあったとします。
--------------
60
120
45
225
30
--------------
と読み込んで表示するコードは次のようです。
Private Sub コマンド0_Click()
Dim strData As String
Debug.Print "--------------"
Do
strData = FileRead("C:\Temp\root_a.txt")
If strData <> "" Then
Debug.Print CutStr(strData, " ", 2)
End If
Loop Until strData = ""
Debug.Print "--------------"
End Sub
ここでは、ファイルを1行づつリードする関数 FileRead を使っています。
また、数字の抜き出しには CutStr 関数を使っています。
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
Public Function CutStr(ByVal Text As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
ありがとうございます。非常に参考になります。
コードをいただきましたが、調べながら解析しています。
いろいろな方法があるので勉強になりますね。
No.1
- 回答日時:
どういう構成、設計にしようとしているのかがさっぱり分からないのですが。
単純に考えれば、コンボボックスに「通勤時間A」「通勤時間B」...が選択できるようになっていて、コンボボックスで選んだ値によってリストボックスでrootの数字が出るとかそんな感じになるんじゃないんですかね?? 全然違うものを想定されているのでしょうか。
テキストボックスにまとめて取り込んで、改行マークを目印にしたりで、分割して配列に取り込んでなどの方法を考えたりもしましたが、もっと単純に分かりやすく、操作しやすい設計が幾らでも思いつくのですが。
とりあえずその想定に近いものを考えるなら、テキストファイルからの読み込みはTextStreamオブジェクトのreadlineメゾットを使って行うようにすれば、一行ずつの判定もしやすいですから、あとは条件別に仕分けるとかそんなイメージになりましたが。取り込んだあと検索するのではなく、取り込みの際にチェックするという方法。
http://www.officetanaka.net/excel/vba/filesystem …
ありがとうございます。
>単純に考えれば、コンボボックスに「通勤時間A」「通勤時間B」...が選択できるようになっていて、コンボボックスで選んだ値によってリストボックスでrootの数字が出るとかそんな感じになるんじゃないんですかね?
なんとなくあっています。が、このへんはまだ未定なのでどのようにでもできると思うのですが、「テキストの数値の取得はどうやるのかな?」というところで悩んでおりました。
>テキストファイルからの読み込みはTextStreamオブジェクトのreadlineメゾットを使って行うようにすれば~(略)
そのような方法があったのですね。一行ずつ判定していく方法は使えるかもです!しかも取り込みの際にチェックするのは2度手間がなくて良いですね。
先が見えてきました!URLを見て勉強させていただきます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育ソフト・学習ソフト vbsで分割した値をそれぞれの変数に 1 2022/10/17 19:52
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PDF PDFの出力時のファイル名を消したい 3 2022/09/05 01:16
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Excel(エクセル) エクセルの関数(式)を教えてください。 1 2022/09/27 09:28
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) 入力と同時に桁数を詰める 3 2022/09/11 20:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
四乗根を英語で言うと・・・
-
node* ってなんなのでしょうか?
-
HTMLからFLASHに変数を送り、内...
-
Flash Liteのムービークリップ...
-
PYTHONのtkinterについて
-
変数名に変数を使う
-
else if文の順序を変えることに...
-
当たり判定で一度だけ音をなら...
-
python ボタンを押すと複数の関...
-
for & duplicateMovieClip & fu...
-
良いソースの書き方について(複...
-
二次元ハッシュの引き出し方に...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
別のアプリケーションのテキス...
-
'2465'指定した式で参照してい...
-
テキストサービスについて
-
五芒星は、悪魔崇拝とどういう...
-
アセンブリ言語のcasl2について...
-
マウスオーバーで色が薄くなる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python ボタンを押すと複数の関...
-
四乗根を英語で言うと・・・
-
else if文の順序を変えることに...
-
pythonの画像の貼り付けについて
-
SNMPの標準MIBについて
-
Pythonのtkinterについて
-
Flashで、ナビゲーションがマウ...
-
2分木を中順でなぞりたいので...
-
FLASHで「かるた」を作りたいの...
-
クリックされたインスタンス以...
-
apache2でerror403について。
-
Excel VBAで読み込んだテキスト...
-
ホイールマウスで動かす
-
StandardMLの二分木に関する問...
-
AS3 MC内ボタンクリックでシー...
-
PythonでSetWindowPosを使うに...
-
node* ってなんなのでしょうか?
-
【as3】クリックでインスタンス...
-
for & duplicateMovieClip & fu...
-
オブジェクトのランダムな位置表示
おすすめ情報