全員が手動でダウンロードしてインストールする必要がないように、スタッフ間で共有されている Excel アドインを更新する方法が必要です。
Google で検索したところ、ファイルを OS ファイル システムに書き込めることがわかったので、新しいバージョンのアドイン、つまり .xlam ファイルを書き込んで自分自身を上書きすることになります。
これを行う方法がわかりません。持っている場合は、共有してください!ありがとうございました!
それを行うためのより粗雑な方法があるかどうかはわかりませんが、SendKeys
. ええ、私は知っています。他の誰かがより良い解決策を持っていることを願っています。
思い出すと、.xla(m) ファイルを上書きする前にアドインをアンインストールする必要がありますが、組み込みオブジェクトだけを使用してこれを行う方法が見つかりませんでした。
以下のコードは、基本的にアドインをアンインストールし、[アドイン] ダイアログ ボックスを呼び出してSendKeys
、リストからアドインを削除してから、新しいファイルをコピーしてアドインを再インストールします。
状況に合わせて修正してください。もちろん、ユーザーのセキュリティ設定が十分に低く、実行できるかどうかによって異なります。
Sub UpdateAddIn()
Dim fs As Object
Dim Profile As String
If Workbooks.Count = 0 Then Workbooks.Add
Profile = Environ("userprofile")
Set fs = CreateObject("Scripting.FileSystemObject")
AddIns("MyAddIn").Installed = False
Call ClearAddinList
fs.CopyFile "\\SourceOfLatestAddIn\MyAddIn.xla", Profile & "\Application Data\Microsoft\AddIns\", True
AddIns.Add Profile & "\Application Data\Microsoft\AddIns\MyAddIn.xla"
AddIns("MyAddIn").Installed = True
End Sub
Sub ClearAddinList()
Dim MyCount As Long
Dim GoUpandDown As String
'Turn display alerts off so user is not prompted to remove Addin from list
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Do
'Get Count of all AddIns
MyCount = Application.AddIns.Count
'Create string for SendKeys that will move up & down AddIn Manager List
'Any invalid AddIn listed will be removed
GoUpandDown = "{Up " & MyCount & "}{DOWN " & MyCount & "}"
Application.SendKeys GoUpandDown & "~", False
Application.Dialogs(xlDialogAddinManager).Show
Loop While MyCount <> Application.AddIns.Count
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
私はこれを行うために、アドイン マネージャーを元に戻すを使用します。基本的には、各ユーザーのマシンにインストールされているものを決して変更しない小さな xla/xlam です。ネットワーク共有で実際のアドインの最新バージョンをチェックし、それを通常のワークブックのように開きます。これにより、ユーザーの実際のアドインをロードする効果があります。
ここでカスタマイズできるダウンロード可能な実用的な例があります