サーバーのCSVファイルを指定するためのパスネームの書き方は?

Question 31.3   Previous Next
初めて質問させていただきます。
CSVファイルをワークシートに読み込むというマクロを書いています。
Openステートメントを使い、モードはInputでファイルを開いています。引数としてファイルのパスを渡しますが、"C:\temp\test.csv"と記述しておいた場合、サーバーのExcelをクライアント側でたちあげて実行すると、そのパスはサーバー側ではなく、クライアント側のパスと認識されます。

サーバー側のcsvファイルを常に指定したいので、引数として渡すパスにIPアドレスを使った方法を試してみましたが、うまくいきませんでした。OpenステートメントのパスにIPアドレスを使ったパスはだめなのでしょうか?
また、他にいい方法がありましたら、どうか教えてください。よろしくお願いいたします。
Answer   Copyright (C) 2000.10.7 永井善王
本題に入る前に、Openステートメントについて整理しておきます。構文は次のとおりです。

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength] 

この中の指定項目 pathname の書き方をお尋ねですね。
 
pathname は必ず指定しなければなりません。通常はファイル名を文字列式で指定します。必要によりドライブ名、フォルダー名を含めることができます。例えば、"D:\マイフォルダー\マイファイル.csv" のように書きます。
あなたは、"C:\temp\test.csv"と記述されたので、書式の問題ではないようです。原因は何でしょうか。

「サーバーのExcelをクライアント側でたちあげて実行」していることが影響するのでしょうか。
自分のパソコンでExcelを立ち上げるということは、自分のパソコンのRAMにExcelプログラムを読み込むということではないでしょうか。サーバーから読み込もうが、自分のハードディスクから読み込もうが、読み込んでしまえば自分のパソコン(=クライアント)で、Excelが動くようになります。
サーバーにインストールされているExcelを立ち上げたときはサーバーのパスになり、クライアントにインストールされているExcelを立ち上げたときはクライアントのパスになると錯覚するかも知れませんが、そういうことではないと思います。
「ネットワークドライブの割り当て」をした経験がありますか。

・操作方法
1.デスクトップのアイコンの[マイコンピュータ]または[ネットワークコンピュータ]をマウスで右クリックする
2.表示されたショートカットメニューの「ネットワークドライブの割り当て」をクリックする
3.右上図のダイアログボックスが表示されたら、「ドライブ」を選択し「パス」を入力して、[OK]ボタンをクリックする

ドライブ名には、自分のパソコンですでに使っているドライブ名(Cとか)は選択できません。サーバーなど他のパソコンのパスは通常「\\」で始まります。
この設定を行っておくと以後そのサーバーや他のパソコンは、設定したドライブ名で操作可能になります。
当然ですが、設定したパソコンだけに有効で、サーバーに接続されている全てのパソコンに有効になる訳ではありません。
答えがわかってきましたか。
pathname のドライブ名には、サーバーに割り当てたドライブ名を記述しましょう。上図の例では D ドライブですから、マクロコードは次のようになるかと思います。
Sub サーバーのCSVファイルを開く()
    Open "D:\temp\text.csv" For Input As #1
    Input #1, a$, b$, c$, d$
       ・
       ・
End Sub

 

Excel VBA Macro