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

解決


ynu  2004-07-08 23:11:11  No: 114627

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 23:21:02  No: 114628

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


ynu  2004-07-09 00:49:14  No: 114629

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-09 00:59:25  No: 114630

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


特攻隊長まるるう  2004-07-09 01:02:20  No: 114631

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

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


Dental  2004-07-09 01:08:48  No: 114632

たとえば、
  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 19:33:48  No: 114633

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

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加