作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以创建具有自定义名称的工作簿而不将其保存到磁盘?我想避免使用默认的“工作簿 x”名称,但我不想要求用户保存工作簿。如果我自动将其保存在某个临时文件中,则用户在单击“保存”时将不会出现“另存为...”对话框,这可能会令人困惑。
最佳答案
只需创建工作簿而不保存它,这样当用户尝试保存它时,用户将收到“另存为”提示。如果用户尝试关闭它,则用户将收到提示是否要在关闭之前保存(再次出现“另存为”对话框)文件。现在,此提示的出现将取决于您对新创建的工作簿进行了一些更改。
例如
Sub Sample()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
默认情况下,工作簿将被命名为“Book*”,但这并不重要,因为用户将有机会执行“另存为”
跟进
By pressing Ctrl + S. It would show the Save As... dialog just as if the workbook had never been saved.
虽然我提到我只能想到一种方法,但在编写代码时,我想出了 2 个选项:)
方式1
a) 创建一个新工作簿
b) 将其保存为 JAN 2012.XLSM,到用户的临时目录
c) 将文件属性更改为只读
d) 现在,当用户按 CTRL+S 时,Excel 将提示另存为
Option Explicit
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
Sub Sample()
Dim wb As Workbook
Set wb = Workbooks.Add
With wb
.SaveAs Filename:=TempPath & "JAN 2012.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
'.SaveAs Filename:=TempPath & "JAN 2012.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.ChangeFileAccess Mode:=xlReadOnly, WritePassword:="admin"
End With
End Sub
Function TempPath() As String
TempPath = String$(MAX_PATH, Chr$(0))
GetTempPath MAX_PATH, TempPath
TempPath = Replace(TempPath, Chr$(0), "")
End Function方式2(复杂的做法)
a) 创建一个新工作簿
b) 将其保存为 JAN 2012.XLSM,到用户的临时目录
c) 注入(inject)代码以禁用 Ctrl + S 并仅允许另存为
关于excel - 使用自定义名称创建工作簿而不将其保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165421/
我是一名优秀的程序员,十分优秀!