[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ExcelVBAでのコマンドプロンプト起動方法』(HT)
いつもお世話になっております。 ExcelVBAの中で、テキストファイルA、Bを作成しているのですが、それを手作業で コマンドプロンプト画面を起動させ、手作業で以下のコマンドを打ち込んで一つのファイル (テキストファイルC)に併合させています。
c:\>type A.txt B.txt > C.txt
これを以下のようにWindowsScriptingHostを利用して、ExcelVBA内にて、自動化したく思いますが、 Runコマンドの行にて 『実行時エラー '-2147024894 (80070002)': 'Run'メソッドは失敗しました。'IWishShell3' オブジェクト』 というエラーが返ってきてしまいます。
Dim objRun As Object Set objRun = CreateObject("WScript.Shell") objRun.Run "type " & l_strA & " " & l_strB & " > " & l_strC
※上記l_strA,l_strB,l_strCには既にpath付きの名前が設定されています。
自動化にてC.txtに併合させる良い手立ては無いでしょうか?
【Excel2000、WindoowXP】
TYPE はCMD の機能なので、単独で実行することは出来ません。
CreateObject("WScript.Shell").Run "CMD.EXE /C COPY """ & l_strA & """+""" & l_strB & """ """ & l_strC & """" のように、コマンドの引数として処理を指定します。 (コマンド中はパス中にスペースがある場合はファイル名の前後を""で囲む必要があります。)
でも、WSH や BAT 単体で実行できるのに、VBA でやりたい目的は何でしょう? (Mook)
Mookさん、御回答有難うございます。御教授頂いた方法で無事併合が出来ました。
事の経過ですが以下のようになっております。
入力テキストファイル中に4行分のデータがあり、これを最大80万件増幅する仕組みをVBA内に作っており、 userform上に指定件数を入力するテキストボックスが配置されています。 ここ数日繰り返しテストを行っていく過程で、1つのテキストファイルに増幅可能な件数はせいぜい40万件までで、 ファイルの分割出力が必要になってしまいました。 ただし、ユーザー側は一つに併合したファイルを欲しています。 この仕組みは今後、ツールとして提供しようと考えていますが、相手がWSHどころかBATすら知らない人達ばかりで、 「VBA」とか「WSH」、「コマンドプロンプト」という言葉を聞いただけで、拒否反応を起こすという 超保守体制(昔ながらの大型汎用機システム一辺倒の環境しかやろうとしない、という意味で)なのです。 これを単体で実行させるのではなく、ツールの中に組み込む事で、操作性を向上させたかったのが最大の意図です。 (HT)
まぁ、それなりの事情はあるようですね。
やり方はいろいろありますが、VBA 内でやるのでしたら、しかしFileSystemObject 等を 使用する方が良い気もします。
上記の方法でやるにしても、コマンドのウィンドウが出るのはわずらわしいので、 Run のオプションで Windowを表示させないようにした方が良いでしょう(,0 を追加)。
CreateObject("WScript.Shell").Run "....", 0 (Mook)
Mookさん。重ね重ねありがとうございます。
明日、会社に出社した時に、「,0を追加」バージョンで確認したく思います。☆⌒(*^∇゜)v ! (HT)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.