2012-01-18 3 views
1

Я пытаюсь запустить функцию оболочки, чтобы открыть файл с помощью Notepad.exeVB6 Функция Shell - Недопустимый вызов процедуры или аргумент оболочка

Я получаю сообщение об ошибке «недопустимый вызов процедуры или аргумент оболочки» при попытке открыть файл.

Sub OpenTextFile(textfile$) 
    Dim txtapp$, arg$ 
    txtapp = "Notepad.exe" 
    textfile = "C:\Users\ADMIN\Desktop\USA - FLNG\modelout\SUMMER.CFS" 
    arg = Trim$(txtapp & " " & Chr$(34) & Trim$(textfile) & Chr$(34)) 
    ierr = Shell(arg, vbNormalFocus) 
End Sub 

Любые идеи?

+1

Ваш код работает для меня. Как вы объявляете свои переменные? – JimmyPena

+0

@JP. Я разместил декларации. Спасибо – gberg927

+0

что если вы объявите полный путь к notepad.exe? Это может объяснить, почему он работает для JP (потому что путь к блокноту находится в переменной% path%, но не вашей) – UnhandledExcepSean

ответ

1

Это работает для меня:

Sub OpenTextFile(textfile As String) 

Const txtapp As String = "Notepad.exe" 
Dim arg As String 
Dim ierr As Double 

    arg = Trim$(txtapp & " " & Chr$(34) & Trim$(textfile) & Chr$(34)) 
    ierr = Shell#(arg, vbNormalFocus) 

End Sub 

Type-declaration characters считается унаследованным кодом, поэтому я избегаю их заявлений. (Однако я использовал их с Shell/Trim/Chr, чтобы избежать возвращаемого типа Variant.)

Я считаю, что ошибка, с которой вы столкнулись, связана с тем, что ваш путь к файлу содержит пробелы. Попробуйте WSHOM вместо:

Sub OpenTextFile(textfile As String) 
Dim oShell As Object 

    Set oShell = GetShell 

    If Not oShell Is Nothing Then 
    oShell.Run textfile 
    End If 
End Sub 

Function GetShell() As Object 
    On Error Resume Next 
    Set GetShell = CreateObject("WScript.Shell") 
End Function 
+0

Правильное использование двойных кавычек должно исправить проблему пробелов в пути. – Tomalak

+0

@Tomalak Я считаю, что я правильно использую цитаты. В программе, в которой я сейчас работаю, есть куча вызовов оболочки. Мне бы очень хотелось не менять их всех. – gberg927

+0

@ gberg927 Томалак прав, я считаю, вам нужно удвоить кавычки, если в пути есть пробел. Однако метод WSH должен устранить необходимость в этом. – JimmyPena

0

Я думаю, что есть файл Notepad.exe находится рядом с вашим ехе приложения

Смежные вопросы