[プロジェクトプロパティ]の[実行可能ファイルの作成]のコマンドライン引数の設定方法、使い方がよくわかりません。VBのヘルプを見てもいまいちです。具体的な利用例を使って教えて下さい。

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

A 回答 (1件)

実際にやってみた方がわかりやすいと思うので...


新規プロジェクトに標準モジュールを追加して、以下を記述してみてください。

Sub Main()
Select Case Command$()
Case "A"
MsgBox "A"
Case "B"
MsgBox "B"
Case Else
MsgBox "Other"
End Select
End Sub

で、プロジェクト→プロパティの「全般」タブで「スタートアップの設定」を「Sub Main」にします。

で、「実行可能ファイルの作成」タブで「コマンドライン引数」に
「A」とか「B」とか、その他いろんなものを設定した状態で開発環境で実行してみると、
それぞれの条件に対応したMsgBoxが表示されると思います。
要するに、Command$関数で引数を取得してその結果によって処理を分岐させたり
するのを開発環境上で再現させるもの、というような考え方でよろしいかと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/20 13:56

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

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

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

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

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

Qコマンドライン引数の例外処理について

整数a、bをコマンドライン引数として受け取るプログラムを作成するとします。この時、入力するコマンドライン引数を整数であるa、b2つのみとします。

次の事柄について教えて下さい。

(1)コマンドライン引数を2個入力しなかった時の例外処理の仕方
(例えば、コマンドライン引数を入力しなかったり3個入力した時)

(2)整数のコマンドライン引数を入力しなかった時の例外処理の仕方
(例えば、「abc」などと入力した場合)

(3)コマンドライン引数を数の小さいものから入力しなかった時の処理の仕方
(例えば、「3 5」ではなく「5 3」と入力した場合)

初心者なもので…。どなたかお教え下さい。宜しくお願いします。

Aベストアンサー

public static void main(String[] args) {
//引数の範囲チェック
int nLen = args.length;
if(nLen != 3){
System.out.prinln("引数の個数が違います");
return;
}
int nCheck = 0;
for(int nRpCnt=0;nRpCnt<nLen;nRpCnt+){
int nNum = 0;
try{
nNum = Integer.parseInt(args[nRpCnt],10);
}catch(NumberFormatException nfe){
System.out.prinln(
     "引数["+nRpCnt+"]が数字ではありません");
    return;
}
//昇順チェック

}

}

以上。。。。。

QVB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログ

VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラムを考えています。

グローバルキーフックを使用しないで、実現する方法はありますでしょうか?
ご教示の程お願いいたします。

Aベストアンサー

>グローバルキーフック
これの引数っていろいろありますよね?

マウスとキーボードだけは.NETで捕らえることができます。
ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。


>グローバルキーフックを使用しないで
となると、やはり#1さんの方法しかありません。


#1さんの参考URL中に
「SAS発生時の動作:」
というのがあります。そこに
「GINAのWlxLoggedOnSas()」
というところがあるのですが、その近辺を熟読してください。
そしてこれ
http://msdn.microsoft.com/en-us/library/aa380570(VS.85).aspx


#1さんが示した情報は「古い」のではなく、古くから存在する実現方法というだけです。
そして現在、新たな別方法が出現しているわけではありません。

.NETで作成するDLLとCで作成するDLLは当然異なりますので、質問の
「VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラム」
という質問には、「無理です」としか言いようがありません。

>グローバルキーフック
これの引数っていろいろありますよね?

マウスとキーボードだけは.NETで捕らえることができます。
ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。


>グローバルキーフックを使用しないで
となると、やはり#1さんの方法しかありません。


#1さんの参考URL中に
「SAS発生時の動作:」
というのがあります。そこに
「GINAのWlxLoggedOnSas()」
というところがあるのですが、その...続きを読む

QYahooブリーフケースにコマンドラインからファイルをアップロードするには?

Yahooブリーフケースにコマンドラインからファイルをアップロードしたいのです。
どのようにコマンドすればいいのでしょうか?

