2015-12-08 183 views
0

我的工作場所正在推出一些Microsoft Office的大型更新。我試圖設置一個VBA宏在每個人的計算機上運行,​​以創建一個具有Normal.dotm副本的新文件夾,以便如果(上帝禁止)出現問題,我們可以恢復Normal.dotm。這很重要,因爲每個人都有不同的功能區佈局以及我們不想丟失的不同的宏和設置。Word 2013,VBA創建Normal.dotm副本

我的問題是我有一個功能上很好的宏,但是當我在Normal.dotm上嘗試它時,它給出了權限被拒絕的錯誤,因爲FileCopy功能無法在Normal.dotm上工作。

代碼:

Private Sub CopyFiles_Click() 
sUserName = Environ$("username") 

Dim BackupDir As String 
BackupDir = "C:\Users\" + sUserName + "\Desktop\Backup for Normal - DO NOT DELETE" 

If FileFolderExists(BackupDir) Then 
Else 
    MkDir BackupDir 
End If 

If FileFolderExists("C:\Users\" + sUserName + "\AppData\Roaming\Microsoft\Templates\Normal.dotm") Then 
    FileCopy "C:\Users\" + sUserName + "\AppData\Roaming\Microsoft\Templates\Normal.dotm", (BackupDir + "\Normal.dotm") 
End If 

End Sub 

我有「FileFolderExists」的功能,我只是沒有包括節省空間(正常工作)

我的問題是,有沒有什麼辦法解決這個問題(找了一段時間,空手而過),還是有更好的方法來做到這一點?

+0

您的問題是的Normal.dotm被 「鎖定」 在運行Word時。如果你運行這個代碼,例如,Excel中的Word未運行,它可能會工作......「更好的方式來做到這一點」取決於你的公司是如何設置的。是否有一箇中央IT管理部門來管理安裝,用戶配置文件等?如果是的話,那麼「組策略」將是應該能夠備份(和恢復)用戶的「漫遊」文件夾中的文件的方式。 –

回答

0

試試這個VBScript中(不VBA)

Dim sUserName 
sUserName = CreateObject("WScript.Network").UserName 

Dim BackupDir 
BackupDir = "C:\Users\" + sUserName + "\Desktop\Backup for Normal - DO NOT DELETE" 

dim filesys 

set filesys=CreateObject("Scripting.FileSystemObject") 
on error resume next 
filesys.CreateFolder BackupDir 
on error goto 0 
filesys.CopyFile "C:\Users\" & sUserName & "\AppData\Roaming\Microsoft\Templates\Normal.dotm", (BackupDir & "\Normal.dotm")