gpt4 book ai didi

excel - 使用自定义名称创建工作簿而不将其保存到磁盘

转载 作者:行者123 更新时间:2023-12-01 19:04:43 25 4
gpt4 key购买 nike

是否可以创建具有自定义名称的工作簿而不将其保存到磁盘?我想避免使用默认的“工作簿 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com