Windows2000の環境です。
コマンドラインは
コマンドプロンプトとCygwinがあります。

Aベストアンサー

コマンドラインでのアップロードには対応していません

Q[ADO]と[ADO.NET]の違い

VB6とAD0が仲間で
VB.NETとADO.NETが仲間ですか?

よろしくお願いします。

Aベストアンサー

どんな回答を望んでいるのだろうか。
質問文に対する簡潔な回答をするならば 「そうです」 と回答しておきましょうか。
タイトルに対する回答なら 「ado ado.net 違い」 で検索すれば理解可能な回答を得られる。
http://www.google.co.jp/search?q=ado+ado.net+違い&ie=UTF-8&oe=UTF-8&hl=ja

Qコマンドとコマンドラインとコマンドラインオプションの違いを教えてください。

ただ今Cの関数を勉強しているのですが、勉強用HPに

************************

int main(int argc, char *argv[ ])

戻り値:int型、引数:argc, argv

後者は、コマンドライン オプションを受け付ける。 argc はオプションの数、argv はオプションの内容となる。

************************

とあります。

そこで質問なのですが、コマンドラインオプションとは何ですか?
また、

・コマンド
・コマンドライン
・コマンドラインオプション

の違い、それぞれの意味も教えてください。

マックのコマンド+s、コマンド+vみたいなものですか?
それともunixのcdや./のようなものでしょうか。

わからない単語が出てくると、
そこで頭が混乱してしまい先に進めない性質なので困っています。

どうぞご教授よろしくお願いします。

Aベストアンサー

★回答
・『コマンド』とは
 プログラム名の事です。
 つまり unix でいうと cd、cp、ls などです。
・『コマンドライン』とは
 プログラム名 引数 … 引数、オプションの1行の事です。
 または、コマンドを打ち込む入力待ちの状態です。
・『コマンドラインオプション』とは
 cp コマンドでいう -f、-i、-p、-r などの事です。
 cp コマンドでのファイル名は引数と呼びます。
 一般にオプションは - 文字から始まります。
 あと Windows の OS では / 文字から始まるスイッチオプションという呼び方がありますが、
 - 文字から始まるオプションとほぼ同じ役割です。また、- 文字、/ 文字から始まるものを
 合わせてオプションと呼ぶこともあります。

その他:
・main() 関数の引数にある『argc』は引数の個数、『argv』は引数の内容です。
 参考にした HP ではオプションの数、オプションの内容と呼んでいますが、引数もオプションも
 含まれます。引数とオプションはプログラムで区別するため、そのために - 文字や / 文字から
 始まる文字列をオプション(スイッチ)などとして区別しています。もし、- 文字や / 文字から
 始まらない文字列ならば、それが引数とプログラムで解釈するように C ソースを記述します。
・具体的にはコマンドラインで『cp -i -r file1.c file2.c』と入力するとプログラムでは、
 argc = 5
 argv[ 0 ] = "cp" ←プログラム名
 argv[ 1 ] = "-i"
 argv[ 2 ] = "-r"
 argv[ 3 ] = "file1.c"
 argv[ 4 ] = "file2.c"
 argv[ 5 ] = NULL ←必ずセットされる
 となります。
・argc はオプションと引数の合計数です。また、プログラム名もカウントされます。
 その他、argv[0] にプログラム名が入るか、空文字列が入るかは処理系依存です。
 あと argv[ argc ] の位置には必ず NULL ポインタがセットされることが保障されています。
・以上。参考に!

★回答
・『コマンド』とは
 プログラム名の事です。
 つまり unix でいうと cd、cp、ls などです。
・『コマンドライン』とは
 プログラム名 引数 … 引数、オプションの1行の事です。
 または、コマンドを打ち込む入力待ちの状態です。
