Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows XP Professional : Excel 2007)
Openステートメントのパスにネットワークドライブのパスは使用できますか?
投稿日時: 17/12/12 18:15:48
投稿者: YM1026

いつもお世話になっております。
Openステートメントについて質問です。
 
会社の中で複数のエクセルバージョンを使用しています。
私のPCでは問題なく動いたコードが一部ユーザーではエラーが出てしまいます。
 
私のPC    ⇒Excel2002/WindowsXP/デスクトップ
エラーの出るPC⇒Excel2007/WindowsXP/ノートPC
 
 
【質問】
2007ユーザーのPCで実行すると、下記コードの所で「実行時エラー75 パス名が無効です。」となります。
実行ボタン(右向きの三角ボタン)をクリックすると、処理は行われるのですが、また何回かループ処理をしていると
同じエラーが出てしまいます。
 
 
Dim myPath As String
Dim fn As Integer
myPath = ThisWorkbook.Path
fn = FreeFile
 
Open myPath & "\WK" For Output As #fn ←ここでエラーがでます
 
書き出したいので Output にしました。
その後、作成された"WK"を開いてエクセルへコピペしたいです。
 
ドライブに割り当てられていない、ネットワークドライブのパスは
Openステートメントで使用できないでしょうか?

 
よろしくお願い致します。

回答
投稿日時: 17/12/12 20:30:30
投稿者: WinArrow
投稿者のウェブサイトに移動

ネットワークの場合は、
 
\\コンピュータ名\共有フォルダ名\ファイル名
 
こんな感じで記述してみてください。

回答
投稿日時: 17/12/12 20:52:15
投稿者: WinArrow
投稿者のウェブサイトに移動

ネットワークの関係なのかな?
 
>"\WK"
は、テキストファイルですよね?
 
だったら、拡張子も指定する必要があるでしょう・・・
 
"\WK.txt"
かな?

投稿日時: 17/12/13 09:57:36
投稿者: YM1026

WinArrow様
 
ご回答ありがとうございます。
 
自分のPCでネットワークのパスで正常に動いたので
パスの問題ではないのかもしれません・・・
 
Excel2007だからでしょうか・・・?
 
PS
拡張子つけました(WK.txt)。

回答
投稿日時: 17/12/13 10:17:07
投稿者: WinArrow
投稿者のウェブサイトに移動

YM1026 さんの引用:
WinArrow様
 
ご回答ありがとうございます。
 
自分のPCでネットワークのパスで正常に動いたので
パスの問題ではないのかもしれません・・・
 
Excel2007だからでしょうか・・・?
 
PS
拡張子つけました(WK.txt)。

 
Excelのバージョンは、関係ないと思いますよ
 
自分のPCでは、ローカルでも、ネットワークでも正常なのは当たり前。
他PCで指定するネットワーク部分(\\コンピュータ名)は、あなたのPCのコンピュータ名ですよ!

回答
投稿日時: 17/12/13 10:20:08
投稿者: もこな2

ネットワーク関係ということで、一応確認です。
エラーが出るマシンを使用されている方のアカウントは、そのフォルダに、書き込む権限はありますか?
 
とりあえず、コードは置いておいて、エラーが出るユーザーの実機借りて、(ログインアカウントは切り替えずに)エクスプローラーでテキストファイル新規に作れるかチェックしてみてはどうでしょうか

投稿日時: 17/12/13 13:39:10
投稿者: YM1026

WinArrow様
 
>他PCで指定するネットワーク部分(\\コンピュータ名)は、あなたのPCのコンピュータ名ですよ!
 
すみません。。。私の勉強不足で。。。
良く分からないのですが。
 
\\コンピュータ名
の部分は、会社全体で同じ名前が使われていて、私のコンピュータ名が入りません。
 
 
もこな2様
 
ご回答ありがとうございます。
 
>エラーが出るマシンを使用されている方のアカウントは、そのフォルダに、書き込む権限はありますか?
 
はい。権限あります。
 
>とりあえず、コードは置いておいて、エラーが出るユーザーの実機借りて、(ログインアカウントは切り替えずに)エクスプローラーでテキストファイル新規に作れるかチェックしてみてはどうでしょうか
 
やってみました。作成できました。

回答
投稿日時: 17/12/13 15:54:24
投稿者: もこな2

17/12/13 13:39:10の投稿への回答です
うまくいかないユーザーさんについても、共有フォルダのアクセス権は問題が無くて、エクスプローラー上からファイルを作成できるということはNTFSアクセス許可も問題がなさそうですね。(共有フォルダが置いてあるドライブがNTFSでないかもしれませんが・・・)
そうなると、原因がよくわからないですね・・・
とりあえず、分析として障害が生じてるブックとは別に以下のプロシージャだけおいたブックを共有フォルダ上に置いて、問題のユーザーに実行してもらってはどうでしょうか

Sub TEST()
    Open ThisWorkbook.Path & "\TEST.txt" For Output As #1
        Print #1, "テスト"
    Close #1
