- ベストアンサー
VBAを使った一部バイナリデータの読み書き方法
- VBAを使用して、一部のバイナリデータを読み書きする方法について教えてください。
- あるファイルの30行目までのデータを文字列として抽出し、31行目以降のデータをバイナリとして抽出する方法をお教えください。
- バイナリデータを読み込むVBAの方法はいくつかありますが、一部だけバイナリとして読み込む方法はわかりません。ご教授いただけますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
No.2 です。 > 読み込みファイルから、ヘッダ部位を配列a(30)に読み込んで、 > バイナリ部位をb(256)に読み込んだとします。 > どうやって、テキストデータとバイナリデータを合体させれば > 良いですか? すいません、『やりたいこと』を読み違えていました。 ヘッダ部位、バイナリ部位の両方とも同じファイルに出力 したいということですね。 以下の手順で行けると思います。 1. 書込ファイルにテキストでヘッダを出力 2. 書込ファイルをバイナリモードで OPEN 3. 出力位置を末尾に移動 (SEEK を使います) http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200501/200501_05010100.html 4. バイナリ部位をファイルに出力 # ヘッダ部分をテキスト出力せずに、1文字づつASC関数で # ASCIIコードに変換して全部バイナリ出力するという方法も # 考えられます。
その他の回答 (3)
No.2 です。 バイナリデータの書き込み方法は、質問者さんが 書かれているサイトにサンプルがありますよね。 1. 読込ファイルをオープンして、31行目まで読み飛ばす 2. 書込用のファイルをオープン 3. 読込ファイルから1バイトづつ読み込み、書込ファイル に1バイトづつ出力する。これを読込ファイルの最後 まで繰り返す 4. 全部終わったら2つのファイルをクローズ で、できると思いますが。 3. の具体的なコードが判らないということでしょうか…。
バイナリモードで先頭から読み込んでいって、30個目の 改行コードまで読み飛ばせば良いと思います。 Windowsの改行は CR+LF ですから、先頭から読み込んで いって 30個目の LF (ASCIIコード 10) の次からが31行目 (バイナリデータ)ですよね。
お礼
ありがとうございます。 この方法も良いですね でもファイルを出力する時にはどうしたら良いですか?
- bin-chan
- ベストアンサー率33% (1403/4213)
> また、30行目にheader endと書かれています。 ここまでのByte数を数えておけば?
お礼
ありがとうございます。 確かにその通りですね。 でもファイルを出力する時にはどうしたら良いですか? ファイルの途中までがASCII形式で途中からバイナリデータにするにはどうしたら良いですか?
お礼
ありがとうございます。 分からないのは四番目の、全部終わったら2つのファイルをクローズ というところです。 読み込みファイルから、ヘッダ部位を配列a(30)に読み込んで、 バイナリ部位をb(256)に読み込んだとします。 どうやって、テキストデータとバイナリデータを合体させれば良いですか?