Mas @bejo ...
Untuk pertanyaan :
... dapatkah pada file yg baru tersebut saya selibkan macro pada workbookk ...
jawabannya, bisa. Asal Workbook tersebut disimpan dengan format Macro Enabled, misalkan :
...
Dim xVBComponent As VBIDE.VBComponent
Dim xVBCodeModule As VBIDE.CodeModule
Dim sScript As String, sFilePath As String
Dim xlNewWB As Workbook
sFilePath = ThisWorkbook.Path & "\NamaFilenya.xlsm"
Set xlNewWB = Application.ActiveWorkbook
Set xVBComponent = xlNewWB.VBProject.VBComponents.Add(vbext_ct_StdModule)
xVBComponent.Name = "modMain"
Set xVBCodeModule = xVBComponent.CodeModule
sScript = InitScriptsText()
xVBCodeModule.InsertLines xVBCodeModule.CountOfLines + 1, sScript
xlNewWB.SaveAs sFilePath, xlOpenXMLWorkbookMacroEnabled
...
Baris sScript = InitScriptsText()
merupakan perintah untuk mengambil teks script dari prosedur InitScriptsText, misalkan seperti berikut :
Private Function InitScriptsText() As String
Dim sScript As String
sScript = vbNullString
sScript = sScript & "Option Explicit" & vbCrLf & vbCrLf
sScript = sScript & "Public Sub Auto_Open()" & vbCrLf
sScript = sScript & "MsgBox ""Halo...!""" & vbCrLf
sScript = sScript & "End Sub"
InitScriptsText= sScript
End Function
Untuk fungsi InitModuleAutoOpen
tersebut, bisa digantikan dengan script untuk membaca file modul eksternal yang akan disisipkan, misalkan :
Private Function InitScriptsText() As String
Dim xFSO As Object, xFileToRead As Object
Dim sFile As String, sScript As String
sFile = ThisWorkbook.Path & "modMain.bas"
Set xFSO = CreateObject("Scripting.FileSystemObject")
Set xFileToRead = xFSO.OpenTextFile(sFile, 1)
sScript = xFileToRead.ReadAll
xFileToRead.Close
InitScriptsText= sScript
End Function
Initinya, variabel sScript harus berisi script VBA yang akan disisipkan ke dalam modul, jadi bisa variabel tersebut bisa diisi secara langsung, atau diisi melalui prosedur (fungsi) seperti contoh di atas.
Sedangkan untuk pertanyaan :
... agar nama filenya tidak dapat dirubah ...
Saya tidak tahu apakah ini memungkinkan. Kalau Workbook (file Excel) sudah ditutup, saya yakin pengguna bisa mengubah nama Workbook (file Excel) tersebut dengan mudah. Kalau mas punya triknya, bisa dong dibagikan?
Demikian.