Özel adı olan bir Çalışma Kitabını diske kaydetmeden oluşturmak mümkün mü? Varsayılan "Çalışma Kitabı x" adlarından kaçınmak istiyorum ancak kullanıcının çalışma kitabını kaydetmesini istemiyorum. Geçici olarak otomatik olarak kaydedersem, kullanıcı "Kaydet" i tıklarsa "Farklı Kaydet ..." iletisini almaz, bu da kafa karıştırıcı olabilir.Özel ada sahip bir Çalışma Kitabını diske kaydetmeden oluşturma
cevap
Basitçe çalışma kitabını oluşturun ve kullanıcı kaydetmeye çalıştığında, kullanıcı "Farklı Kaydet" İstemi'ni alacaktır. Kullanıcı bunu kapatmaya çalışırsa, kullanıcı kapatmadan önce kullanıcının (Tekrar Kaydet iletişim kutusu) kaydetmek isteyip istemediğini sorar. Şimdi bu komut isteminin görünümü yeni oluşturulan çalışma kitabında bazı değişiklikler yaptığınız gerçeğine bağlı olacaktır. Çalışma kitabı "Kitap *" olarak adlandırılan ancak kullanıcı
"Farklı Kaydet" do yapmak için bir şans elde edecek şekilde bu gerçekten önemli olmamalı Varsayılan olarakSub Sample()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
Örneğin
Ctrl + S O sh olur basarak İZLEMİNDE
Farklı Kaydet ... iletişim kutusu tıpkı çalışma kitabının hiç kaydedilmediği gibi. Aklıma ancak kod üzerinde çalışırken, ben 2 seçenekten :)
YOLU 1
ile geldi tek bir yolu olduğunu belirtilen olsa
a) Yeni bir çalışma kitabı oluşturun
b) JAN 2012.XLSM, kullanıcının Temp dizinine kaydedin
kullanıcı CTRL + S bastığında Şimdi zamanc)) Excel bunu yapmanın
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
YOL 2 (Komplike yolu
bir Farklı Kaydet isteyecektir,)d Readonly için dosya özelliklerini değiştirme
a) yeni bir çalışma kitabı
b) dedikleri gibi, kullanıcının Temp dizininde
için, JAN 2012.XLSM, sakla oluşturc) Ctrl + S devre dışı bırakmak için bir kod enjekte ve sadece oluşturulması ve çalışma kitaplarını tasarrufu yönetmek için Uygulama Olaylar kullanabilirsiniz
Farklı Kaydet izin verir.
Daha fazla bilgi için CPearson'ın sitesinden Application Events adresine bakın.
Benim önerim: Yeni çalışma kitaplarını yönetmek için bir uygulama olay işleyicisi ile bir eklenti oluşturun: Bu kodun incluse, eklenti ThisWorkbook
modülde
(veya Pearson tarafından açıklandığı gibi bir sınıf modülü kullanmak)
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
Siddarth, Çalışma Kitabını "Kitap x" den farklı şekilde adlandırmak istiyorum. Makromum birkaç çalışma kitabı oluşturuyor ve bunlara "Çalışma Kitabı 1", "Çalışma Kitabı 2" kullanıcı için kafa karıştırıyor. Çalışma kitaplarının "JAN 2012", "FEB 2012" vb. Olmasını istiyorum ve kullanıcının onları kurtarmak isteyip istemediğine karar vermesini istiyorum. – Cutter
Ve kullanıcı çalışma kitabını nasıl kaydeder? Ctrl + S/Excel menüsüne veya koduna basarak mı? –
Ctrl + S tuşlarına basarak, Farklı Kaydet ... iletişim kutusunu çalışma kitabının hiç kaydedilmediği gibi gösterir. – Cutter