- ベストアンサー
EXCEl:ユーザー定義関数をLANで共有する方法
- EXCELでユーザー定義関数をLANで共有する方法について解説します。
- LAN接続を利用してVBAを共有する方法をお探しの方におすすめの解決策をご紹介します。
- ユーザー定義関数をワークシートでも使用したい場合に発生する問題と、解決策について詳しく説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ひとつの方法としては、[ネットワークドライブの割り当て]を使って 同じドライブ文字を使うようにする事で対処できるかもしれません。 例) \\SvA\folder\Addin.xla \\SvB\folder\Addin.xla という配置だとして、 SvAユーザーは\\SvA\folder をドライブ J: に割り当て SvBユーザーは\\SvB\folder をドライブ J: に割り当て またはAddinファイルに、強制的にChangeLinkさせるようにするコードを仕込むとか。 'ThisWorkbook Module Option Explicit Private WithEvents xApp As Application Private Sub Workbook_BeforeClose(Cancel As Boolean) Set xApp = Nothing End Sub Private Sub Workbook_Open() Set xApp = Application End Sub Private Sub xApp_WorkbookOpen(ByVal Wb As Workbook) Const svA = "\\SvA\folder\Addin.xla" Const svB = "\\SvB\folder\Addin.xla" Dim oldN As String Dim newN As String Dim vLinks, v With Wb vLinks = .LinkSources(Type:=xlLinkTypeExcelLinks) If Not IsEmpty(vLinks) Then newN = ThisWorkbook.FullName If newN = svA Then oldN = svB Else oldN = svA End If For Each v In vLinks If v = oldN Then .ChangeLink Name:=oldN, NewName:=newN, Type:=xlExcelLinks End If Next End If End With End Sub ただ、この方法の欠点としては、強制的にChangeLinkさせてますから、 [更新しない]を選択しても更新されてしまう事になります。(多分
お礼
回答ありがとうございました。 ChangeLinkを使う方法は、運用が難しいようです。 結局、個々のPCのCドライブに同じ名前のアドイン保存用のフォルダを作成し、スタートアップ時にサーバーからこのフォルダに自動でコピーする方法を採用しました。