投稿時間:2004/02/03(Tue) 12:40 投稿者名:おじん
URL :
タイトル:コマンドラインでコピーしたい
ここでのサンプルを参考に下記のようにアレンジして実行しましたがうまくコピーされません。 1.このような使い方はできないのでしょうか? 2.複数ファイルをコピーしたいのですがファイル数の制限はありますか。コマンドの文字数かも? 3.また、実行後にDOS Windowを閉じる方法を教えてください。Shell (cmdTxt,0)でも? よろしくお願いいたします。
'フォームで Dim inP$ Dim inFile() Dim outFile$
inP = "c:\my Documment\" inFile = Array(inP & "小学校.dat", inP & "中学校.dat") outFile = inP & "Test.dat" If MultiFileCopy(inFile, outFile) = False Then MsgBox "copy error" '失敗 Else MsgBox "copy end" '正常 End If 'Moduleで Public Function MultiFileCopy( _ inputFile() As Variant, _ outputFile As String) As Boolean Dim n&, ret Dim cmdText$ 'コマンド MultiFileCopy = True '正常コピー If inputFile(0) = "" Then MultiFileCopy = False '入力がない Exit Function End If 'コマンドを準備 cmdText = "Command.com /c copy" & " " For n = 0 To UBound(inputFile) cmdText = cmdText & inputFile(n) & " + " Next n n = InStrRev(cmdText, "+") cmdText = Left(cmdText, n - 1) & outputFile ret = Shell(cmdText, 1) 'コピー実行 If ret = 0 Then MultiFileCopy = False '失敗 End Function
実行するとWindow画面が表示され、コマンドがディスプレイされることなく、 終了のプロンプトがでます。Exitを入力すると、VBに戻り、Copy endがmsgBox されます。retの戻り値は0ではないということです。
|