・『コマンドラインオプション』とは
 cp コマンドでいう -f、-i、-p、-r などの事です。
 cp コマンドでのファイル名は引数と呼びます。
 一般にオプションは - 文字から始まります。
 あと Windows の OS では / 文字から始まるスイッチオプションという...続きを読む

Q[VB2008]引数付きパスでアプリケーションを起動

"*:\***" -* *** -* "***"
のような形式の引数付きパスでアプリケーションを起動するにはどうすればいいでしょうか。

ご回答よろしくお願いします。

Aベストアンサー

コマンドインタープリタ(XPならCMD.EXE)に引数を渡す方法で可能だと思います。

Dim psi As New System.Diagnostics.ProcessStartInfo()
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
psi.Arguments = "/c " & """*:\***"" -* *** -* ""***"""
returnValue = System.Diagnostics.Process.Start(psi)

私も同じように悩んで、この方法で解決しました。

Qコマンドラインがわかりません!!

(質問)
(1)コマンドラインというのがわかりません。
(2)下の説明のところが全部わかりません。
よろしくおねがいします!!
--------------------------------------------------
(説明)

ファイルを処理するとき、ファイル名指定はコマンドラインから行うのが便利です。Javaではコマンドライン引数はmain( )メソッドの引数として次のように用意されています。

public static void main (String args[ ]) {
・・・・・
}

このargs引数を使うと、コマンドラインから入力されたパラメーターを次のように取得できます。
最初のパラメーター文字列は0です。

args.length
args[0]
args[1]
args [2]
 ・
 ・
 ・

Aベストアンサー

#2のbakatonoです.長くなります.すみません.

>すいませんここをもう一度お聞きしたいのですがfile1 file2は
>ファイルそのものじゃなくて文字列とはどういうことですか?

そのままの意味ですよ.

実行するコマンド(プログラム名)のあとに,スペースで区切って入れた
文字列が全て「コマンドライン引数」です.スペースで区切って複数書くと,
前から順番にプログラムに渡され,args[]にそのままの順番で入ります.

>a bとかだったら文字列になるのはわかるんですが、file1 file2って
>ファイルですよね?それが文字列になるというのがわかりません。
>ファイル自体が引数として渡されないんですか?

コマンドライン引数は基本的に文字列として渡します.なぜならそれが一番都合がいいからです.
コマンド(プログラム)は,ファイルをいじくるだけのものとは限りませんよね?
「文字列をごにょごにょする」ものもあるでしょうし,「数値をがちゃがちゃする」
ものもあるでしょう.

私が前に挙げた例(例1とします)は,hoge.exeが「二つのファイルをもにょもにょする」
というプログラムだった場合の例といえます.
この場合,渡されたファイル名の文字列を使って,プログラム内で該当するファイル
をオープンして,それらのファイルをもにょもにょ処理することになります.

例2)
文字列を2つ渡して,一つ目の文字列の中に二つ目の文字列がいくつ含まれるかを
数えるプログラム「gonyo.exe」の場合
c:\>gonyo.exe hogehogeauau au ←コマンド(プログラム)とコマンドライン引数
c:\>2             ←実行結果
hogehogeauauが第1引数,auが第2引数で.プログラム内部でごにょごにょ数えたら
hogehogeauauという文字列の中にauという文字列が2回含まれてました.
こんなプログラムを組みたい場合,渡したいのは文字列そのものですよね?

また
例3)
数字を2つ渡して,一つ目の数字と二つ目の数字の合計を求めるプログラム
「keisan.exe」の場合
c:\>keisan.exe 3 5 ←コマンドとコマンドライン引数
c:\>8        ←実行結果
こんなプログラムの場合,渡したいのは数字ですが,文字列として渡して,
プログラムの内部で文字列→数値変換してガチャガチャ計算すればいいのです.

さらにいうと,上記例の混在するケースも考えられます.ファイル名と数字を与えて,
そのファイルを数字の数だけ分割するプログラム...とか,いくらでもあります.

ね?とりあえず文字列で渡すのが一番都合がいいでしょう?
プログラム内部で好きなように使う.これでどんなパターンにも柔軟に対応できます.

