[VBA]隱藏VBA CODE處理過程
紀錄一下過程。
問題描述
用Excel產生的報表,處理的VBA CODE不希望使用者看到,避免造成困擾。
解決方式
1. 把所有工作頁複製到新的檔案。
2. 把新檔儲存,提拱給使用者下載。
相關程式(FileSave.bas)如下:
'選取所有的工作頁,並另存新檔
Public Function SaveAllSheetToNewFile(ByVal inFileName As String)
Dim sheetNames() As String
sheetNames = GelAllSheetName()
Sheets(sheetNames).Select
Sheets(sheetNames).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs filename:=inFileName, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Function
'取得所有的工作頁名稱
Public Function GelAllSheetName() As String()
Dim resultString() As String
ReDim resultString(Sheets.Count)
Dim i As Long
For i = 1 To Sheets.Count
resultString(i - 1) = Sheets(i).Name
Next
ReDim Preserve resultString(Sheets.Count - 1)
GelAllSheetName = resultString
End Function
測試函式
'將產生結果另存新檔
Sub SaveReportToNewFile()
Dim fileName As String
fileName = InputBox(" 請輸入要另存的檔案名稱:", "檔案名稱", "table1")
If Trim(fileName) = "" Then
MsgBox "請輸入檔案名稱!"
Exit Sub
End If
'另存新檔
Application.DisplayAlerts = False
Call FileSave.SaveAllSheetToNewFile(fileName)
Application.DisplayAlerts = True
End Sub
執行結果
OK!
參考資料