Microsoft-VisualBasic6でプログラミングしてます。

外部から(不特定の)ファイル名を指定して、
VBモジュールを起動して処理をしたいのですが、
C言語でいう、(argv,argc)みたいなものを使って(いわゆるコマンドライン引数)、
VBプログラミングする方法を教えて下さい。

<実行例>
 ・(モジュール名) (任意のファイル名)
  vbmodule.exe sample-a.cvs

このQ&Aに関連する最新のQ&A

A 回答 (5件)

これで取得可能です。


ファイルをドラッグしてきたときは、ファイルのパスが入ります。
複数のドラッグの場合は、スペース区切りでやってきます。
注意すべきは、昔のDOS企画に添わないスペースや、ファイル名が8文字以上のあるファイルは、ダブルコーデーションで覆われて渡されます。


c:\1.txt "C:\Program Files\Microsoft Visual Studio\VB98" c:\Winnt\win.exe
といった感じです。
※注意 Uboundだけでは使用できませんのであしからず・・・


Sub Main()
  Dim strPara As String
  strPara = Command()
  
  MsgBox strPara
End Sub

上記のソースで試してみましょう。

開発環境では
ツールバーの[プロジェクト(P)]
<<プロジェクト名>>のプロパティ
を選択して、
[実行可能ファイルの作成]の中にある、コマンドライン引数に文字列を入れてあげると、毎回コンパイルして実験しないでも、開発環境でテストができます。
    • good
    • 0
この回答へのお礼

とてもわかり易いアドバイス、ありがとうございました。

お礼日時:2001/10/31 14:21

コマンドの引数の分解などはSplit関数を使用すると簡単です。



添え字の無い文字型配列を宣言しておいて
文字列配列()=Split(Command$," ")
とすると分解できます。

何件あるか、はUBound(文字列配列())で取得できます。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

お礼日時:2001/10/31 14:24

「Command 関数」で、お望みのことができます。



試しに、次のようなプログラムをコンパイルして、引数にいろいろ書いて動かしてみて下さい。

  Private Sub Form_Load()
   Text1.Text = Command  ← Text1 という名前のテキストボックスを作って…
  End Sub

これで TEST.EXE を作成したとすると、例えば

  TEST sample-a.cvs

で、テキストボックスには sample-a.cvs と表示されます。

Command 関数のヘルプで使用例を見ると、もっと詳しい情報(argc/argv のように各ワードに分解する方法など)が書かれていますので、ご参照下さい。

以上、VB6 SP5 で確認しました。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

お礼日時:2001/10/31 14:23

Commandという関数で取得できますよ。



以下例。
Dim strCmdLine As String
strCmdLine = Command()
以上

をForm_Loadに記述すれば、
strCmdLineには"sample-a.cvs"が入ります。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

お礼日時:2001/10/31 14:23

Command$という関数がパラメータを文字列で持っています。


複数のパラメータを使用する場合は、
スペースで分割する必要があります。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

お礼日時:2001/10/31 14:22

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【確率統計】99%信頼区間に6個中、5個入ること?

Aが、Bと同等であることを示したいです。

A及びBは正規分布を示し、Bはμ=100、σ=1.0という前提です。

Aを5個測定して、Bの99%信頼区間に入れば、BはAと同等であると言いたいのですが、その場合、危険率は5%となります。

測定結果が信頼区間から外れる確率は5%あるので、判定基準を5個中、5個としてしまうと厳しい判定だと思います。
そこで、6個中、5個が99%信頼区間に入ればAはBと同等と結論付けたいと思いますが、これでは判定が緩すぎると言われる不安があります。

測定のn数はこれ以上増やせません。
6個中、5個でOKとすることについて、どのように理論だてれば良いでしょうか?
また、1個は外れ値が出てもOKとすることを前提として、「6個中、5個が99%信頼区間に入る」の代案がありましたら、ご教示お願いいたします。

Aベストアンサー

> Aを5個測定して、Bの99%信頼区間に入れば、BはAと同等であると言いたいのですが、その場合、危険率は5%となります。

99%信頼区間とありますが、母平均の信頼区間ではないですよね。
多分、Bの分布の99%を覆う区間のことを言っているのだと思いますが、それを信頼区間とは呼ばないでしょう。

