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さんありがとうございます.
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が以前と同じく引数に入らないようです.
こんな感じ??↓
IDProcess = Shell("D:\2text.bat " & flname, vbNormalFocus)
#動作未確認
まぁ、色々やって…というかヘルプ読んで正しく文字列編集できるようになって下さい。
↓自分で作った文字列は自分で確認するのが一番です。
MsgBox ("""D:\2text.bat" & "" & flname)
MsgBox ("""D:\2text.bat"" & "" & flname")
MsgBox ("""D:\2text.bat""" & flname)
たとえば、
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関数に渡すようにすれば、コーディングのミスを減らせるかと。
みなさん、どうもありがとうございました.
引数の内容を確認しながら
別に変数に受けることで出来ました.
path = """d:\2text.bat""" & " " & flname
どうもありがとうございました.