• ベストアンサー

PUTの連続使用

http://www.okweb.ne.jp/kotaeru.php3?q=194302 この質問の回答を頂いてプログラムを変更したのですが、また詰まってしまいました・・・(T.T) Open strTmp For Binary As #1 Put #1, , strCom Put #1, , "EXIT" Close #1 として、ファイルstrTmpの中身をみると、(strCom=dir/wとする) dir/wEXIT となっています。 希望する結果は、 dir/w EXIT なのですが、方法はあるでしょうか? VBのHELPを参照した感じでは、配列変数を使えばいいみたいですが、strComの値は可変です。 ついでの質問ですが、VBのプログラムをするにあたって、VBのヘルプを利用するだけで技術アップは望めるでしょうか? 市販の書籍は必要とする部分が少なく金額も高いため考えてしまいます。

  • hidezo
  • お礼率85% (193/225)

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

Put #1, , strCom Put #1, , vbCrLf '改行コード Put #1, , "EXIT" っていうか、1行づつならPut以外の方法をお勧めします。 Open strTmp For For output As #1 Print #1, strCom Print #1, "EXIT" close #1

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=169686
hidezo
質問者

お礼

vbCrLfというのがあったんですね。(&H13を追加してみたりしたのですが、うまくいかなくて) Printのほうは、初めて知りました。 For outputでファイルを開いて、writeでやったら、文字列の前後に"~"が入ってしまって、Binaryで何とかしようと思ってましたので、助かりました。 今日、さっそくやってみたいと思います。 私の場合、昔N88 BASICをやってたので、当時のコマンドで何とかしようとしてしまうのが原因かもしれません。 うちのVBは、ヘルプでOPENを検索しても灰色の文字で内容が表示できないんのだけど、MSDNの使い方が悪いのかな?

hidezo
質問者

補足

アドバイスを参考にプログラム変更で目的のファイル出力ができました。 でも、なぜか他の部分がうまくいかないんです。 strTmpは、abc.bat(DOSのバッチファイル) strComは、 dir/w EXIT その後、shell(strTmp,~)とすることで、DOS窓を開いて、dir/wを実行後、EXITでDOS窓を閉じるはずなのですが、なぜかDOS窓が閉じてくれないんです。 手動でDOS窓開いて、手動でabc.batを実行だとbat内の最後のEXITでDOS窓が閉じるんだけど・・・ このあたり分かればよろしくお願いします。

その他の回答 (1)

  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

>vbCrLfというのがあったんですね ちなみに、vbNewLineというのもあります。 Microsoftではこちらのほうを薦めているようです。 このあたりは、VBのヘルプにあります。(ただ、インストール時のMSDNにあるかどうかは、未確認。すいません)

hidezo
質問者

お礼

ありがとうございます。 VBのヘルプを含めまだまだ勉強が必要と感じました。 これからも頑張っていきたいと思います。

hidezo
質問者

補足

その後、shell(strTmp,~)とすることで、DOS窓を開いて、dir/wを実行後、EXITでDOS窓を閉じるはずなのですが、なぜかDOS窓が閉じてくれないんです。 手動でDOS窓開いて、手動でabc.batを実行だとbat内の最後のEXITでDOS窓が閉じるんだけど・・・ このあたり分かればよろしくお願いします。 この件ですが、できました! ヘルプでよく調べてみたら書いてありました。 お手数おかけしました。 参考に・・・ shell("command.com/c "+strTmp,~) で、終了後閉じるようになりました。 回答、補足の記入がめちゃくちゃになってしまいましたが、教えてくれた方ありがとうございました。

