VBA-保存工作簿而不更改内容
我有一个宏,可以在VBA中创建工作簿的副本。我希望此副本为“只读”,但属性VBA-保存工作簿而不更改内容,vba,excel,Vba,Excel,我有一个宏,可以在VBA中创建工作簿的副本。我希望此副本为“只读”,但属性ReadOnly:=True无效。 你能帮助我吗?代码如下: 第一个宏: Sub SaveXL() Dim Nom2 As String Dim Jour2 As String Dim FPath2 As String Jour2 = Format(Now(), "yyyymmdd - h\hmm") Nom2 = Jour2 & " Pricelist" FPath2 = Sheets("PARAM").Ran
ReadOnly:=True
无效。
你能帮助我吗?代码如下:
第一个宏:
Sub SaveXL()
Dim Nom2 As String
Dim Jour2 As String
Dim FPath2 As String
Jour2 = Format(Now(), "yyyymmdd - h\hmm")
Nom2 = Jour2 & " Pricelist"
FPath2 = Sheets("PARAM").Range("B33").Value
On Error GoTo fin4
fichier = Application.GetSaveAsFilename(FPath2 & Nom2, "Fichiers Excel (*.xls), *.xls")
If fichier <> "Faux" Then
ActiveWorkbook.SaveCopyAs fichier
VBA.SetAttr fichier, vbReadOnly
Test GetAName(fichier)
Else
MsgBox "Le fichier n'a pas été enregistré"
End If
Exit Sub
fin4: MsgBox "La création de l'excel a échoué"
End Sub
谢谢 如果要使工作簿不可保存,可以执行以下操作:
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
在本工作簿的模块中,使用:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub
然后进入即时窗口(按Ctrl+G)并键入:
Application.EnableEvents=False
-点击回车键
此工作簿。保存
-按Enter键
Application.EnableEvents=True
-点击回车键
现在,当用户试图保存工作簿时,只需取消保存,这意味着数据不能被永久覆盖。如果要使工作簿不可保存,可以执行以下操作:
在本工作簿的模块中,使用:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub
然后进入即时窗口(按Ctrl+G)并键入:
Application.EnableEvents=False
-点击回车键
此工作簿。保存
-按Enter键
Application.EnableEvents=True
-点击回车键
现在,当用户试图保存工作簿时,它只会取消保存,这意味着数据不能被永久覆盖。只读是一种文件系统权限,而不是由Excel控制的权限
建议使用Excel控制的只读版本,系统会提示用户以只读方式打开它(但用户可以选择否)
要将工作簿的副本保存为只读,建议您执行以下操作:-
使用SaveCopyAs
打开副本
使用SaveAs
保存副本,属性ReadOnlyRecommended
设置为true
删除第一条指令中的上一份副本
下面是一个小例子:-
公共子文件制作、复制、只读
将WkBk设置为Excel.工作簿
'Using SaveCopyAs
ThisWorkbook.SaveCopyAs Environ("UserProfile") & "\Desktop\Temp.xlsm"
'Open the copy
Set WkBk = Application.Workbooks.Open(Environ("UserProfile") & "\Desktop\Temp.xlsm")
'Use save as to make it read only recommended
WkBk.SaveAs Environ("UserProfile") & "\Desktop\Sample.xlsm", XlFileFormat.xlOpenXMLWorkbookMacroEnabled, , , True
'Close the now read only recommended copy
WkBk.Close
Set WkBk = Nothing
'Delete the original copy
Kill Environ("UserProfile") & "\Desktop\Temp.xlsm"
End Sub
只读是文件系统权限,而不是由Excel控制的权限
建议使用Excel控制的只读版本,系统会提示用户以只读方式打开它(但用户可以选择否)
要将工作簿的副本保存为只读,建议您执行以下操作:-
使用SaveCopyAs
打开副本
使用SaveAs
保存副本,属性ReadOnlyRecommended
设置为true
删除第一条指令中的上一份副本
下面是一个小例子:-
公共子文件制作、复制、只读
将WkBk设置为Excel.工作簿
'Using SaveCopyAs
ThisWorkbook.SaveCopyAs Environ("UserProfile") & "\Desktop\Temp.xlsm"
'Open the copy
Set WkBk = Application.Workbooks.Open(Environ("UserProfile") & "\Desktop\Temp.xlsm")
'Use save as to make it read only recommended
WkBk.SaveAs Environ("UserProfile") & "\Desktop\Sample.xlsm", XlFileFormat.xlOpenXMLWorkbookMacroEnabled, , , True
'Close the now read only recommended copy
WkBk.Close
Set WkBk = Nothing
'Delete the original copy
Kill Environ("UserProfile") & "\Desktop\Temp.xlsm"
End Sub
“它不工作”是什么意思?一种可能更简单的方法是锁定工作表并用密码保护它@MacroMan:Error 400:/DoktorOSwaldo:Error 400太多了,我把它放在宏测试()的末尾,还好吗?我错了,它工作了,谢谢!“它不工作”是什么意思?一种可能更简单的方法是锁定工作表并用密码保护它@MacroMan:Error 400:/DoktorOSwaldo:Error 400太多了,我把它放在宏测试()的末尾,还好吗?我错了,它工作了,谢谢!谢谢,我找到了一个解决方案,但我将来需要这个解决方案!:)谢谢,我找到了一个解决方案,但我将来需要这个解决方案!:)