質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

7337閲覧

VBAを使ってパックを項目を変換したいです

na-

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/06/22 03:04

編集2018/06/22 04:56

VBAを使ってdatファイル内のパック項目を変換するツールを作成しています。

ファイルを通常で開くとパック項目が読み込まれないためバイナリ形式で開いてみました。
しかし、半角カナが混在しているためなのかうまく読み込めません。逐一パック項目だけを抜き出したファイルを作成するしかないのでしょうか?

作成中のソースですが、ループ内の処理に入りません。

VBA

1Sub main() 2 Dim path As String 3 Dim buf As String 4 Dim rows As Variant 5 6 Open path For Binary As #1 7 Get #1,,buf 8 Close #1 9 rows = Split(buf,vbLf) 10 11For i = 0 To UBound(rows) -1 12 変換処理

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2018/06/22 04:03

パック項目ってなんでしょうか?ファイルのフォーマット、作成中のコードを提示してください。
na-

2018/06/22 04:48

ファイルフォーマットは固定長になります。
ttyp03

2018/06/22 04:51

テキストファイルですか?項目はどのように並んでいるんですか?パックってなんですか?パック10進数?コードの提示は?
na-

2018/06/22 04:58

テキストファイルです。パック10進数のことです。わかりづらくてすみません。
guest

回答2

0

バイナリで処理するならbyte型で処理する必要があると思いますが、コードで省略されているということは、そういった認識はないのでしょうね。

半角カナが混在しているためなのかうまく読み込めません。

固定長なんだから関係ありません。
逆に項目の開始位置を意識したプログラムじゃないと駄目です。

以下が参考になるかと思います。
VBA】Openステートメントでバイナリファイルを読み書きする

項目の取り出しとかも文字数ではなくバイト数で処理する関数やパラメータを意識することが必要です。
また、パックはさらにBIT演算も必要ですし、パック形式には種類があったはず。
(SAMPLE)EXCEL-VBA パック形式(バイト配列)を数字(文字型)に変換

投稿2018/06/22 05:22

編集2018/06/22 08:23
sazi

総合スコア25184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

bufに読み込めているかブレークポイントを張って確認する。
読み込めているのなら、改行コードはvbLfvbCrLfとか試してみるとか。

投稿2018/06/22 04:59

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

na-

2018/06/22 05:06

bufの中身をMsgboxで表示すると???†††?????のように表示されます。取得はできているのでしょうか。改行コードでは変わりませんでした。
ttyp03

2018/06/22 08:18

Getステートメントは読み込み先バッファの領域分のみ読み込むようです。 こちら参照。 http://officetanaka.net/excel/vba/statement/Get.htm なので、現状のコードだとファイル全体を正しく読み込めていないかもしれません。 上記リンク先にあるやり方を試してみてください。 但しこの方法だとファイルサイズが大きいと大量にメモリを消費しますのでお勧めしません。 下記サイトにあるように、1レコードを表す構造体を作って、1レコードずつ処理するほうが現実的かと思います。 http://typea.info/tips/wiki.cgi?page=Excel+VBA+%B8%C7%C4%EA%C4%B9%A4%CE%B9%BD%C2%A4%C2%CE%A4%F2%A5%D5%A5%A1%A5%A4%A5%EB%A4%AB%A4%E9%C6%C9%A4%E0 どのみちパック部分を抜き出す必要があるようですから、構造体は作ったほうが楽でしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問