
下記のVBAを共有した場合、
①のコードでは、
Workbooks.Openで指定した共有パスの「在庫表.xlsm」が開けず、
strPathで指定した共有パスはエラーになりません。
それで仕方なく、②のコードで対応しています。
②のコードは、サーバーとなるPCのパス(C:から始まる絶対パス)と共有側のパス(\\から始まる共有パス)を設定しています。共有のパスが開かなければ(エラーになれば)絶対パスをwb1に代入する、という方法です。共有側でしか機能しなくサーバー機で実行できないのは問題ですので。。
しかし、ファイルを読み込むstrPathでは、①②ともに共有パスだけで問題なく動作します。
「HOGE_joint\商品リスト」\以下の「注文データ」フォルダにはアクセスできているのに
「HOGE_joint\商品リスト」\以下の「在庫表.xlsm」にはアクセスできない原因がわかりません。
もちろん、在庫表.xlsmだけ特別なアクセス設定をしている訳ではなく、HOGE_joint以下の共有設定はすべてeveryoneでのフルアクセスです。
尚、共有先でしたら、Workbooks.Openで絶対パスを記述しなくても正常に動作していますので、「在庫表.xlsm」がないということはありません。
つきまして、
共有する場合は、やはりサーバー機の絶対パスと共有パスの両方が必要なのでしょうか?
その場合、strPathで指定した共有パスだけは、絶対パスがなくとも正常に動作しているのでしょう?
以上につきましてご助言をいただけましたら幸いです。
何卒よろしくお願い申し上げます。
①
------------------------------------------------------------
Sub DataLoad_test()
Dim ・・・
Dim ・・・
Dim ・・・
' 在庫表を開く
Set wb1 = Workbooks.Open("\\HOGE-MAINPC\joint\商品リスト\在庫表.xlsm")
Set ws2 = wb1.Sheets("販売数")
Set ws3 = wb1.Sheets("在庫高")
strPath = "\\HOGE-MAINPC\joint\商品リスト\注文データ\"
' txtファイルを順に読み込む
strFileName = Dir(strPath & "*.txt")
Do While strFileName <> "
・・・
・・・
・・・
・・・
End Sub
②
------------------------------------------------------------
Sub DataLoad_test()
Dim ・・・
Dim ・・・
Dim ・・・
'在庫表を開く ※ローカルと共有の2ヶのパスが必要
On Error Resume Next ' エラーが起きても処理を継続する
Set wb1 = Workbooks.Open("\\HOGE-MAINPC\joint\商品リスト\在庫表.xlsm")
If wb1 Is Nothing Then ' ファイルが開けなかった場合は、もう一方のパスを試す
path = "C:\HOGE\joint\商品リスト\在庫表.xlsm"
Set wb1 = Workbooks.Open(path)
End If
On Error GoTo 0 ' エラー処理を元に戻す
Set ws2 = wb1.Sheets("販売数")
Set ws3 = wb1.Sheets("在庫高")
strPath = "\\HOGE-MAINPC\HOGE_joint\商品リスト\注文データ\"
' txtファイルを順に読み込む
strFileName = Dir(strPath & "*.txt")
Do While strFileName <> "
・・・
・・・
・・・
・・・
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは
情報が「できない」だけなので、直接の回答ではありません。
共有ファイルが開けないから、ローカルを代わりに開くのでOKなのでしょうか?
もしそうなのなら、初めからローカルのファイルを開けば済む話だと思われます。
そういうわけにはいかないから「共有ファイル」を利用しようとしているのではないのでしょうか?
>「HOGE_joint\商品リスト」\以下の「注文データ」フォルダにはアクセスできているのに
>「HOGE_joint\商品リスト」\以下の「在庫表.xlsm」にはアクセスできない原因がわかりません。
「できない」だけではなく、例えばエラーになるのであれば、その時のエラーメッセージを見ればヒントがあると思われます。
「ファイルが見つかりません」などなど・・
少しは調べてみる気があるのなら、アクセスできているフォルダからその下部にある、ファイルとパスのリストをVBAで出力してみれば、どのような状態であるかがわかるのではないでしょうか?
(例えば、あるフォルダ内だけアクセスできないとか・・)
共有ファイルの場合は、アクセス権の他に同時アクセスの問題もありそうです。
特に、一度開いた後のクローズ処理をきちんと行わないと、「開いている状態」と認識されたままになる可能性がありそうです。
あるいは、既に他のデバイスからアクセス中である場合の処理も記述しておく必要がありそうに思いますが・・
当該の共有ファイルを編集する必要があるのかないのかも不明ですが、もしも参照だけで良いのなら、ReadOnlyでOpenするという方法も考えられそうに思います。
※ 実際の状態が不明なので、思い付きでの回答ですが、何かのご参考にでもなれば。
サーバ機側にて、共有パスで当該のxlsmを開いたところ、セキュリティのダイヤログが出、「当該xlsmは信頼済みとしてアクセスを有効」とするとパスが通りました。。。;
フォルダにはアクセスできるのにファイルにはアクセスできないのはおかしいと思い込んでしまっていました。
またデバックではただ黄色マーカーされるだけで情報が少なく申し訳ございませんでした。「アクセス禁止ファイルのため参照不可」みたいな警告がでてくれていればよかったのですが;w
この度はご回答をいただき誠にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
ExcelVBAの使い方 ¥の使い方...
-
Eclipse
-
xcopyコマンドの進行状況を表示...
-
visual studio 2010のワーニング
-
VBAとロングファイル名
-
VBAで、VBのapp.pathと同じ機能...
-
【VBA】ExcelマクロでCSVファイ...
-
アクセス 自身のデータベース...
-
Excel2010VBAでエラーが出る相...
-
VBAでパワーシェルを実行したい...
-
fopenでのパス指定
-
【Excel VBA】Power Qurry のソ...
-
アクセスでテキストを開く
-
フォルダ ショートカット
-
実行ファイルのパスを取得したい
-
SendKeysステートメント
-
ブラウザからファイルパスを取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
ExcelのVBAで上書き保存を確...
-
EXCEL(VBA)で指定フォルダ内の...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
VBAでパワーシェルを実行したい...
-
A列に記載されているフォルダ...
-
初心者powershellのPS1ファイル...
-
Eclipse
-
VBAとロングファイル名
おすすめ情報