- 締切済み
エクセルでDOSコマンドを実行
お世話になります。 例えばエクセル(office2003)のA列にDOSコマンドの入力内容(copy A.csv c:\copyA.csv)を記述しているものがあるとして、エクセル上でA列のコマンドを実行し、エクセル上(例えばb列)にその結果を表示させることって可能でしょうか。 どなたかご教授頂けると幸いです。 宜しくお願い致します。
- unozkoko
- お礼率0% (0/1)
- その他(業務ソフトウェア)
- 回答数1
- ありがとう数3
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
とりあえずこんな感じのVBAを作ってみました。 Declare Sub Sleep Lib "KERNEL32" (ByVal ミリ秒 As Long) Sub DOS実行(ByVal 行 As Long) Dim シェル Dim 実行 Dim 命令 As String Set シェル = CreateObject("WScript.Shell") 命令 = "CMD.exe /C " & Cells(行, 1) Set 実行 = シェル.Exec(命令) Do Until 実行.Status = 1 Sleep 100 '★100ミリ秒間のスリープ Loop Cells(行, 2) = 実行.ExitCode Cells(行, 3) = 出力取得(実行.StdOut) Cells(行, 4) = 出力取得(実行.StdErr) End Sub Function 出力取得(出力) As String Dim 結果 As String Do Until 出力.AtEndOfStream If 結果 <> "" Then 結果 = 結果 & vbNewLine 結果 = 結果 & 出力.ReadLine Loop 出力取得 = 結果 End Function 使用方法と解説 1行目のコマンドを実行するには「DOS実行 1」と呼び出します。 「DOS実行」は指定された行のA列にある文字列を取り出して、 コマンドプロンプトのコマンドとして実行させます。 処理が終了するまで待ちます。(100ミリ秒に1回ずつ調べる) 終了後、プログラムの終了コードをB列、標準出力の内容をC列、 標準エラーの内容をD列に表示します。 Sleepを入れないと、Excel自身がCPUのタイムスライスを消費 して、コマンドや、他のプログラムの実行に悪影響を及ぼします。
関連するQ&A
- DOSにコマンドを送って実行
DOSモードでしか実行できないソフトがあるんですが、 VBからそのソフトをDOSで実行し、コマンドを送って、結果を得られるようにしたいのですが。 それと、DOSで実行している過程は表示されないようにしたいです。 そのソフトの使用方法は起動してコマンドを入力するだけで結果が出てきます。 どなたかご存知の方がいらっしゃいましたら宜しくお願い致します。
- ベストアンサー
- Visual Basic
- DOSコマンドについて
DOSコマンドで下記の2つを実現したくて色々と 調べてみたのですがわかりませんでした。 (1)バッチファイルを実行したら、DOSプロンプトの 画面が立ち上がり、検索したい文字を入力できる 状態にする。 (2) (1)で入力された文字列が2文字以上だった場合は エラーメッセージを表示し、再度入力させる。 (3)(1)で入力した文字列を任意のファイル内で検索し、 あれば大文字⇒小文字に変換する。 echoとpromptというコマンドを使って入力画面を 表示させることができるのかと思いましたが なかなかうまくいかない状態でした。 何か参考になるサイトがあれば教えて頂ければ幸いです。
- ベストアンサー
- その他(プログラミング・開発)
- VBでDOSコマンドを実行し、結果をEXCELシートに貼りたい
EXCELからVB等を使ってDOSコマンドを実行し、その実行結果を指定したEXCELシートに貼り付けることは出来ますでしょうか?例えば、EXCELシート内に配置したボタンを押すと、DOSコマンド「ipconfig」等が起動され、その出力結果を指定したEXCELシートに貼り付けるという動作をさせたいと考えています。よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- DOSコマンド(COPYコマンド)について
DOS上でのCOPYコマンドについて確認します。 EXCELのファイルで、毎回ファイル名が変わるため、COPYコマンドで固定のファイル名にしようと思い、バッチ起動で、COPY \AAA\*.XLS \AAA\BBB.XLSで実行すると、コピー元と違うファイルサイズのBBB.XLSが作成されます。 中身を参照すると、文字化けしたものが 1レコードだけ作成されています。どうしてなのでしょうか? ※コピー元の*.XLSは、毎回 1ファイルのみです。
- ベストアンサー
- その他(OS)
- エクセルのVBAからDOSコマンドのDIRを実行したい
DOSコマンドのDIRコマンドを、エクセルのVBAから実行したいのですがうまくいきません。助けてください。 DOSプロンプト上で、たとえば「DIR c:\*.mdb /s/b > c:\aaa.txt」を実行すると、Cドライブ上の拡張子(MDB)のファイルの一覧を、aaa.txt上に出力できるのですが、それをエクセルのVBAから実行したいのです。 Shell関数で、COMMAND.COMを実行することはできるのですが、それ以降の指定がわかりません。COMMAND.COMを実行した後、DOSプロンプトをアクティブにし、「DIR c:\*.mdb /s/b > c:\aaa.txt」をsendkeyで送れば・・・とアドバイスをうけたりもしたのですが、sendkeyでなくてもできた記憶があります。 よい方法があれば教えてください。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 【DOSコマンド】バックグラウンドでの実行
お世話になります。 Windows環境にて、DOSのコマンドから、とあるプログラムを起動したいと考えております。 例えば、『c:\hidemaru.exe (改行) exit;』 という感じで。しかし、このままではプログラムを実行中はDOS画面が起動したままになってしまいます。 そこでプログラムは起動し、DOS画面は閉じる、といった書き方をご存知の方はいらっしゃいますでしょうか? よろしくお願いいたします。
- ベストアンサー
- Windows系OS
- ShellExecuteでDOSコマンド実行したら...
VC++6.0においてShellExecuteでDOS窓をたち上げてコマンドを 実行したいのですが、うまくいきません。 1.ShellExecute(m_hWnd,"open","command.com","dir",NULL,SW_SHOW); ...とすると”指定された COMMAND 検索ディレクトリが違います.”となり、 なにも実行されません。 2.ShellExecute(m_hWnd,"open","command.com","dir /?",NULL,SW_SHOW); ...とするとちゃんとdirのヘルプが表示されますが、すぐに窓が閉じます。 3.ShellExecute(m_hWnd,"open","command.com","dir /? > out.txt",NULL,SW_SHOW); ...としてもファイルが作られず、2.と全く同じ結果になってしまいます。 これはどうしてこのような現象が起きるのでしょうか? DOSプロンプトをたち上げて同様なコマンドを実行した場合はちゃんと期待通りの結果が得られます。 あと、DOS窓が閉じないようにするにはどうすればいいのでしょうか?
- ベストアンサー
- C・C++・C#
- VBでDosコマンドを動かすには
VB6でDosのコマンドを入力して実行させたいと思っているのですが、どのように設定すればいいのでしょうか? わざわざVB6からDosプロンプトを起動させるわけではございません。 理想ではテキストボックスにコマンドを入力してボタンを押すと実行すると言う形にしたいのですが・・・。 ご存知の方ご指導よろしくお願いします たぶんAPIを使うのだと思いますがAPIまだまだ知識不足なので、分かりやすく解説していただければ助かります。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- DOSコマンドのFD FORMATの実行方法
DOSコマンドでFORMAT(FDに対して)を行いますが、途中での入力をなくしたいです。 「FORMAT A:」としておくと「準備が出来たらEnter」という問い合わせや「ボリューム名」「続けますか?」を問い合わせてきます。 これをまったく無しにしたく、BATを実行させれば、FORMATされて終了する、にしたいです。 どのような引数を書けばいいのでしょうか?
- ベストアンサー
- Windows系OS