是否可以使用自定義名稱創建工作簿而不將其保存到磁盤?我想避免默認的「Workbook x」名稱,但我不想要求用戶保存工作簿。如果我在一些臨時文件中自動保存它,如果用戶點擊「保存」,用戶將不會得到「另存爲...」對話框,這可能會造成混淆。使用自定義名稱創建工作簿而不將其保存到磁盤
7
A
回答
4
只需創建工作簿,不要保存,因此當用戶嘗試保存時,用戶將得到一個「另存爲」提示。如果用戶試圖關閉它,則用戶將在關閉之前得到一個提示用戶是否想要保存該文件(再次爲另存爲對話框)。現在該提示的出現將取決於您對新創建的工作簿進行了一些更改的事實。
例如
Sub Sample()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
默認情況下,工作簿將被命名爲「書*」,但真的不應該的問題的用戶將有機會做一做「另存爲」
後續
按下Ctrl + S。這將SH另存爲...「對話框,就好像工作簿從未保存過一樣。
雖然我提到過,只有我能想到的,但在處理代碼時,我想出了2個選擇:)
WAY 1
的一種方式a)創建一個新的工作簿
b)將它保存爲說,JAN 2012.XLSM,用戶的Temp目錄
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
WAY 2(這樣做的複雜的方式)
a)創建一個新的工作簿
b)將它保存爲說,JAN 2012.XLSM,用戶的Temp目錄
C)注入代碼來禁用Ctrl + S鍵,只允許另存爲
0
您可以使用應用程序事件管理創建和保存工作簿。
查看Application Events從CPearson的網站獲取更多信息。
我的建議:建立一個插件與應用程序事件處置管理新的工作簿:
在插件ThisWorkbook
模塊(或使用類模塊由皮爾遜描述),incluse這個代碼
Option Explicit
' Establish object to handle events
Public WithEvents App As Application
Private Sub Workbook_Open()
Set App = Application
End Sub
' Handle new workbook
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
MsgBox "New Book..."
Wb.SaveAs "Your Path and File Name Here"
End Sub
' Intercept save event
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Saving " & Wb.Name
End Sub
相關問題
- 1. 下載工作簿而不將其保存到磁盤中rubyxl
- 2. 將新創建的工作簿保存到特定文件夾
- 3. 將trie保存到磁盤
- 4. 將nsdate保存到磁盤
- 5. 將DynamicMethod保存到磁盤
- 6. 將工作表名稱複製粘貼到其他工作簿
- 7. 在運行時創建Pojo並將其保存在磁盤上?
- 8. 如何引用不使用工作簿名稱的工作簿?
- 9. 計算一個字符串將佔用磁盤空間而不將其保存到磁盤
- 10. 將自定義數據保存在Excel工作簿中
- 11. MySql不保存到磁盤
- 12. UIManagedDocument不保存到磁盤
- 13. Ruby:顯示內存中的HTML文件而不將其保存到磁盤
- 14. 將自定義的Sprite保存爲本地磁盤的圖像
- 15. VBA自動每10秒鐘保存工作簿而不激活工作簿?
- 16. 從工作簿運行工作簿打開事件用新名稱保存
- 17. Java servlet和IO:創建文件而不保存到磁盤並將其發送給用戶
- 18. 自動保存特定的工作簿
- 19. 用WinJS將圖像保存到磁盤
- 20. Android - 如何下載文件,然後將其打開而不保存到磁盤?
- 21. RMagick - 將文件轉換爲其他格式而不保存到磁盤
- 22. 生成PDF而不保存到磁盤,然後將其顯示給瀏覽器
- 23. 以不同名稱保存工作簿vba
- 24. 以不同名稱保存編輯/寫入工作簿
- 25. 將Tableau工作簿保存到Hadoop中
- 26. 我如何創建,編寫,然後返回在C#中的文件,而不將其保存到磁盤
- 27. 立即下載新創建的文件,而不是保存到磁盤
- 28. 從現有(未知名稱)工作簿創建表單副本到一個新的(未知名稱)工作簿
- 29. 在內存中創建FileStream而不是在磁盤上保存物理文件
- 30. Facebook用戶如何將圖片保存到磁盤或不使用保存而使用它?
Siddarth,我想用不同於「Book x」的名字命名Workbooks。我的宏創建了幾個工作簿,並將它們命名爲「工作簿1」,「工作簿2」對用戶造成混淆。我希望工作手冊被命名爲「2012年1月」,「2012年2月」等,並讓用戶決定是否以及在何處保存它們。 – Cutter 2012-04-15 20:20:26
用戶如何保存工作簿?按Ctrl + S/Excel菜單或通過代碼? – 2012-04-15 20:21:53
通過按Ctrl + S.它將顯示「另存爲...」對話框,就像工作簿從未保存過一樣。 – Cutter 2012-04-15 20:25:53