アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAを使って、一部バイナリデータを読み書きする方法
を教えてください。

あるファイルが1行目から30行目までが普通のASCII形式でデータが書き込まれており、
31行目以降はバイナリデータとなっています。
また、30行目にheader endと書かれています。

このデータを30行目までは文字列データとして抽出し、
31行目以降はバイナリデータとして抽出して、
少し内容を書き換えてから、最初と同様に
30行目までをASCII、31行目以降をバイナリデータとして出力したいのですが
どのようにすれば良いですか?



http://homepage2.nifty.com/kasayan/vba/binary.htm
http://hanatyan.sakura.ne.jp/vbhlp/Binary.htm

バイナリデータの読み込み方は上記のページに書かれてあるのですが
いずれも、ファイルをまるごとバイナリ形式として読み込むもので
一部だけバイナリとして読み込むことはできないようです。
どなたかどうすれば良いか教えてください。

A 回答 (4件)

No.2 です。



> 読み込みファイルから、ヘッダ部位を配列a(30)に読み込んで、
> バイナリ部位をb(256)に読み込んだとします。
> どうやって、テキストデータとバイナリデータを合体させれば
> 良いですか?

すいません、『やりたいこと』を読み違えていました。
ヘッダ部位、バイナリ部位の両方とも同じファイルに出力
したいということですね。

以下の手順で行けると思います。
 1. 書込ファイルにテキストでヘッダを出力
 2. 書込ファイルをバイナリモードで OPEN
 3. 出力位置を末尾に移動 (SEEK を使います)
   http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2005 …
 4. バイナリ部位をファイルに出力

# ヘッダ部分をテキスト出力せずに、1文字づつASC関数で
# ASCIIコードに変換して全部バイナリ出力するという方法も
# 考えられます。
    • good
    • 0

No.2 です。



バイナリデータの書き込み方法は、質問者さんが
書かれているサイトにサンプルがありますよね。

1. 読込ファイルをオープンして、31行目まで読み飛ばす
2. 書込用のファイルをオープン
3. 読込ファイルから1バイトづつ読み込み、書込ファイル
  に1バイトづつ出力する。これを読込ファイルの最後
  まで繰り返す
4. 全部終わったら2つのファイルをクローズ

で、できると思いますが。
3. の具体的なコードが判らないということでしょうか…。
    • good
    • 0
この回答へのお礼

ありがとうございます。

分からないのは四番目の、全部終わったら2つのファイルをクローズ
というところです。

読み込みファイルから、ヘッダ部位を配列a(30)に読み込んで、
バイナリ部位をb(256)に読み込んだとします。

どうやって、テキストデータとバイナリデータを合体させれば良いですか?

お礼日時:2014/02/11 21:02

バイナリモードで先頭から読み込んでいって、30個目の


改行コードまで読み飛ばせば良いと思います。

Windowsの改行は CR+LF ですから、先頭から読み込んで
いって 30個目の LF (ASCIIコード 10) の次からが31行目
(バイナリデータ)ですよね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

この方法も良いですね

でもファイルを出力する時にはどうしたら良いですか?

お礼日時:2014/02/11 20:35

> また、30行目にheader endと書かれています。


ここまでのByte数を数えておけば?
    • good
    • 0
この回答へのお礼

ありがとうございます。

確かにその通りですね。

でもファイルを出力する時にはどうしたら良いですか?

ファイルの途中までがASCII形式で途中からバイナリデータにするにはどうしたら良いですか?

お礼日時:2014/02/11 20:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!