ここから質問投稿すると、最大4000ポイント当たる!!!! >>

ExcelVBAについての質問です。コマンドプロンプトで実行するプログラムをCで作成しました(これをXXX.exeとします)。このプログラムは計算が終了した後で、その結果のファイルを作成します(これをYYY.txtとします)。このプログラムを操作し、結果を表にして出力するために、ExcelVBAでshellを使って以下のようなプログラムを作成しました。
  shell("XXX.exe")
  call Output
Outputでは、XXX.exeが作成したファイルYYY.txtからデータを読み込んでシートに結果を出力するのですが、うまくファイルを読み込みません。多分、shellにより実行したXXX.exeが終了する前にOutputが呼ばれているのだと思うのですが、もしそうだとしたらどのような解決方法があるのでしょうか。よろしくお願いします。
WinXp、Excel2000です

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

とは シェル」に関するQ&A: シェルとは

A 回答 (3件)

VBならこういう風にするのですが...


ExcelVBAでは確認していませんが。
http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html# …

参考URL:http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html# …
    • good
    • 2
この回答へのお礼

教えていただいた方法をExcelVBAで試してみましたが、shellで実行したプログラムの終了を待つことができ、思い通りの処理を行うことができました。ありがとうございました。

お礼日時:2003/05/15 21:37

こんにちは。



TimerとDirでYYY.txtの作成を待つとか。。

Sub Test()
Dim i As Integer, Start
Shell("XXX.exe")
i = 0
Do While i < 10 And Dir("C:\YYY.txt") = ""
  Start = Timer
  Do While Timer < Start + 0.5
   DoEvents
  Loop
 i = i + 1
Loop
If i = 10 Then Exit Sub
Call Output
End Sub

でもきちんとプロセス終了を待つのが正でしょうね。^^;

http://www2.moug.net/cgi-bin/technic.cgi?exvba+T …

参考URL:http://www2.moug.net/cgi-bin/technic.cgi?exvba+T …
    • good
    • 0
この回答へのお礼

XXX.exeですが、2回目以降の実行では同じファイル名に上書きして結果を出力するので、Dirを使った方法では以前の結果を読み込むことになってしまいます。教えていただいた参考URLの方法はXXX.exeの終了を待つことができるのでうまくいきました。ありがとうございました。

お礼日時:2003/05/15 21:35

ret = shell("XXX.exe")


とし、CのEXEは戻り値を返すようにしたらいかがでしょう?

戻り値が取得できなけば、処理は勝手に前へ進まないと思いますが…。
    • good
    • 0
この回答へのお礼

XXX.exeは戻り値を返すのですが、shell関数はタスクIDを返すのでうまくいかないのではないのでしょうか

お礼日時:2003/05/15 21:30

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

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

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

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

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

QShell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

はじめまして。
掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。
その後、そのバッチファイルが終了してログファイルの出力を完了した後に、
ファイルを開いて確認したいのです。
thread.sleepなどで大体このくらいかなという時間を待ってみる、
などのやり方しか今は思いつかないのですが、
何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。

どなたかご存知の方がいらっしゃいましたらご教授ください。

Aベストアンサー

Shell関数より Processクラスで実行したほうが簡単に待てますよ

Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")

といった具合です

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qファイルを処理中に次の処理に移ってしまうようなのですが、、

VB.NETですが、
趣味でアプリケーションを作成しています。
下記のコードで処理を実行させています。

Call Shell("C:\aaa.exe c:\test.txt c:\test2.txt", AppWinStyle.Hide)

(A)

Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))

'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.ReadLine & vbCrLf)
Loop
sr.Close()


"aaa"はtest.txtを加工してtest2.txtとして出力するプログラムです。
その後、test2を最後まで読み出しているのですが、
どうもプログラムaaaが処理を終了する前に
次の読み出し処理に移ってしまっているようなのです。
そこで、素人なりに上記(A)の部分に

For i = 0 To 2000000000
Next
For i = 0 To 2000000000
Next

とForループを加えて時間稼ぎしているのですが、
状況によって時間稼ぎがうまくいかない場合があります。どのように問題を回避すべきでしょうか?
aaaはDLLでも組み込み可能になっているプログラム
なのですがDLLで実行させると何らかのメリット
があるのでしょうか?
その点を教えていただけると助かります。
回答よろしくお願いいたします。

VB.NETですが、
趣味でアプリケーションを作成しています。
下記のコードで処理を実行させています。

Call Shell("C:\aaa.exe c:\test.txt c:\test2.txt", AppWinStyle.Hide)

(A)

Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))

'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.ReadLine & vbCrLf)
Loop
sr.Close()...続きを読む

Aベストアンサー

Dim hProc As System.Diagnostics.Process

