[[20070225232210]] 『ExcelVBAでのコマンドプロンプト起動方法』(HT) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.