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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
- Visual Basic(VBA) 飛び地セルの空白判定 2 2022/10/24 15:54
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBA 複数選択したリスト...
-
マクロ 特定のセル値のみクリ...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
テキストボックスの設定。
-
VBAでWEB上の入力項目に値をい...
-
Excel VBAのリストボックスの値...
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETのスクロールバーコント...
-
vbscriptを使いexcelを参照して...
-
AccessVBA 帳票フォームの非連...
-
Powershellのparamについて
-
VB.NETでアクティブなformを知...
-
ListBoxでオートフィルター表示
-
IP Address Controlから値を取...
-
InStr の不具合
-
[VBA]選択範囲の下から上に処理...
-
最大・最小を求めるプログラム
-
VBとVBAとUSB-IOについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
Geogebraの操作方法について
-
VB.NETでコンボボックスの1行目...
-
VB初心者。小数点以下の表示で...
-
変数名の取得
-
値を返さないコード パス
-
【C++/CLI.NET】コンボボックス...
-
Excel VBAのリストボックスの値...
-
PL/SQLでのTO_DATEの時間取得に...
-
Powershellのparamについて
-
vbaの繰り返しで求める最大値に...
-
C#の質問です
-
VBA ドロップダウンリストを残...
-
VBA(自然数)
-
シーケンサで最小値を保持する
-
[VBA]選択範囲の下から上に処理...
-
vbscriptを使いexcelを参照して...
-
[VB.net] DataGridViewのコンボ...
-
変数に代入してある数値を表示...
おすすめ情報