Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-保存工作簿而不更改内容_Vba_Excel - Fatal编程技术网

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

我有一个宏,可以在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").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太多了,我把它放在宏测试()的末尾,还好吗?我错了,它工作了,谢谢!谢谢,我找到了一个解决方案,但我将来需要这个解决方案!:)谢谢,我找到了一个解决方案,但我将来需要这个解决方案!:)