在Excel中使用VBA强制保存在目录中

时间:2019-05-23 17:11:33

标签: excel vba

我有一个庞大的Excel电子表格,我需要允许其访问大量用户,以便他们可以为其客户使用它,但是我不希望他们能够覆盖原始文件(可以轻松设置变量) (在Excel中)或将其文件保存在当前文件夹之外-因此我想将其强制为“ saveas”模式,并将文件强制保存在该文件夹中。否则,他们将无法保存。我不是VBA专家,我发现了很多可能有用的示例,但似乎没有什么是我真正需要的,或者我不够聪明,无法弄清楚。我找到了此代码,但不确定它是否解决了该问题。救命?

我曾尝试在GPO中管理此操作,但似乎所有操作都使他们能够下载文件夹并保存在其他位置。

Sub ExampleToSaveWorkbookSet()

Dim wkb As Workbook
'Adding New Workbook
Set wkb = Workbooks.Add
'Saving the Workbook
wkb.SaveAs "C:\WorkbookName.xls"
'OR
'wkb.SaveAs Filename:="C:\WorkbookName1.xls"

End Sub

预期输出是修改后的Excel文件,该文件以不同的名称或根本没有保存在原始目录中。

1 个答案:

答案 0 :(得分:0)

这是一个在打开状态下运行的宏,并立即以.xlsx格式保存到您可以指定的用户位置。不幸的是,原始文件必须是.xlsm才能存储宏。 该宏位于“ ThisWorkbook”对象中。当您打开工作簿时,它将在复制之前退出。

Private Sub Workbook_Open()
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    vWbName = wb.Name
    vUserProf = Environ("USERPROFILE")
    vx = InStr(1, vUserProf, "Users\")
    If "<Use your own profileID>" = Mid(vUserProf, vx + 6) Then Exit Sub
    vDir = vUserProf & "\Downloads\"
    vWbName = Left(vWbName, Len(vWbName) - 5) & ".xlsx"
    wb.SaveAs vDir & vWbName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    MsgBox "You are now using a copy of the original"
End Sub