お世話になります。
下記コードのC:¥Users¥中略の部分を変数にして、どのPCからでもこのフォルダを扱えるようにしたいです。
Private Sub btn_注文データ取り込み_Click()
Dim oldname as String
Dim newname as String
DoCmd.TransferText acImportDelim, "my_imp", "注文取込", "C:¥Users¥中略¥注文.csv", False, ""
DoCmd.OpenQuery "Q_注文取込→注文データ"
DoCmd.OpenQuery "Q_注文取込削除"
Kill "C:¥Users¥中略¥前回注文.csv"
oldname = "C:¥Users¥中略¥注文.csv"
newname = "C:¥Users¥中略¥前回注文.csv"
Name oldname As newname
MsgBox "取り込みが完了しました。", vbInformation + vbOKOnly, "取込完了"
End Sub
どのPCからでもということですが、これらのPCは同じローカルネットワーク内にあるということですか。
C:¥Users¥中略 というフォルダーはローカルネットワーク上の特定のPCのフォルダーということですか。
「どのPCからでもこのフォルダを扱えるよう」ということを上記の点も含めていもう少し詳しく説明してもらえますか。
自身のPC内のC:¥Users¥中略フォルダーでそこに注文.csvが存在するなら、そのコードではエラーにはならないと思いますが。
ちなみに、C:¥Users¥中略の部分を変数にするコードは下記のようになります。
ただし、質問のコードでエラーがでるならこのコードでもエラーはでます。
やっていることは同じことなので。
現在は自身のPCのデスクトップ上のフォルダの中に注文.csvがあります。
このフォルダを会社のサーバーに移動させます。
Accessの入っている会社のPCならどれからでもこのコードが動くように、PCからそのサーバー上のフォルダまでのパスを取得したいです。
ネットワークパス(UNCパス)を指定すればいいでしょう。
Windowsネットワークパスについて – 名古屋のパソコン入替・パソコン設定・キッティング作業業務
完全ガイド - Windows 10でネットワークドライブのパスを見つける方法 - MiniTool
一般的には下記のような書式になります。
これをどうにか取得して、変数に入れるということですか?
はい、そうです。
アクセスの知識というよりサーバー上のファイルを共有する場合の前提知識ですね。
リンクテーブルにする場合もネットワークパス経由でリンクすることになります。
これってそもそもデータベース分割とリンクテーブルをきちんとやっているの?
どういうことでしょうか?初学者なものでデータベース分割、リンクテーブルはよく理解しておりません。
マスターテーブルと、取り込んだ注文.csvを加工して作成した注文データテーブルは、メインデータ.accdbに入ってり、テーブルのみのファイルになっています。他の作業用.accdbファイルではそのテーブルをリンクさせています。
メインデータ.accdbはサーバーに置いてあり、作業用.accdbは各クライアントPCにおいてあるということでしょうか。
複数ユーザーでデータを共有する場合は、データベースの分割は必須ですので、しっかり学習しておきましょう。WEB検索すれば解説ページは多数見つかります。
access データベースの分割 - Google 検索
>> 8
じゃあ、各々のPCで取込・加工・登録が終わってから、各々でサーバ保管庫に投げておけばいいんじゃね?
ちょっとどの程度まで理解しておられるか分かりませんので、余談になるかもしれません。
会社のサーバー(ファイルサーバーか共有フォルダ、のはず)に置き、ということなので、同じネットワーク上にあるPCからでしたら、共有フォルダのアドレスは変わらないはずです。
例えば「10.0.0.1」というIPアドレスにある「共有CSVフォルダ」という共有フォルダの場合、どのPCからアクセスしてもアドレスは「\10.0.0.1\共有CSVフォルダ」ですよね。
※探し方は参考リンクを書いて頂いてますのでそちらを参照してください
ですの以下のように設定すればいいのではないでしょうか?
DoCmd.TransferText acImportDelim, "my_imp", "注文取込", "\10.0.0.1\共有CSVフォルダ\中略\注文.csv", False, ""
または
folderName = "\10.0.0.1\共有CSVフォルダ"
ただしAccessのプログラムをネットワークフォルダなどに置き、同時に複数人が使用すると不具合が発生します。例えばプログラムを使って同時に取り込み作業を行った場合、データベースに同時に書き込みが発生してしまい、壊れやすくなります。
参考:https://sys-daddy.com/multi-user-setting-of-access/
そこで「データベース分割」などが必要になってきます。
(でも書き込みを見ると、ある程度できているようですね)
すみません、追記させてください。
「\10.0.0.1\共有CSVフォルダ」が正常に表示されませんでした。
コードブロックとして再度記載します。