- ベストアンサー
バイナリーファイルの追記
VB初心者です。 3レコードからなる90バイトのバイナリーファイルの 最後のレコードだけを上書きしたいのですが、うまく いきません。どう書けば良いのでしょうか? 宜しくお願い致します。 '------------------------------------------------ Public Type REC_INFORMATION AA As Long BB As Single CC As Single DD As Single EE As Single FF As Single GG As Single HH As Integer End Type Public RecInfo As REC_INFORMATION '------------------------------------------------------------- Dim ByteCNT as Long RecInfo.AA = CLng("123") RecInfo.BB = CSng("123") RecInfo.CC = CSng("123") RecInfo.DD = CSng("123") RecInfo.EE = CSng("123") RecInfo.FF = CSng("123") RecInfo.GG = CSng("1") RecInfo.HH = CInt("1") Open "c:\TEST.bin" For Binary As #1 ByteCNT = LOF(1) Seek #1, (ByteCNT - 29) Put #1, , RecInfo Close #1
- retsu
- お礼率50% (2/4)
- Visual Basic
- 回答数3
- ありがとう数8
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Randomファイルはレコード単位で扱うべきです。 Open File For Random As #1 Len = len(構造体) レコード数 = (LOF(1) \ len(構造体)) + 1 Get #1, レコード番号, 構造体 Put #1, レコード番号, 構造体 Close #1
その他の回答 (2)
- kachimi
- ベストアンサー率40% (12/30)
#1です。 GETしているのであればシーク位置が移動するため再度SEEKする必要があると思います。 しかし、#2さんの言われるようにRandomでレコード単位でされたほうがいいですよ!
お礼
kachimiさん ありがとうございました。 また見かけたら宜しくお願い致します。
- kachimi
- ベストアンサー率40% (12/30)
出来るような気がするのですが・・・ どのように出来ないのか、補足願います。
補足
失礼致しました。補足致します。 一度以前のファイルの最後のレコードのRecInfo.AAを取得し、 今回取得した123と同一であれば上書き,違うのもであればファイルの最後に新しく今回のレコードと追加するという仕様です。 そのコーディングの途中段階であり、"GET"している部分が抜けていました。この先がうまくできないので困っています。 宜しくご指導願います。 '-------------------------------- Open "c:\TEST.bin" For Binary As #1 ByteCNT = LOF(1) Seek #1, (ByteCNT - 29) Get #1, , RecInfo.AA '補足部分 Put #1, , RecInfo Close #1
関連するQ&A
- ACCESS レポートで同じ値のときは先頭のみ表示したい
いつもお世話になっております。また教えてください。 下記のようなレポートがあります。 (番号+日付+名前順、番号でグループ化) 番号 日付 名前 金額 1000 0820 AA 1000 1000 0820 BB 2000 1000 0821 CC 3000 1000 0821 DD 4000 1000 0822 EE 5000 1000計 15000 2000 0820 FF 10000 2000 0820 GG 20000 2000 0821 HH 30000 2000 0821 II 40000 2000 0821 JJ 50000 2000計 150000 これを下記のようにしたいのです。 番号 日付 名前 金額 1000 0820 AA 1000 BB 2000 0821 CC 3000 DD 4000 0822 EE 5000 1000計 3件 15000 2000 0820 FF 10000 GG 20000 0821 HH 30000 II 40000 JJ 50000 2000計 2件 150000 1.同じ値は先頭のみ表示する 2.番号グループ内の日付の個数を数える この方法を教えてください。Access2000です。 よろしくお願いします。
- ベストアンサー
- Access(アクセス)
- エクセルの表を回転したいのですが
こんなことってできるのでしょうか。 1aA 2bB 3cC 4dD 5eE 6fF 7gG という風に書き込んでいる表があるのですが、これを 12345678 abcdefgh ABCDEFGH と書き直したいのです。 ご存じの方、よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- VBAでCSVファイルを分割したい
VBAを利用して、あるCSVファイルを一定のレコード数ごとに新しいファイルにファイル分割したいです。 やりたいことは、以下のようなイメージです。 関連サイトなどを参考に自分なりに取り組んでみましたが、なかなかうまくいきません。 VBAでなくても実現できそうですが、ここまでやったので勉強のためにもVBAでやりたいです。 サンプルコードなど教えていただけるとうれしいです。 ヒントでも結構ですので、よろしくおねがいします。 (2レコードずつ分割する例) sample.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666 ↓↓↓ ☆sample_1.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 →各ファイルにヘッダも入れたいです。 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ☆sample_2.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 ☆sample_3.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666
- ベストアンサー
- Visual Basic
- 選択による表示の可否を含めた複雑な計算表について
下記のような計算表を作りたいのですが… AA 1 2 3 4 BB 11 12 13 14 15 ※AAのチェックによって表示され、選択可能 <例> ・AA-1を選択するとBB-11,12のみ表示して1つのみ選択可能 ・AA-2を選択するとBB-11,12,14のみ表示して 〃 ・AA-3を選択するとBB-11~15表示して 〃 CC テキストボックスでユーザ入力 DD テキストボックスでユーザ入力 EE CC×DD×<AAのチェックとBBのチェックによる数字> <例> ・BBの<例>と同じ条件の元で AA-1---BB-11→15(チェックにより掛ける数字) 〃 ---〃 12→18( 〃 ) AA-2---BB-12→22( 〃 ) 〃 ---〃 14→27( 〃 ) AA-3---BB-13→31( 〃 ) 〃 ---〃 15→35( 〃 ) FF Aa Bb Cc Dd Ee ※AAとBBの条件と連動して、表示され選択可能 <例> ・AA-1を選択するとBB-11,12のみ表示し、1つのみを選択。FF-Aaのみ表示 ・AA-2を選択するとBB-11,12,14のみ表示し、 〃 。FF-Aa,Ccのみ表示 ・AA-3を選択するとBB-11~15表示し、 〃 。FF-Bb,Ccのみ表示 GG セレクトボックスで4割~8割から選択 HH a b c d e f g BBの選択内容とFFの選択内容によって表示(選択は1つのみ) ※ 後の計算によって数字変更 <例> BB-11---FF-A---HH-a~c(a:3,b:6,c:10) 〃 ---〃 B---〃 a,c,f(a:4,c:5,f:8) 〃 ---〃 C---〃 c~g(c:4,d:5,e:8,f:14,g:18) BB-12---FF-A---HH-a~c(a:11,b:14,c:18) 〃 ---〃 B---〃 b,d,f,g(b:7,d:9,f:12,g:13) 〃 ---〃 C---〃 c~f(c:1,d:3,e:9,f:11) 「計算」ボタンと「リセット」ボタン ※「計算」ボタンをクリックするとIIとJJ」に計算内容を表示 ※「リセット」ボタンをクリックすると、すべてリセットさせる。AAのみ表示を残す II EE×GG JJ (AAとBBとFFのチェックによる数字)×(20-HH)×II÷2 <例> AA-1---BB-12---FF-A→12(掛ける数字)×(20-HH-a)×II÷2 〃1---BB-12---〃 B→17(掛ける数字)×(20-〃c)×〃÷2 ・ ・ -------- 計算が大きく2つに別れて計算という形になるのですが、 <<1>> -AA-1---BB-11---FF-A-|→EEで必要な数字15 | | |-〃12---〃 -|→ 〃 18 | | -〃2---BB-11---FF-A, C-|→EEで必要な数字20 | | |-〃 12--- 〃 -|→ 〃 22 | | |-〃 14--- 〃 -|→ 〃 27 | | -〃3---BB-11---FF-B,E-|→EEで必要な数字28 | |-〃 12--- 〃 -|→ 〃 30 | |-〃 13--- 〃 -|→ 〃 31 | |-〃 14--- 〃 -|→ 〃 32 | |-〃 15--- 〃 -|→ 〃 35 | ・ - ・ <<2>> ※ < >の数字は掛ける時に必要な数字 -BB-11---FF-A---HH-a<3> | | | |--〃b<6> | | | |--〃c<10> | | | | | FF-B---HH-a<4> | | | |--〃c<5> | | | |--〃f<8> | | | | | FF-C---HH-c<4> | | | |--〃d<5> | | | |--〃e<8> | | | |--〃f<14> | | | |--〃g<18> | | -BB-12---FF-A---HH-a<11> | | | |--〃b<14> | | | |--〃c<18> | | | | | FF-B---HH-b<7> | | | |--〃d<9> | | | |--〃f<12> | | | |--〃g<13> | | | - ・ | ・ ※ < >の数字は掛ける時に必要な数字 <例>AA-1---BB-12---FF-A<12>×(20-HH-a<3>)×II÷2 という感じになります。 大変分かりにくいとは思いますが、ご教授の程よろしくお願いします。
- ベストアンサー
- JavaScript
- 同じレコード単位で纏めて、違うレコードとの間に行挿入をしたい。
同じレコード単位で纏めて、違うレコードとの間に行挿入をしたい。 A列~D列まで入力されて1000行あります。 A列を基準にソート済みなので以下のようになります。 A列 B列 C列 D列 A1 123 AA BB CC A2 123 DD BB CC A3 123 DD EE CC A4 456 FF GG HH A5 456 JJ KK CC A6 789 JJ LL MM A7 789 NN PP QQ A8 789 RR PP CC これでA列の値が相違する場合そこに空白行を挿入したいです。 A列 B列 C列 D列 A1 123 AA BB CC A2 123 DD BB CC A3 123 DD EE CC A4 A5 456 FF GG HH A6 456 JJ KK CC A7 A8 789 JJ LL MM A9 789 NN PP QQ A10 789 RR PP CC これを1000行手作業で行うのは大変なので一括で行いたいです。 方法はありますでしょうか? お願いします。
- ベストアンサー
- オフィス系ソフト
- 検索、抽出して別の表を作りたい
A BC DE FG HI JK LM 1 青木 井上 上野 江藤 小川 加藤 2 1日 aa aa bb bb - - 3 2日 泊cc 出cc 出cc 出cc aa 出cc 4 3日 出cc dd dd dd dd dd 5 ・ ・ ・ ・ ・ ・ 29日 ee 出ff 出ff - ee ee 31 30日 出cc dd dd dd dd 泊cc 32 31日 出gg 出gg 出cc ee - 出cc ローマ小文字は場所、出=出張、泊=宿泊を伴う出張を表していて こういう表があるのですが、この表を元に別の表を作りたいのですが ・「出」または「泊」のある日にちを若い日付から順に表示させたい <表1> 青木 井上 上野 江藤 小川 加藤 2日cc 2日cc 2日cc 2日cc 2日cc 3日cc 29日ff 29日ff 30日cc 30日cc 31日gg 31日cc 31日cc 31日gg <表2>(※出張は出+泊の人数) 2日 cc出張=計5人 宿泊=1人 3日 cc出張=計1人 29日 ff出張=計2人 30日 cc出張=計2人 宿泊=1人 31日 cc出張=計2人 gg出張=計2人 どなたかよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- "excel"もしくは"秀丸"で削除したいデータを同時に複数のデータを
"excel"もしくは"秀丸"で削除したいデータを同時に複数のデータを選択指定して削除したいのですが、、 よくわかりません。おしえていただけますでしょうか、、 例を下に記入いたします。 =================== 例) 【元のデータ】 aa bb cc dd ee ff gg 削除したいデータ:"aa"と"dd" *この2つを同時に選択指定して削除希望です。 【削除後のデータ】 bb cc ee ff gg =================== もし、エクセルもしくは秀丸で仮に方法が無い場合、他のツールを使用した方法でも 嬉しいです。 よろしくお願いいたします!!
- ベストアンサー
- その他MS Office製品
- DELETEのwhere句について
SQL文について教えていただけないでしょうか? 力不足のため苦しんでおります。 宜しくお願い致します。 TBLいいの項目EEが100以外かつFFが50以下で 抽出される全ての項目AAをKEYにしてTBLいいを 削除したいのですがわかりません。 DELETEののwhere句について教えてくいただけ ないでしょうか?。 条件 DB:SQLServer2000 TBLああ AA BB CC DD TBLいい AA EE FF GG
- ベストアンサー
- SQL Server
- EXCELで指定した範囲の値を検索し、範囲内に対応する行の見出しを調べるには
EXCEL2003で、シート内に以下のように値が設定されている場合に、 B1からD4の範囲を検索して値が一致した行のA列の値を求めるには どのようにすればよろしいでしょうか。 たとえば、文字列「EE」で検索して「いいい」を求めたいのです。 A B C D 1 あああ AA CC FF 2 いいい BB EE 3 ううう DD 4 えええ GG HH VLOOKUP関数を使用すれば列内や行内での検索は出来ますが、 複数行列内の検索は出来ないようです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 条件に合ったデータを抜き出す
A B C D 1 あ AA VV FF 2 い CC FF HH 3 あ SS FF DD 4 う SS EE AA 以上のようなデータが有るときに、別シートに A列のデータを条件に以下のように抜き出したいのです。 別シートの各セルに式が入っていて、上記データを 変更しても別シートの抽出結果が自動で変わるようにしたいです。 ”あ”の抽出 あ AA VV FF あ SS FF DD ”い”の抽出 い CC FF HH ”う”の抽出 う SS EE AA
- ベストアンサー
- オフィス系ソフト
お礼
todo36さん ありがとうございました。 大変勉強になりました。