End Sub
これで、同様のエラーが起きないのであれば、少なくともネットワークに依存するエラーでも、Excelに依存するエラーでもないってわかりますよね。
ちなみに、当方の環境で、ネットワーク上の共有フォルダにブックを置いてTESTプロシージャを実行してみましたが、普通に成功しますので、Openステートメントにネットワーク資源が使えないってことはなさそうです。
 
ちょっと気になるのは
引用:
実行ボタン(右向きの三角ボタン)をクリックすると、処理は行われるのですが、また何回かループ処理をしていると同じエラーが出てしまいます。
とのことですが、ループ処理するときに、既に開いているのにOpenしようとしてはいませんよね?

回答
投稿日時: 17/12/13 16:01:23
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
\\コンピュータ名
の部分は、会社全体で同じ名前が使われていて、私のコンピュータ名が入りません。

 
ここの説明は、理解できません。
 
少なくともお、全てのパソコンのコンピュータ名が同じということはあり得ません。
ここのパソコンでユニークな名前が設定されていないと、ネットワーク接続できません。
 
>私のコンピュータ名が入りません。
この説明もわかりません。
 
どこに入らないのですか?
 
貴方のコンピュータ名はどのようになっているのでしょう?

回答
投稿日時: 17/12/13 16:05:28
投稿者: もこな2

横から口出しになっちゃいますけど、たぶん目的のブックは、質問者さんのローカルでも、問題が発生しているユーザーのローカルでもなく、ネットワーク上のファイルサーバーに置いてあるんじゃ無いかとおもいます。

回答
投稿日時: 17/12/13 16:37:08
投稿者: WinArrow
投稿者のウェブサイトに移動

もこな2 さんの引用:
横から口出しになっちゃいますけど、たぶん目的のブックは、質問者さんのローカルでも、問題が発生しているユーザーのローカルでもなく、ネットワーク上のファイルサーバーに置いてあるんじゃ無いかとおもいます。

 
そうですね・・・
 
マクロブックがどこ(ローカルなのか?、共有フォルダなのか?)で話が変わってきますね・・・
 
THisworkBook.Path
を使っているから、共有フォルダに置いてある可能性が高いですね・・
 
もう一つ、確認ですが、
\wk.txtが、既に共有フォルダ内に存在していませんか?
それが「読み取り専用」ってことないですか?
 

回答
投稿日時: 17/12/13 23:46:24
投稿者: MMYS

ローカルのファイルと
ネットワーク上にあるファイル
の理解は出来ていますか。
 
ローカルにあるファイルは自分のパソコンに保存しているファイルです。
これは自分のパソコンにあるので自由に使うことが出来ます。
パスは
C:\folder\WK.txt
のように指定します。
 
一方ネットワーク上にあるファイルは別のパソコンに保存しているファイルです。
当然LANケーブルでそのパソコンと繋がってないと使えません。
で、パスの指定方法は
\\server\folder\WK.txt
のように指定します。
 
つまり、\\で始まる場合、ネットワーク上のファイルです。
 

YM1026 さんの引用:

\\コンピュータ名
の部分は、会社全体で同じ名前が使われていて、私のコンピュータ名が入りません。

あなたのパソコンを含めて複数のパソコンがLANでつながっているはずです。
で、それらはLAN上で区別が必要です。なので同じコンピュータ名はありえません。
1台ごとに固有のコンピュータ名を命名しなければならない。

投稿日時: 17/12/14 13:40:48
投稿者: YM1026

もこな2様
 
これで作成できました。
 

引用:
Sub TEST()
    Open ThisWorkbook.Path & "\TEST.txt" For Output As #1
        Print #1, "テスト"
    Close #1
End Sub

 
ということは、きっと私のコードのどこかがおかしいのだと思います。
 
ループ処理の中で
 Open myPath & "\WK.txt" For Output As #fn
 Print #fn, strMojiretu
 Close #fn
 Kill myPath & "\WK.txt"
を繰り返しているので、既に開いているものに対してOpenはしていないと思います。
 
 
WinArrow様
 
マクロブックはローカルでも共有フォルダでもどこに置いても使用できる様にしたいです。
WK.txt が「読み取り専用」で既に存在している事はありません。
 
MMYS様
引用:
1台ごとに固有のコンピュータ名を命名しなければならない。

 
どのサイトを見てもそう書いてあるので、コンピュータ名を入れなければいけないのですが
\\ の次は、会社で使用しているシステムの名前が入っていました。
 
ネットワークドライブの割り当ての「フォルダ」をプルダウンで選択しようとすると
\\会社で使用しているシステムの名前\フォルダ名 と全て共通してします。
 
 
回避策として、マクロブックを保存したフォルダ内にテキストを作るのではなく
デスクトップに作ることで解決しました。
 
ご回答いただきました皆様、本当にありがとうございました。
ネットワークドライブの件、私の勉強不足で申し訳ございませんでした。
[/quote]