さて本題ですが、もしAがBと同じ分布であるなら5個のデータがすべてBの99%区間に入る確率は0.99^5=0.95099なので、確かにほぼ有意水準5%の検定になります。
一方6個中5個以上とすると0.99^5*0.01*6+0.99^6=0.99854なので、有意水準0.146%の検定になります。
データ数が異なるので一概には言えませんが、有意水準を小さくとると検出力は悪くなるので、判定が緩すぎると言われる可能性がありますね。
でしたら、99%区間ではなくもう少し狭めて有意水準を5%となるようにしては如何でしょうか?
0.93715^5*(1-0.93715)*6+0.93715^6=0.95000

しかし、この方法ではAとBが同じ分布であるという検定にはなりませんね。
平均と分散が異なっていてもBの99%区間に入いる確率が99%である分布を考えてみてください。

もし、「A及びBは正規分布を示し、Bはμ=100、σ=1.0という前提」が確かならば、Aのデータから標本平均と標本分散を計算し、μ=100、σ=1.0かどうか検定した方が良いように思います。
このとき、個々の検定の有意水準は2.5%とします。
データ数は多い方が良いので5個よりは6個ですべきです。

あと付け加えると、同等性の検定について調べてみることをお勧めします。
簡単に説明すると、統計的仮説検定は同じであるということが基本的にはできません。
そこで、ある程度以上の違いを十分な検出力で検出できるように検定し、その結果有意でなければ、帰無仮説を支持しようというのが同等性の検定です。

> Aを5個測定して、Bの99%信頼区間に入れば、BはAと同等であると言いたいのですが、その場合、危険率は5%となります。

99%信頼区間とありますが、母平均の信頼区間ではないですよね。
多分、Bの分布の99%を覆う区間のことを言っているのだと思いますが、それを信頼区間とは呼ばないでしょう。

さて本題ですが、もしAがBと同じ分布であるなら5個のデータがすべてBの99%区間に入る確率は0.99^5=0.95099なので、確かにほぼ有意水準5%の検定になります。
一方6個中5個以上とすると0.99^5*0.01*6+0.99^6=0.99854な...続きを読む

QVBのフォームモジュールと標準モジュールの使い分け

VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。
フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。
標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。
あってますでしょうか?

フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか?
それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか?
どなたか、教えてくださいませんか?
いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か
わかりません。よろしくお願いいたします。

Aベストアンサー

>標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり
で良いと思いますよ。
逆に
>フォームが1つでも、同じ処理を繰り返す場合
は、フォームモジュールの中に関数を作ってしまうので良いのでは?

参考になるかわかりませんが、私はDBとの接続や、起動時の全フォームのロード、定数やプロジェクトレベルでのグローバル変数の宣言等に使用しています。
そういえばMain関数は標準モジュールにしか書けませんでした…っけ?
メッセージボックスを表示する際の関数を自分で定数とMsgBox()を組み合わせて使い勝手の良い物にする…というのもよくやります。

Q白球5個、赤球2個、黒球3個の計10個を2組に分ける方法は何通りか

白球5個、赤球2個、黒球3個の計10個を2組に分ける方法は何通りか
まず、白球5個は(5,0)、(4,1)、(3,2)の3通りに分けられると考えました。
次に白球5個を(5、0)に分けた場合、赤球2個は(2,0)、(1,1)、(0,2)の3通り、黒球3個は(3,0)、(2.1)、(1,2)、(0,3)の4通りに分けられるので、計12通りに分けられると考えました。同様に、白球5個を(4,1)、(3,2)に分けた場合も赤球2個と黒球3個をそれぞれ計12通りに分けられるので、最終的に白球5個、赤球2個、黒球3個の計10個を36通りに分けられると考えました。
しかし、間違っているようです。どこか間違っているのか分かりません。アドバイスいただければと思います。よろしくお願い致します。

Aベストアンサー

10個と0個に分けた場合は2組に分けたとは言わないのでは?

答えは35通りではないですか。

QVisualBasic 2005 にてプログラミングの学習をしていて、

VisualBasic 2005 にてプログラミングの学習をしていて、疑問に思った点がありましたので質問させて頂きました。

Form1とForm2を作成しています。
その時にForm2を非表示で起動したいと考えた(Form2_Loadイベントを実行したい)のですが、
Form2を非表示で起動させる事が出来ません。

<Form1側 Button1_Click>
'モーダル表示
Dim frm2 As New Form2
frm2.ShowDialog()

