- 締切済み
ディスクトップにショートカットを貼り付ける方法
office2016 c:\Insに登録されているMENU.batをディスクトップに貼り付けるマクロで、 下記の様にしたのですが、 実行時エラー’70 書き込みできません と表示されます。 ログインユーザはAdmin権限です。 Sub Shortcut_sample_NG() Dim wsh As New IWshRuntimeLibrary.WshShell Dim sc As IWshRuntimeLibrary.WshShortcut Set sc = wsh.CreateShortcut("C:\Users\Public\Desktop\MENU.bat.lnk") sc.TargetPath = "C:\Ins\MENU.bat" sc.Save End Sub ディスクトップではなく、c:\workだとショートカット作成されます。 Sub Shortcut_sample_OK() Dim wsh As New IWshRuntimeLibrary.WshShell Dim sc As IWshRuntimeLibrary.WshShortcut Set sc = wsh.CreateShortcut("C:\work\MENU.bat.lnk") sc.TargetPath = "C:\Ins\MENU.bat" sc.Save End Sub どの様にしたらディスクトップにショートカットを貼り付けることができるでしょうか? filecopyも同じでエラーではじかれます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nbokan181
- ベストアンサー率32% (74/228)
パブリックフォルダを共有することでもできそうです。 http://faq3.dospara.co.jp/faq/show/4611?category_id=1&site_domain=default
- kawais070_1
- ベストアンサー率55% (515/931)
Officeの立ち上げ時に右クリックして「管理者として実行」をやって、権限昇格をしないと、C:\Users\Public 以下のフォルダはアクセスできません。 通常の権限であれば、環境変数 USERPROFILE で示されたフォルダの下の Desktop フォルダに作成すれば良いと思います。(実行したユーザーのみのデスクトップになりますが) 環境変数の値を取得する方法は、以下の通り。 https://www.moug.net/tech/exvba/0150086.html ちなみに、ディスクトップ(disktop)は間違いです。デスクトップ(desktop)と書きましょう。
- nbokan181
- ベストアンサー率32% (74/228)
ショートカットの作成フォルダを C:\Users\Public\Desktop ではなくログインユーザのフォルダ以下のデスクトップであれば貼り付けできませんか? Publicの部分をログインユーザ名に書き換えて試してみてはいかがでしょうか。
お礼
回答ありがとうございます。 ログインユーザ名だといけますね。 ツールの起動用ショートカットを誰がログインしてもデスクトップに表示される様にしたかったのですが、とりあえず、ツールセットアップした人のデスクトップに表示される様にします。
お礼
回答ありがとうございます。 「管理者として実行」をやって、権限昇格をしないと、C:\Users\Public 以下のフォルダはアクセスできません なんて制約があったのですね。 ログインユーザの取得は以前にやったことがあったので下記の様にしました。 Sub Shortcut() 'WshNetworkオブジェクトを利用するには、「Windows Script Host Object Model」に参照設定 Dim WshNetworkObject As IWshRuntimeLibrary.WshNetwork '---(1) Set WshNetworkObject = New IWshRuntimeLibrary.WshNetwork '---(2) With WshNetworkObject Worksheets("TANMATSU").Cells(2, 1) = .UserName End With Dim user As String user = Worksheets("TANMATSU").Cells(2, 1) Dim wsh As New IWshRuntimeLibrary.WshShell Dim sc As IWshRuntimeLibrary.WshShortcut Set sc = wsh.CreateShortcut("C:\Users\" & user & "\Desktop\MENU.bat.lnk") sc.TargetPath = "C:\Ins\MENU.bat" sc.Save End Sub