'プロセス作成
hProc = System.Diagnostics.Process.Start("C:\aaa.exe c:\test.txt c:\test2.txt")
'プロセス終了待機
hProc.WaitForExit()
hProc.Close()
hProc.Dispose()

Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))

'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.ReadLine & vbCrLf)
Loop
sr.Close()

これでどうでしょうか。

Dim hProc As System.Diagnostics.Process

'プロセス作成
hProc = System.Diagnostics.Process.Start("C:\aaa.exe c:\test.txt c:\test2.txt")
'プロセス終了待機
hProc.WaitForExit()
hProc.Close()
hProc.Dispose()

Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))

'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.Read...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QVBAでEXEファイルを動かす方法について

エクセルのVBAをつかってC++で作ったexeファイルを起動させるプログラムを書きたいと思いますが、うまくいきません。
プログラムは下記です。
Sub Macro1()
Shell ("C:\test.exe")
End Sub

エラーは出ないのですが、計算をしません。
・VBEの参照設定のmicrosft scripting runtimeはクリックいれてます。
・test.exe自体はクリックすると起動して計算します。
もし、対応策をご存知なら教えていただければ助かります。
よろしくお願いします。

Aベストアンサー

> ただ、shellでexeを起動させると、なぜかマイドキュメントにファイルは作成されていました。
> これはなぜでしょうか?

最初の投稿で述べた

> 「カレントフォルダ(作業ディレクトリ)」があっていないとか・・・

でしょうね。
「カレントフォルダ」はご存知ですよね?
フルパス指定をしない場合(フォルダ指定が無い場合等)にファイルが作成されるフォルダです。

ですから、
> fp = fopen( "hello.txt", "w");
した場合、カレントフォルダにファイルが作成されます。

で、Excelの「カレントフォルダ」は、自動的に「マイドキュメント」になるようです。
ですから、VBAからShell関数で呼び出したプログラムで、
フルパス指定をしないファイルも「マイドキュメント」に作成されてしまいます。


Shell関数実行前に、カレントフォルダの変更を行ってみてください。

例えば、「D:\X」にしたい場合、
----------------------------------------------
Sub Macro1()
'------ 元のカレントフォルダを記憶しておく ----
Dim CF As String
CF=CurDir()
'------ カレントフォルダを変更 ----
ChDrive "D:"
ChDir "D:\X"
' ----- Shellを実行
Shell ("D:\X\test.exe")
'------ カレントフォルダを元に戻す ----
ChDrive CF
ChDir CF
End Sub
----------------------------------------------
とか・・・

> ただ、shellでexeを起動させると、なぜかマイドキュメントにファイルは作成されていました。
> これはなぜでしょうか?

最初の投稿で述べた

> 「カレントフォルダ(作業ディレクトリ)」があっていないとか・・・

でしょうね。
「カレントフォルダ」はご存知ですよね?
フルパス指定をしない場合(フォルダ指定が無い場合等)にファイルが作成されるフォルダです。

ですから、
> fp = fopen( "hello.txt", "w");
した場合、カレントフォルダにファイルが作成されます。

で、Excelの「カレン...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Q【Excel VBA】Windowsの標準機能のみでExcelファイルをZIPファイルに圧縮する方法

質問させて下さい。

Lhaplus などを使用(導入)することなく、Windows7の標準機能のみでExcelファイルをZipファイルに圧縮する事は可能なのでしょうか?

マクロの動作としては、
1.作業中のBOOKから必要なシートのみをコピーし別BOOKとして保存
2.別BOOKとして保存したファイルを、同一フォルダ内にZipファイルとして圧縮
3.別BOOKを削除

上の1.と3.は出来たのですが、
2.の圧縮についてが、理解できずにおります。
自分なりに調べたところ、Lhaplus をShell関数などで指定し圧縮をする方法などは紹介されていたのですが、Windows7の標準機能のみZip圧縮を行う事は可能なのでしょうか?

ご存知の方がいましたら、ご教授いただければ幸いです。

Aベストアンサー

こんにちは。

>2.別BOOKとして保存したファイルを、同一フォルダ内にZipファイルとして圧縮
というのは、2007以降のOffice ファイルは、拡張子が変わっただけで、本来は、Zipファイルなのです。あえて、Zipで圧縮する必要があるか分かりませんが、アーカイブに格納ということで、やってみました。

#2さんのリンク先とは、仕組み自体は同じですが、
Set Shell = CreateObject("Shell.Application")
zFolder.CopyHere sFolderItem
で、ZIPフォルダが認識しないことでした。そこで、何度もやった結果、事前に参照設定することで解決しました。

