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と関連する良く見られている質問

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

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

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

Aベストアンサー

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

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

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 に設定されているテキストを取得できる。

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/

QVisualBasic6.0からVisualBasic.NET

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

Aベストアンサー

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

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ランキング

おすすめ情報