==蛇足==
こういうのを,「汎用性(が高い)」と言い,プログラミングではとても重要なことの
ひとつであることを覚えておきましょう.がんばって勉強してくださいね^^

#2のbakatonoです.長くなります.すみません.

>すいませんここをもう一度お聞きしたいのですがfile1 file2は
>ファイルそのものじゃなくて文字列とはどういうことですか?

そのままの意味ですよ.

実行するコマンド(プログラム名)のあとに,スペースで区切って入れた
文字列が全て「コマンドライン引数」です.スペースで区切って複数書くと,
前から順番にプログラムに渡され,args[]にそのままの順番で入ります.

>a bとかだったら文字列になるのはわかるんですが、file1 file2って
>ファイ...続きを読む

Q[excel][マクロ]フォルダ内のマクロ有効のブックを通常のブックにするコード

以前フォルダ内の通常のブック(xlsx)をマクロ有効のブック(xlsm)にするマクロを組んだのですがそれを応用して今度は逆の作業をすることになり以前教えて頂いたマクロを有効にするコードを参考に以下を作りましたが動作しませんでした

やりたい作業は
フォルダ内のマクロ化されているブックを開く
通常のブックとして保存
閉じる
次のファイルを開いて同様の動作をフォルダ内のすべてのブックに適用
です

実行したところ
Set wb = Workbooks.Open(Fn)
のところが黄色く表示されてにエラーが出てしまいました、改善点を教えてください


Sub 非マクロ化テスト2()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsm" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsx"
Application.DisplayAlerts = False
wb.SaveAs FileName:=Fn, FileFormat:=xlOpenXMLWorkbook
wb.Close
Application.DisplayAlerts = True
End If
Next
End Sub

以前フォルダ内の通常のブック(xlsx)をマクロ有効のブック(xlsm)にするマクロを組んだのですがそれを応用して今度は逆の作業をすることになり以前教えて頂いたマクロを有効にするコードを参考に以下を作りましたが動作しませんでした

やりたい作業は
フォルダ内のマクロ化されているブックを開く
通常のブックとして保存
閉じる
次のファイルを開いて同様の動作をフォルダ内のすべてのブックに適用
です

実行したところ
Set wb = Workbooks.Open(Fn)
のところが黄色く表示されてにエラーが出てしまい...続きを読む

Aベストアンサー

こんにちは。

私も、マクロ化のブックは作りましたが、逆は考えたことがありません。
(マクロ化は、VBEの中身を検索し、1行でも存在すれば、.xlsm にするということです。)

もしかしたら、
>CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

Set wb = Workbooks.Open(Fn)
おそらくエラーの原因は、属性の問題あたりが原因かもしれません。それを、Normal ファイルであるか、調べる必要があるかと思います。

ちなみに、私も独自路線でかんがえてみました。
私は、以下のようにあらがじめ該当するブック名を取得し、配列変数の中に入れておくようにします。Dir は、途中で操作されるのを嫌います。

私のこだわりは、2点
変換後の同名ファイルの存在。
枝番付にします。
後は、パスワードの有無 (たぶん、バージョンによって反応の違いが出るかもしれません。こちらは、Excel 2013 です。)

'//

Sub DeMacroFileName()
 Dim myPath As String
 Dim myArray()
 Dim fName As String
 Dim i As Long
 Dim fn As Variant, nFn As String
 Dim cnt As Long
 Dim wb As Workbook
 ReDim myArray(1999)
 myPath = ThisWorkbook.Path & "\"
 On Error GoTo ErrHandler
 fName = Dir(myPath & "*.xlsm", vbNormal)
 Do While fName <> ""
  If (GetAttr(myPath & fName) And vbNormal) = vbNormal Then
   If fName <> ThisWorkbook.Name Then
    myArray(i) = fName
    i = i + 1
   End If
   DoEvents
   If i > 2000 Then Exit Do '2000ファイル以上は不可能
  End If
  fName = Dir
 Loop
 ReDim Preserve myArray(i - 1)
 
 Application.EnableEvents = False '開いた時にマクロが邪魔になる
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 For i = 0 To UBound(myArray)
  fn = myArray(i)
  Set wb = Workbooks.Open(Filename:=myPath & fn, Password:="")
  If Not wb Is Nothing Then
   nFn = RenamingF(fn, myPath)
   wb.SaveAs nFn, xlOpenXMLWorkbook
   wb.Close False
   DoEvents
   cnt = cnt + 1
  End If
  Set wb = Nothing
