2016-11-15 28 views
-2

私はVBAの新機能で、正直なところ私がやっていることは分かりません。VBA - ネットワークファイルパスに変数を渡すには

問題: ユーザーの入力に基づいてファイルネットワークパスに移動するには、マクロが必要です。しかし、2つの変数をネットワークパスに渡すことが可能かどうかはわかりません。または、これを行うための他の方法がある場合。

例)ユーザは、希望するFileNameと、そのファイルが配置されている場所のIPアドレスを、ドロップダウンリストからMaster Excelシートに選択します。多くの種類のファイルとIPアドレスがあるので、それらをすべてマクロにハードコードしたくありません。

現在、私が実際に持っているのは、実際の場所(IPアドレス)とFileNameを示す以下のハードコードです。

Dim vPID As Variant  vPID = Shell("notepad.exe ""\\105.xxx.xx.xx\C:\FileName""", vbNormalFocus) 

誰かが私が研究できる優れたリソースを指摘できますか?私は何時間もオンラインで検索しており、自分がしたいことに直接関係するものは何も見つかりません。

私は以下を試しましたが、変数を間違って挿入したためにネットワークパスが見つかりませんでした。

注:開かれるファイルは、メモ帳で開かれ、.xlsに変換されないXML形式です。

注:ToolIDは、セル範囲のIPアドレスを参照する「G6」 ファイル名は「I3」のセル範囲を参照する

Dim ToolID As String 
Dim FileName As String 
Dim vPID As Variant 
Dim GetFile As Workbook 

Set GetFile = ThisWorkbook 
FileName = ThisWorkbook.Worksheets("Sheet1").Range("G6").Value 
ToolID = ThisWorkbook.Worksheets("Sheet1").Range("I3").Value 

vPID = Shell("notepad.exe ""\\ToolID\C:\FileName""", vbNormalFocus) 

答えて

0

私はどのようにShell()作品はかなりわからないんだけど、一般的に、あなたが持っていますあなたの変数が行く部分を "壊す"ことができます。それはこのようなものでなければなりません:「この文は、[VAR1]にスペースを持っていることは、[VAR2]だ」:

myString = "This sentence has " & var1 & " spaces in it. That's " & var2 
+0

あなたは文章中の変数を希望する場合のような方法と同様に

vPID = Shell("notepad.exe ""\\" & ToolID & "\C:\" & FileName & """", vbNormalFocus) 

だろうご回答いただきありがとうございます。私はこれを明日試して、これがシェル内で動作するかどうかを見てみましょう()。 – mplh2008

+1

@ mplh2008 - 「シェル内」などの文字列の連結には違いはありません。あなたがしているのは、単一の文字列を作成してから、シェルにパラメータとして渡すことだけです。デバッグを簡単にするために、 'commandString =" notepad.exe "" \\ "&ToolID&" \ C:\ "&FileName&" "" "'と 'vPID = Shell(commandString 、vbNormalFocus) ' – YowE3K

+0

あなたのおかげで、私はそれを働かせました。私は学ぶべきことがたくさんある、 – mplh2008

関連する問題