¿Es posible crear un libro de trabajo con un nombre personalizado sin guardarlo en el disco? Quiero evitar los nombres predeterminados de "Libro de trabajo x" pero no deseo que el usuario guarde el libro de trabajo. Si lo guardo de forma automática en algunos temporales, el usuario no obtendrá el cuadro de diálogo "Guardar como ..." si hace clic en "Guardar", lo que puede ser confuso.Crear un libro de trabajo con un nombre personalizado sin guardarlo en el disco
Respuesta
Simplemente cree el libro de trabajo y no lo guarde para que cuando el usuario intente guardarlo, el usuario obtenga un mensaje de "Guardar como". Y si el usuario intenta cerrarlo, entonces el usuario recibirá un aviso si los usuarios quieren guardar (Nuevamente un diálogo de Guardar como) el archivo antes de cerrar. Ahora, la aparición de este aviso dependerá del hecho de que haya realizado algunos cambios en el libro de trabajo recién creado.
Por ejemplo
Sub Sample()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
Por defecto, el libro será nombrado como "libro *", pero que en realidad no debería importar que el usuario tendrá la oportunidad de hacer hacer un "Guardar como"
FOLLOWUP
pulsando Ctrl + S. sería sh El diálogo Guardar como ... como si el libro de trabajo nunca se hubiera guardado.
Aunque he mencionado que sólo hay una manera que puedo pensar, pero mientras se trabaja en el código, me ocurrió con 2 opciones :)
WAY 1
a) Cree un nuevo libro de trabajo
b) Guárdelo, por ejemplo, JAN 2012.XLSM, en el directorio Temp del usuario
c) Cambiar las propiedades del archivo de sólo lectura
d) Ahora, cuando el usuario presiona CTRL + S, Excel le pedirá un Guardar como
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
MANERA 2 (forma complicada de hacerlo)
a) Crear un nuevo libro
b) Guardarlo como decir, ENE 2012.XLSM, al directorio temp del usuario
c) Inyectar un código para desactivar Ctrl + S y sólo permiten Guardar como
Puede utilizar eventos de aplicación para gestionar la creación y guardar libros.
Consulte Application Events del sitio de CPearson para obtener más información.
Mi sugerencia: crear un complemento con un manejador de sucesos de aplicación para gestionar los nuevos libros:
En el módulo de complemento ThisWorkbook
(o utilizar un módulo de clase como se describe por Pearson), incluse este código
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. ¿Cómo puedo crear, escribir y luego devolver un archivo en C# sin guardarlo en el disco?
- 2. ¿Cómo puedo generar un archivo zip sin guardarlo en el disco con Ruby?
- 3. Progamáticamente determina si un rango con nombre tiene un alcance en un libro de trabajo
- 4. Manipular un archivo en la memoria con PHP (sin crear un archivo temporal en el disco)
- 5. Obtener un rango con nombre de cadena en el libro de Excel cuando se duplica Nombre
- 6. GnuPG - ¿Cómo editar el archivo sin descifrarlo y guardarlo primero en el disco local?
- 7. ¿Cómo puedo crear un archivo numpy .npy en el disco?
- 8. ¿Cómo crear un archivo zip en memoria con directorios sin tocar el disco?
- 9. DropDownListFor con un atributo personalizado con - en nombre de atributo?
- 10. ¿Cómo puedo modificar un libro de Excel existente con Perl?
- 11. Copiando rango y pegando en el nuevo libro de trabajo
- 12. ¿Cómo puedo crear un disco RAM programáticamente?
- 13. ¿Cómo protejo toda la hoja de trabajo en un libro de Excel con un solo clic?
- 14. Modificar y validar un objeto de dominio Grails sin guardarlo
- 15. ¿Crear un libro Kindle programáticamente usando C#?
- 16. Interoperabilidad de Excel: guardar el libro de trabajo sin mostrar el diálogo de guardar
- 17. Cambiar el nombre de un trabajo en jenkins
- 18. ¿Cómo guardar un archivo XML en un disco con python?
- 19. Crear un archivo zip utilizando PHP clase ZipArchive sin escribir el archivo en el disco?
- 20. Crear un UIActivityIndicatorView personalizado
- 21. Crear y transmitir un archivo grande sin almacenarlo en la memoria o en el disco
- 22. Crear un botón personalizado con SWT
- 23. Django: ¿cómo crear un archivo y guardarlo en el FileField de un modelo?
- 24. Ocultar el libro de trabajo activo mediante programación en Excel
- 25. crear un proyecto de creación personalizado con el compositor
- 26. Cómo crear un teclado personalizado
- 27. Extraer un archivo de tar.gz, sin tocar el disco
- 28. Crear un NSAlert totalmente personalizado
- 29. Cómo escribir un libro de Excel en un MemoryStream en .NET?
- 30. agregando un comando personalizado con el nombre de archivo como un destino
Siddarth, quiero nombrar los libros de trabajo de manera diferente que "Libro x". Mi macro crea algunos libros de trabajo y tenerlos llamados "Libro de trabajo 1", "Libro de trabajo 2" es confuso para el usuario. Quiero que los libros de trabajo se llamen "JAN 2012", "FEB 2012", etc. ... y deje que el usuario decida si quiere guardarlos y dónde los quiere guardar. – Cutter
¿Y cómo el usuario guardará el libro de trabajo? ¿Presionando el menú Ctrl + S/Excel o mediante el código? –
Al presionar Ctrl + S. Se mostraría el cuadro de diálogo Guardar como ... como si el libro de trabajo nunca se hubiera guardado. – Cutter