関連するQ&A

  • メンバ変数に関して

    現在、C++にてプログラム作成しております。 1点プログラミングを行っている中で疑問になった点があります。 アイデア・方法等があれば教えて頂けると幸いです。 現在、メンバ変数として配列を定義したプログラムを作成しております。 そのメンバ変数を同クラス内のたくさんのメソッドから呼び出して処理を行っているのですが、そのメンバ変数の配列数を固定配列数ではなく、可変な配列数にしたいと考えております。 プログラムの実行後に取得した値をメンバ変数の配列数にしたいのです。 このように、メンバ変数の配列数の可変可を実施することは可能でしょうか?

  • VBの文字列型について教えてください

    VBの文字列型についてヘルプを見てもわからないことがあります。 どなたか教えてください。 MSDNのヘルプでは、「固定長」は64kBまで、「可変長」は2GBまで、と何箇所も書いてあります。 が、どのようにしたら可変長に指定できるのかがわかりません。 最大で数MBのテキストファイル内容を1つの文字列変数に入れて扱えたら助かるんですが・・・・ お願いします。

  • Ftpファイル転送バッチ

    Ftpで ファイル転送をしたいです。 ******************* 1,ftp ***.***.***.*** 2,ID 3,パスワード 4,binary 5,put ファイル名 6,bye 7,exit ******************* 上記の様に実行したいです。 2,3は手入力 その他は自動 初心者なので クライアントヘルプをみても 理解できませんでした。 わかりやすい説明を出来ればお願いします。 よろしくお願いします。

  • char型でビット列表示

    char型の変数にビット配列を代入しそれを文字として出力させたいのです。 どこが間違っているのか分かりませんが一応流れを書いたプログラムを載せておきます。 char binary = 0; int i; for(i=0;i<8;i++){ if(省略) binary = binary & 11111110; else binary = binary | 00000001; binary = binary << 1; } printf("実行結果 %c",binary); 実行結果 00110110 というように最下位ビットに0か1を代入し、左シフトをし、というのを繰り返しprintf("%c",binary)でビット列を表示させたいのですが、これを実行すると結果は文字化けしたようなものが表示されます。 charの配列を作ってビット列を表示させるやり方はわかるのですが、学校の課題みたいなもので配列を使ってはいけないみたいなのです。 教科書を読んでも分からないので困っています。 よろしくお願いします。

  • エクセルのVBAでオブジェクトの配列変数は使えますか?

    VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。

  • フォームの連続操作でエラーが出てしまう。。。

    おはようございます。 ご教授頂きたく、書き込み致しました。宜しくお願 い致します。 フォームにて抽出条件を指定後、クエリーを実行させ、EXCELに出力させる処理を、VBにて行っています。 連続操作(出力したEXCELは閉じて、ACCESSは開いた ままで、抽出条件を変えて再度実行させる)を行う と「オブジェクト変数またはWithブロック変数が設 定されていません」とエラーメッセージが出てしま います(この時、EXCELにデータだけは出力されてい ます) ACCESS及び出力されたEXCELを、一旦閉じて、再度ACCESSを起動し、条件指定後、抽出を行うと、エラ ーも出力されず、問題なく処理が始まります。 VB上では下記の様に記述はしています。 Exit_コマンド2_Click: Exit Sub objexcel.ActiveWorkbook.Close True objexcel.Quit Set objexcel = Nothing Err_コマンド2_Click: MsgBox Err.Description Resume Exit_コマンド2_Click End Sub どうしても分からないので、書き込みさせて頂きました。連続操作をしてもエラーが出ないようにするには、どのようにすれば宜しいでしょうか?

  • 配列の内容をファイルの書出す

    2次元配列のデーターを書出す方法で困っています。 プログラムを以下のようにして書出したいデーターは x(1,0 To 5) の内容だけ書出したいのですがPut #1,, をどの用に書けばよろしいでしょうか。 Dim x(5,5) as Byte OPEN "C:\AAA" for Binary as #1 Put #1,,xx おねがいします。

  • 宣言した変数、配列をプログラム実行中なるべくたやすく初期化したい。

    VB.Net2003を使用しています。 最初プログラムを実行中、宣言した変数、配列をプログラムをなるべくたやすくまとめて初期化する方法はありませんか。

  • バイナリデータの中からMidのように指定範囲を取得したい

    教えて下さい。 VB6です。 テキストファイルをバイナリモードで開き、Midのように特定の位置から、 必要な分を取得し、ファイルを分割させたいです。 調べてたら、 Open 読込ファイル For Binary As #1 Open 書込ファイル For Binary As #2 ReDim bytData(1 To LOF(1)) Get #1, , bytData() Put #2, , bytData() close #1 close #2 というのを見つけました。これだとそのままコピーします。 ここから、指定された、バイト数目から指定されたバイト数までの データを取得し別のファイルを作りたいのですが、 うまくできません。どうしたら、望むことができるでしょうか? お助け下さい。

  • smbclientの戻り値を取得

    お世話になります。perlプログラムからshellを呼び出して shellでsmbclientを呼び出すのですが、smbclientの戻り値を 受け取るにはどうしたらよいでしょうか? test1.pl $re = system "sh test1.sh"; test.sh smbclient //host/dir -U user%passwd put ... put ... exit イメージはこんな感じです。 宜しくお願いします。