access初心者です。

Writer: admin Type: foresth Date: 2019-01-08 00:00
access初心者です。excelの売上データをaccessにリンクテーブルを作成してデータにリンクする方法から、accessにデータリンクさせ、Excelのデータをaccessにて集計クエリを作成しています。作成者の私のパソコンからは問題なく閲覧できるのですが社内の別のパソコンには、Excelのデータに関してパス名が正しくありません。表示されてしまいます。共有フォルダは、ドロップボックスです。C:\Users\*******\Dropbox\売上集計\売上集計.xlsmデータソースのファイル名に私のパソコンのユーザー名が入ってしまう為だと思います。ユーザー名を各パソコンに自動で認識する設定などないのでしょうか?(Excelの関数などでしたら、自動で各パソコンに参照データの場所が変わるようになるので)なければ回避方法などをご教授いただければ幸いです。共感した0###確認ですが、ACCESSのデータベースファイルは共有しているものなのか各人のPCに配布されているものなのか?リンクテーブルとして扱いたいEXCELファイルは同一のファイル名のものが各人のPC内にあるのでしょうか?それとも、質問者のPC内にあるものですか?ナイス0
###返事が遅くなりました。各PCにあるドロップボックスで共有し各PCからは、ExcelファイルとしてはExcelから閲覧できるのですがaccessにリンクしaccessからExcelリンクテーブルを開くことができません( ;∀;)
###お二方、どちらも丁寧に質問に返答して頂き悩んだのですが、VBAに関してもっと学ぼうときっかけを頂きましたので選ばせて頂きました!ありがとうございました!###デスクトップのパスを取得するVBAを標準モジュールに登録するとGetDesktopPathでC:\Users\ユーザ名\Desktopが求められます。デスクトップ上に\Dropbox\売上集計\というフォルダがあり、その中に売上集計.xlsmを入れているのであれば、GetDesktopPath & "\Dropbox\売上集計\売上集計.xlsm"でフルパスになります。元のリンクがわからなくなったので実態を載せます。以下のコードを標準モジュールに貼り付けて登録して使います。'特殊フォルダのIDを取得するAPIDeclare Function SHGetSpecialFolderLocation Lib "SHELL32.DLL" _ (ByVal hWndOwner As Long, ByVal nFolder As Long, ppidl As Long) As Long'特殊フォルダのIDからフォルダのパスを取得するAPIDeclare Function SHGetPathFromIDList Lib "SHELL32.DLL" Alias _ "SHGetPathFromIDListA" (ByVal pIDL As Long, ByVal pszPath As String) As LongFunction GetDesktopPath() As String'******************************************************************'* デスクトップパスの取得'****************************************************************** Const CSIDL_DESKTOP = &H0 'デスクトップフォルダの定数 Const MAX_PATH = 260 'フォルダ名の長さの最大値 Dim strBuffer As String * MAX_PATH 'フォルダ名を受け取るバッファ Dim lngSpFolderLocation As Long 'フォルダのID Dim lngRet As Long 'API関数を呼び出して デスクトップフォルダのIDを取得 lngRet = SHGetSpecialFolderLocation(Application.hWndAccessApp, _ CSIDL_DESKTOP, lngSpFolderLocation) If lngSpFolderLocation <> 0 Then '特殊フォルダのIDが取得できたら、API関数を呼び出して 'フォルダIDに対応したフォルダのパスを取り出します lngRet = SHGetPathFromIDList(lngSpFolderLocation, strBuffer) '返り値の後続の Null を取り除いて返します '("C:\My Documents" などが返る.....必要なら最後に¥を付けます) GetDesktopPath = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) Else '取得できなければ長さゼロの文字列を返します GetDesktopPath = "" End IfEnd Functionナイス0

 

TAG