関数の引数をshellの引数にするには?

解決


ynu  2004-07-08 14:11:11  No: 114627  IP: [192.*.*.*]

VBを卒論に使おうと勉強中ですがプログラミングをまったく学んだことがないので
本とネットで独学で作っています.
ご教授お願いします.

batファイルを開く関数を作っています.
shell関数でbatファイルを開いて
そのbatの引数に引数flnameを入れようとしました.

Private Function file2txt(flname As String) As Long
IDProcess = Shell("""d:\2text.bat"" flname", vbNormalFocus)
      
関数を呼び出したときにはflnameに引数が入っているようですが
その後のshellの引数には入っていないです.
"で囲むので文字として扱ってることになるのですか
固定文字列しかshellの引数には使えないのでしょうか.

ご教授よろしくお願いします

編集 削除
nanashi  2004-07-08 14:21:02  No: 114628  IP: [192.*.*.*]

文字列の連結には & を使うってことを知ってる?

編集 削除
ynu  2004-07-08 15:49:14  No: 114629  IP: [192.*.*.*]

nanashiさんありがとうございます.

shell関数の使い方はmicrsoftのページを参考にしました
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctshell.asp

ご指摘の通り&を使用して試してみましたが
・ IDProcess = Shell("""D:\2text.bat" & "" & flname, vbNormalFocus)
 プロシージャの呼び出し、または引数が不正です。  
となり
・  IDProcess = Shell("""D:\2text.bat""  & ""  &  flname",vbNormalFocus)        
これだとflnameが以前と同じく引数に入らないようです.

編集 削除
はろはろ  2004-07-08 15:59:25  No: 114630  IP: [192.*.*.*]

こんな感じ??↓
IDProcess = Shell("D:\2text.bat " & flname, vbNormalFocus)
#動作未確認

編集 削除
特攻隊長まるるう  2004-07-08 16:02:20  No: 114631  IP: [192.*.*.*]

まぁ、色々やって…というかヘルプ読んで正しく文字列編集できるようになって下さい。
↓自分で作った文字列は自分で確認するのが一番です。

MsgBox ("""D:\2text.bat" & "" & flname)
MsgBox ("""D:\2text.bat""  & ""  &  flname")
MsgBox ("""D:\2text.bat""" & flname)

編集 削除
Dental  2004-07-08 16:08:48  No: 114632  IP: [192.*.*.*]

たとえば、
  flname = "data.txt"
であった場合を想定すると…


> ・ IDProcess = Shell("""D:\2text.bat" & "" & flname, vbNormalFocus)
上記だと
  『"D:\2text.batdata.txt』
というパスを実行する事になりますね。


> ・  IDProcess = Shell("""D:\2text.bat""  & ""  &  flname",vbNormalFocus)        
こちらは、
  『"D:\2text.bat"  & "  &  flname』
となります。flnameの中身を展開できていませんね。


既に回答が付いていますが、まずは、いきなり Shell の引数に
含めるのではなく、一度、別の変数に受けてみてください。
  Dim Path As String
  Path = 〜
  Debug.Print Path
  IDProcess = Shell(Path, vbNormalFocus)

その上で、その変数の内容が、
  『"D:\2text.bat" data.txt』
のように、正しく格納されている事を確認してから、
Shell関数に渡すようにすれば、コーディングのミスを減らせるかと。

編集 削除
ynu  2004-07-09 10:33:48  No: 114633  IP: [192.*.*.*]

みなさん、どうもありがとうございました.

引数の内容を確認しながら
別に変数に受けることで出来ました.
path = """d:\2text.bat""" & " " & flname

どうもありがとうございました.

編集 削除