私は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)
あなたは文章中の変数を希望する場合のような方法と同様に
だろうご回答いただきありがとうございます。私はこれを明日試して、これがシェル内で動作するかどうかを見てみましょう()。 – mplh2008
@ mplh2008 - 「シェル内」などの文字列の連結には違いはありません。あなたがしているのは、単一の文字列を作成してから、シェルにパラメータとして渡すことだけです。デバッグを簡単にするために、 'commandString =" notepad.exe "" \\ "&ToolID&" \ C:\ "&FileName&" "" "'と 'vPID = Shell(commandString 、vbNormalFocus) ' – YowE3K
あなたのおかげで、私はそれを働かせました。私は学ぶべきことがたくさんある、 – mplh2008