Posted to microsoft.public.excel.programming
|
|
Is it possible to run DOS commands in Excel?
VBA also has a FileCopy statement. No need to use the File System Object.
On Tue, 12 Oct 2004 04:27:24 -0500, Ivan F Moala
wrote:
[color=blue]
Ah, yes you are correct :)
You can use the FileSystemObject
No need to shell out to Dos
'// You can either
'// 1) Set a reference to the [Microsoft Scripting Runtime]
FileSystemObject.CopyFile "c:\mydocuments\My.txt",
"c:\mydocuments\MyNew.txt"
'// OR 2) create the reference via Late Binding
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Fso.CopyFile "c:\mydocuments\My.txt", "c:\mydocuments\MyNew.txt"
'// OR 3) Use just use Native VBA to copy
FileCopy "c:\mydocuments\My.txt", "c:\mydocuments\MyNew.txt"
If you really need to Shell out to Dos using core Dos commands such as
Copy then you need to use the c switch together
with the command.com eg
Shell "command.com /c MD C:\Amydir C:\Amydir", vbNormalFocus
If running it asynchronously is a problem then use the Windows
Scripting Host object model.
A method exposed by this library lets you to run a file,
and specify whether you want to wait for its termination.
To use the following code snippet you must add a reference
to Windows Scripting Host Object model in the "References " dialog
window.
The method you're looking for is the Run method of the IWshShell_Class
object.
Its first argument is the file to run, the second specifies the styles
of the
application's window and the last is a Boolean value that tells whether
you
want to wait for the program termination. Here's a function that
contains all
the necessary code:
Sub RunAndWait(ByVal sFile As String)
Dim WSHShell As New IWshShell_Class
WSHShell.Run sFile, , True
End Sub
'To test this function, write the following code in your form
'(it assumes that Notepad is in your system path):
Sub Tester()
RunAndWait "notepad.exe"
MsgBox "Back to your application!"
End Sub
Rob van Gelder Wrote:
I thought OP was after Copy, not Rename.
--
Rob van Gelder - http://www.vangelder.co.nz/excel
"Ivan F Moala" wrote in
message
...
Hi hce
Look up help for [Name Statement]
From help
Name Statement Example
This example uses the Name statement to rename a file. For purposes
of
this example, assume that the directories or folders that are
specified
already exist. On the Macintosh, “HD:” is the default drive name and
portions of the pathname are separated by colons instead of
backslashes.
Dim OldName, NewName
OldName = "OLDFILE": NewName = "NEWFILE" ' Define file names.
Name OldName As NewName ' Rename file.
OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"
Name OldName As NewName ' Move and rename file.
|