nextFn:
 Next i
 Application.DisplayAlerts = True
 Application.EnableEvents = True
 Application.ScreenUpdating = True
 MsgBox cnt & "/" & UBound(myArray) + 1 & "が成功しました。", vbInformation
 Exit Sub
ErrHandler:
 MsgBox "ファイル名 : " & fn & vbCrLf & _
 Err.Number & ": " & Err.Description
 
 Debug.Print fn '失敗した時に記録を取る
 If Err.Number = 92 Then  '滅多に発生しません。
  MsgBox "中途で終了します。", vbExclamation
  Exit Sub
 Else
  Resume Next
 End If
End Sub
Private Function RenamingF(ByVal fName As String, mPath As String)
'同名ファイルの枝番付け
Dim SaveName As String
Dim j As Long
If Right(mPath, 1) <> "\" Then mPath = mPath & "\"
SaveName = mPath & Mid(fName, 1, InStrRev(fName, ".") - 1)
 Do While Dir(SaveName & ".xlsx") <> ""
  If InStrRev(SaveName, "_") > 0 Then
   SaveName = Mid$(SaveName, 1, InStrRev(SaveName, "_") - 1)
  End If
   j = j + 1
   SaveName = SaveName & "_" & CStr(j)
  Loop
RenamingF = SaveName
End Function

こんにちは。

私も、マクロ化のブックは作りましたが、逆は考えたことがありません。
(マクロ化は、VBEの中身を検索し、1行でも存在すれば、.xlsm にするということです。)

もしかしたら、
>CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

Set wb = Workbooks.Open(Fn)
おそらくエラーの原因は、属性の問題あたりが原因かもしれません。それを、Normal ファイルであるか、調べる必要があるかと思います。

ちなみに、私も独自路線でかんがえてみました。
私は、以下のように...続きを読む

QJAVAのコマンドラインについて

コマンドラインで-sを入れた時に
String uwagaki = "-s"
if (uwagaki.equals(args[0]))
とこうしてコマンドラインで入れたのは-sなのかifで確認しています。
しかし、コマンドラインを入力しないとエラーが起こってしまいます。
どのように対処したらいいでしょうか?

Aベストアンサー

String s;
if (args.length > 0) {
s = args[0];
} else {
s = "";
}
if (uwagaki.equals(s)) {
...
}
とすれば、OK。

Qvbで[ctrl]+[tab]を認識させるにはどうしたらよいでしょうか?

はじめまして、どうしてもうまくいきません。教えてくださいませ。

[ctrl]+[tab]キー入力を認識させるにはどうしたら良いでしょうか?

現在、VBでMDIフォームを使用してプログラムを作っております。
[ctrl]+[tab]キー入力を行なうと、子フォーム間でフォームの移動が起こってしまいます。CommandButton押下時にのみ、フォームの移動を行なうようにしたいので、
[ctrl]+[tab]キー入力を制御して実現させようとしているのですが、うまくいきません。

MSDNライブラリには、KeyUpとKeyDownのイベントで
Tabキーの操作は発生しないと書いてありました。。。
何か方法がありましたらお教えいただけると助かります。
どうぞよろしくお願いします。

Aベストアンサー

SetWindowsHookExでキーボードフックかけなきゃだめでしょうね。
ローカルフックでOKなのかグローバルフックが必要かはわかりませんが。


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

人気Q&Aランキング