[VBA]隱藏VBA CODE處理過程

[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!

image

image

參考資料

Excel VBA 實用技巧 ( 輕輕的進階編 ) 如何關閉提示警告訊息對話框

EXCEL VBA:工作表