
DATの読書きをしなくちゃいけない事になって
元のコードを元に書き出す事はできたのですが
読込みができなくて困っています。構造体の中に値を入れてるんですが
msgboxで値を表示しても、空白しか返ってきません。
ネットでも検索してみたんですが、どこがおかしいの分からなくてお手上げです。
どなたか宜しければおかしい所を教えて下さい。
Type TEST_DAT
TEST_A as string * 1
TEST_B as string * 2
TEST_C as string * 3
End Type
Sub a ()
Dim Dat as TEST_DAT
Dim Fn as integer
Fn = FreeFile
Open ThisWorkbook.path & "\Test.dat" For Random as #Fn Len = 6
Get #Fn , , Dat
Msgbox Dat.TEST_A
Msgbox Dat.TEST_B
Msgbox Dat.TEST_C
Close #Fn
End Sub
Datファイルの方には、上の構造体を使ってPut #Fn,,Dat
の様に書いて1行出力した物をそのまま使っています。
なので、データが無いって事はありません。
元のコードとネットで調べはしたのですが、上で問題無い様な気がして
おかしい場所がさっぱりわかりません。エラー等は一切返ってきてません。
Msgbox Len(Dat.TEST_A)の様にすると1,2,3と帰って来るので
値が入ってないのが悪いとはわかるんですが…。
No.1ベストアンサー
- 回答日時:
間違いないように見えますが、
試しに、下のtest()を動かすとどうなりますか。
sub a() はなにも変更していません。
Type TEST_DAT
TEST_A As String * 1
TEST_B As String * 2
TEST_C As String * 3
End Type
Sub test()
Call b
Call a
End Sub
Sub a()
Dim Dat As TEST_DAT
Dim Fn As Integer
Fn = FreeFile
Open ThisWorkbook.Path & "\Test.dat" For Random As #Fn Len = 6
Get #Fn, , Dat
MsgBox Dat.TEST_A
MsgBox Dat.TEST_B
MsgBox Dat.TEST_C
Close #Fn
End Sub
Sub b()
Dim Dat As TEST_DAT
Dim Fn As Integer
Dat.TEST_A = "A"
Dat.TEST_B = "BB"
Dat.TEST_C = "CCC"
Fn = FreeFile
Open ThisWorkbook.Path & "\Test.dat" For Random As #Fn Len = 6
Put #Fn, , Dat
Close #Fn
End Sub
お礼遅くなってすみません。
書いてもらったコードを新しいブックに張ったら問題解決しました!
結局何が原因で読めなかったのかわかりませんでした。
ありがとうございます。
No.3
- 回答日時:
もしかして、データの書き込み時、データ設定を以下のようにしたのではないのかな~
TEST_DAT = "ABBCCC" →スペースが設定されるので長さチェックでは分からない。
↓
(正解)
Dat.TEST_A = "A"
Dat.TEST_B = "BB"
Dat.TEST_C = "CCC"
No.2
- 回答日時:
Getは昔のBasic時代には良く使ったが、最近あまりVBAなどでは使わないので、十分の知識は無いが、
(用意)
メモ帳で
axyyyzbzwwwqcuwwwrdwrrrt
を打ち込み、test.datで保存。
ーーー
(VBA)
エクセルVBAで、標準モジュールに
Sub a()
Dim Dat As TEST_DAT
Dim Fn As Integer
Fn = FreeFile
MsgBox ThisWorkbook.Path
Open ThisWorkbook.Path & "\Test.dat" For Random As #Fn Len = 6
MsgBox LOF(1)
For i = 1 To LOF(1) / 6
Get #Fn, i, Dat
MsgBox Dat.TEST_A
MsgBox Dat.TEST_B
MsgBox Dat.TEST_C
Next i
Close #Fn
End Sub
と入れて、Book.xlsで保存(名前は何でも可)。
保存してからで無いと(新規作成中に実行してみると)、MsgBox ThisWorkbook.Pathが空白になって出るから注意。
実行する。
(結果)
a ー->xy--> yyz-->
b -->zw -->wwq-->
・・・
の順に次々表示されたが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロ 特定のセル値のみクリ...
-
先ほどの質問の続きなのですが...
-
【ASP.NET】 DataTextFieldの値...
-
marginとpaddingにマイナス
-
DBのデータをjavascript側で利...
-
PL/SQLでのTO_DATEの時間取得に...
-
パスワードの再入力処理
-
VBScriptで別フレームのセレク...
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBA ユーザーフォーム ボタンク...
-
PHP8でWarning:Undefined varia...
-
【ACCESS】リレーションを組ん...
-
[Excel VB]プルダウンで文字選...
-
エクセルでエラーを無視して一...
-
Excel VBA 配列の分割について
-
「XML」の読み方
-
利用者側のMACアドレスを取得し...
-
Excel VBAで、 ヘッダーへのセ...
-
Excle VBA Findメソッドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
VBA ドロップダウンリストを残...
-
C#の質問です
-
vb6のVSFlexGridで選択行、列の...
-
VB.NETでアクティブなformを知...
-
Excel VBAのリストボックスの値...
-
VB.NETのスクロールバーコント...
-
PL/SQLでのTO_DATEの時間取得に...
-
ユーザーフォームのテキストボ...
-
VBA(自然数)
-
マクロ 特定のセル値のみクリ...
-
マクロで奇数と偶数の値を2か所...
-
ACCESS VBA 画像ファ...
-
変数に代入してある数値を表示...
-
【ASP.NET】 DataTextFieldの値...
-
チェックした値を取得したい(C...
-
変数名の取得
-
windowsアプリケーションで小数...
おすすめ情報