'//
Sub Files2Zip()
  Dim myPath As String
  Dim ZipFName As String
  Dim ZipFNameB As String
  Dim FName As Variant
  '要参照設定
  'Microsoft Shell Controls and Automation
  Dim objShell As Shell32.Shell 'レイトバインディングだと抜けがあります。
  Dim ar As Variant, fn As String
  Dim i As Long, j As Long, k As Long
  myPath = ThisWorkbook.Path & "\" '任意の場合は、必ず末尾に¥を入れること
  
  ZipFNameB = myPath & "MyFilesABC" ' & ".zip" "圧縮名
  ZipFName = ZipFNameB & ".zip"
  
  '一意の出力ファル名の決定
  fn = Dir(ZipFName & ".zip")
  Do Until fn = ""
   k = k + 1
   ZipFName = ZipFNameB & CStr(k) & ".zip"
   fn = Dir()
  Loop
  
  FName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xl*), *.xl*", _
          MultiSelect:=True, Title:="圧縮ファイル選択")
  If IsArray(FName) = False Then
    Exit Sub
  Else
    Open ZipFName For Output As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
   
    Set objShell = New Shell32.Shell
    For i = LBound(FName) To UBound(FName)
      If IsBookOpen(FName(i)) = False Then
       'ファイルは必ず閉じた状態で使ってください 'ここで問題が発生することがある
        objShell.Namespace(ZipFName).CopyHere FName(i)
        Sleep 500
      End If
    Next i
  End If
End Sub
Function IsBookOpen(ByVal FName As Variant)
Dim myFno As Integer
If Dir(FName) <> "" Then
 myFno = FreeFile
 On Error Resume Next
 Open FName For Binary Lock Read Write As #myFno
 Close #myFno
End If
 If Err.Number = 70 Then
  IsBookOpen = True
 End If
End Function
'//

こんにちは。

>2.別BOOKとして保存したファイルを、同一フォルダ内にZipファイルとして圧縮
というのは、2007以降のOffice ファイルは、拡張子が変わっただけで、本来は、Zipファイルなのです。あえて、Zipで圧縮する必要があるか分かりませんが、アーカイブに格納ということで、やってみました。

#2さんのリンク先とは、仕組み自体は同じですが、
Set Shell = CreateObject("Shell.Application")
zFolder.CopyHere sFolderItem
で、ZIPフォルダが認識しないことでした。そこで、何度もやった結果、事前に参照...続きを読む

QVBAで外部プログラムを非表示で実行するには

VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。

Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。

test1のプログラムでエラーをでなくする方法、または、test2のプログラムでコマンドプロンプトのウインドウを非表示にする方法がありましたら教えてください。

-------------------------------------------------------
Sub test1()
 Dim ws As Object
 Dim we As Object
 Dim command As String
 command = "C:\test.exe"
 Set ws = CreateObject("WScript.Shell")
 Set we = ws.Run("%ComSpec% /c " & command, 0, False) '<===(A)
 Set we = Nothing
 Set ws = Nothing
End Sub
-------------------------------------------------------
Sub test2()
 Dim ws As Object
 Dim we As Object
 Dim command As String
 command = "C:\test.exe"
 Set ws = CreateObject("WScript.Shell")
 Set we = ws.exec("%ComSpec% /c " & command)
 Do Until we.Status
  DoEvents
 Loop
 Set we = Nothing
 Set ws = Nothing
End Sub
-------------------------------------------------------

VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。

Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。

test1のプログラムでエラーをでなくする方法、または、te...続きを読む

Aベストアンサー

Runメソッドを何処で調べましたか?
詳しくはこちらを見てください。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

先ず、Aで失敗する理由ですが、Runメソッドの戻り値は何型ですか?
説明を見れば分かると思いますが、整数です。オブジェクトでは
ありません。従って、戻り値の型が違うし、Set文を使うのもオカシイ

次に、プログラムの終了を待つなら、Runメソッドの第3引数は
省略するか、Trueを指定すべきです。

test2のExecメソッドはオブジェクトを返しますが、この中には
標準入出力やエラー出力用の出し入れ口があり、人に代わって
データを送り込んだり、出力結果を見て、処理を変更するなどを
行う場合に使いますので、今回の仕様では使いません。
尚、DoEventsでグルグル回る処理は絶対にすべきではありません。
必ずSleepを入れるべきだし、DoEventsの使用そのものを避ける
べきだからです。この文がどのような効果をもたらすかを理解しており、
それを制御できるだけの技術があれば別ですが・・・

Runメソッドを何処で調べましたか?
詳しくはこちらを見てください。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

先ず、Aで失敗する理由ですが、Runメソッドの戻り値は何型ですか?
説明を見れば分かると思いますが、整数です。オブジェクトでは
ありません。従って、戻り値の型が違うし、Set文を使うのもオカシイ

次に、プログラムの終了を待つなら、Runメソッドの第3引数は
省略するか、Trueを指定すべきです。

test2のExecメソッドはオブジェクトを返しますが、この中には
標準入出力やエラー...続きを読む


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

人気Q&Aランキング