<Form2_Load>
'非表示
Me.Visible = False

上記コードだと、Form2が表示されてしまいます。
これを非表示でLoadイベントを実行させる方法をご存知の方がいらっしゃれば教えて頂きたい
と思います。

初歩的な質問で申し訳ないのですが、よろしくお願いいたします。

Aベストアンサー

"非表示で実行" って?
Dim frm2 As New Form2
て時点ですでに Form2 は Load されてるんだが。

<Form1 の Button1_Click>
Dim frm2 As New Form2
MessageBox.Show(frm2.Label1.Text)

で Form2 の Label2 に設定されているテキストを取得できる。

Qコロッケ1個10円お一人様5個まで  何個買いますか?

「コロッケ1個10円お一人様5個まで」
みなさんは今晩のおかずなら何個買いますか?
何回も並んでたくさん買ったり、一緒に連れている子供を一人としてたくさん買いますか?

わたしは5個買っちゃいました。
明日の朝もこれでコロッケは決定です。

Aベストアンサー

そりゃ安い!早速並ばねば!!
7人家族に5個では喧嘩の元!
子どもにも並ばせて10個は最低ライン。
がんばって15個ゲットできたら翌朝コロッケサンドイッチに決定。
・・・たしか冷凍コロッケがあったはずだけど。

QVisualBasic6からVB2005に移行に難儀しています。

.NETが流行りだした時期にパソコンから遠ざかっていましたので、昔作成したVB6のアプリケーションをVB2005に書き直そうと大それたことを考えています。
VB6のソースをVB2005に自動的に書き直すVisualBasic アップグレードウィザードで変換しましたが、案の定、変換エラーだらけでした。

Public easy(5) As Boolean等はそのまま変換していますが、Typeでユーザー定義型を作成した配列は、
以下のようにVB6だけの知識では理解不能な書き換えや説明が付加されていました。

StructureはTypeの意味だとわかりますが、<VBFixedArray((10))>や
変数を初期化する必要があるなど、どのタイミングで初期化する
(追加記述しなければいけない部分が何なのか)わかりません。
また、ステートメントやメソッド?が異なる(アップグレード)されたとか
詳細についてクリックしてくださいとありますが、クリックしても無反応でした。

Structure AruKata
Dim num As Byte
<VBFixedArray((10))> Dim pos() As Byte 'char
'UPGRADE_TODO: この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。 ...
Public Sub Initialize()
ReDim pos(10)
End Sub
End Structure

'UPGRADE_WARNING: 配列 AruKata で各要素を初期化する必要があります。 詳細については...
Public difficult(8) As AruKata

このようにVB6からVB2005に移行するにあたって、よく説明している書籍など(あるのかな?)ありましたら教えてください。

.NETが流行りだした時期にパソコンから遠ざかっていましたので、昔作成したVB6のアプリケーションをVB2005に書き直そうと大それたことを考えています。
VB6のソースをVB2005に自動的に書き直すVisualBasic アップグレードウィザードで変換しましたが、案の定、変換エラーだらけでした。

Public easy(5) As Boolean等はそのまま変換していますが、Typeでユーザー定義型を作成した配列は、
以下のようにVB6だけの知識では理解不能な書き換えや説明が付加されていました。

StructureはTypeの意味だとわかりま...続きを読む

Aベストアンサー

VB6からVB2005への移行は、VBマイグレーションと呼ばれています。
マイクロソフトにもたくさん情報がありますし、書籍も出ています。
他の会社もサポート情報を出してたりします。
検索してもたくさん出てきますよ。

マイクロソフトのVBマイグレーションセンターを参考URLに入れておきますね。

参考URL:http://www.microsoft.com/japan/msdn/vbasic/migration/

Q箱ティッシュはなぜ5個入り?

箱ティッシュはなぜ5個入りパックばかりなのでしょうか。

箱のサイズが最近は小さくなっています、にもかかわらず5個入りばかりですよね。
特に深い意味は無いのでしょうか。

Aベストアンサー

自信はない、・・・というか想像ですが、

箱ティッシュが1個でしか売っていないと、値段が高くなってしまいます。だから、複数個入りパックで売ることにしたのだと思います。だからといって、10個入りパックで売ると多すぎて家へ持って帰るときに邪魔になる・・・。
5個入りが値段も大きさもちょうどいい数なのでは?

QVisualBasic6.0からVisualBasic.NET

今までVisualBasic6.0で作っていたプログラムは、VisualBasic.NETで動かすことは可能でしょうか?

Aベストアンサー

これでわからなければ、やめておいた方がいい様です。
http://www.microsoft.com/japan/msdn/vbasic/techinfo/upgrade/

Q5個の電球の明るさ

6V 2.4Wの電球を5個つなごうとしています。
電球1個ずつにスイッチを取り付けたいので、現在並列つなぎにしています。電球1個だけをつけたときの明るさ(電球にそのまま6Vの電圧をかけた時の明るさ)と、5個同時につけた時の電球1個あたりの明るさを同じにすることは出来るでしょうか?

Aベストアンサー

回答に対するお礼部分の質問に返答です。
その通りです。

 ACアダプターは絶縁物と銅線、鉄、金属めっき、といった、物を使い、電流が多少多く流れても、ほかの物質に変化しない物質で作られています。
但し、アダプターから電流を流し出してもらうには、何百キロメートルも離れた、発電所に頼らなければなりません。
 アダプターの中にも、必ず、電線の回路をまとめて
電気抵抗があります。アダプターに手を触れると、暖かいのは、その内部抵抗で発熱しているからです。

 しかし、化学変化に頼って内部で電圧と電流を作っている、しかも寿命のある(後ろの参考)、取り出す電流で、電池の内部抵抗が予測出来ない大きさで変化する乾電池と比較すると、ACアダプターの電線の内部抵抗の変化は、ほんのわづかで、計算もできますから、電圧降下の計算式はいつでも当てはまり、RxIボルト電圧降下して下がった電圧が出てきます。
ACアダプターに指定された範囲で使う限り、安定しています。範囲は、VAの値で見れます。(ボルトアンペアの数字で分かります)オーバーすると焼けてしまいます。

参考

★乾電池というのは、+電気を帯びた+イオン物質と-電気を帯びた物質(分子)2つの間で、電子が+イオンの方に流れていって結合中和して徐々に違った物質になってしまい、電流を流す電気を帯びた分子がなくなってしまう、と、電池の寿命です。
たいした意味がありませんが、こじつけると、電池が中和して、電流をだせなくなった時を、電池の内部抵抗が∞(むげんだい)オームになったといいます。

 電池の内部で化学変化を起こす物質の間で電子を流す原理(+と-に電球を接続した時流れます)、の電源ですから、化合してしまうと、化学変化が終わってしまうのです。
 自動車の鉛を使ったバッテリーの様に、中和して違う物質「酸化した鉛」になってしまって電流を流せない極板に変化したのを、外から、逆に強制的に電圧を加えて電流をバッテリーに流し込んでやると、中和していた電極は、分解されて元の電極に戻る電池もあります。元に戻す操作を●「充電」といっています。

 携帯用電動工具(ドリル)、デジカメ用電池は充電して再生可能な電池ですが、単一,単二、単三などは、再生できないでしょう?。
 電池は必ず直流電池です。携帯に絶対なくてはならないものです。必要なものです。

回答に対するお礼部分の質問に返答です。
その通りです。

 ACアダプターは絶縁物と銅線、鉄、金属めっき、といった、物を使い、電流が多少多く流れても、ほかの物質に変化しない物質で作られています。
但し、アダプターから電流を流し出してもらうには、何百キロメートルも離れた、発電所に頼らなければなりません。
 アダプターの中にも、必ず、電線の回路をまとめて
電気抵抗があります。アダプターに手を触れると、暖かいのは、その内部抵抗で発熱しているからです。

 しかし、化学変化に頼っ...続きを読む

QVisualBasicプログラミング技術者能力認定試験について

VisualBasicを独学で勉強しています。最終的にはVisualBasicプログラミング技術者能力認定試験に挑戦したいのですが参考図書とか問題集にオススメはありますか?

Aベストアンサー

Ver5/6は現在のサーティファイ(旧:日本ソフトウェア教育協会)が出版しているものです。
認定試験を行う協会が出版しているので、一番確実のようですね。

現在のバージョンが、どういうものなのかは全く知りません。
http://www.s-house.co.jp/certify/text.htm
http://www.sikaku.gr.jp/kyouzai/js.html

本気でやる気なら、直接協会に電話で問い合わせた方が確実です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング