none
請問用 Excel 寫出的 VBA 程式, 是否有辦法轉成機械碼或 .exe 檔 RRS feed

  • 問題

  • 請問用 Excel 寫出的 VBA 程式, 是否有辦法轉成機械碼或 .exe 檔. Thanks.

    OS : Windows XP

    Office : office 2003

     

    2007年12月6日 上午 09:00

解答

  • 不行,但是你可以把巨集加密。

     

    其他:

    巨集分別略經改寫後,可在 VB6 或 VBNET 內編譯成執行檔。

    2007年12月6日 上午 09:49
    版主

所有回覆

  • 不行,但是你可以把巨集加密。

     

    其他:

    巨集分別略經改寫後,可在 VB6 或 VBNET 內編譯成執行檔。

    2007年12月6日 上午 09:49
    版主
  • 1. 所謂巨集加密, 是指加密碼嗎?
        不過聽說沒有用, 網上一堆破解程式
     
    2. 改成 VB6 的想法我也做過, 不過我是將按鍵部份的程式保留, 將其他程式寫成 .dll 檔
        兩邊聯繫的程式已經寫好, 不過因為不會寫 VB6 control Excel 的指令而停止.
        不會的指令如下 :
        a. 使用瀏覽的方式 open 一個不固定名稱的 Excel file
        b. Creat file, Open 固定名稱的 file, Close file, Delete file, Save file, SaveAs file, 抓 file 的 Path
        c. Creat sheet, Delete sheet, Move sheet, Copy sheet(包括不同的 file), Find sheet 的 data, 保護 sheet
        d. 寫入 data 到 Range, 寫入 data 到選取的 Range
            讀取 Range 的 data, 讀取選取的 Range 的 data 及 行列值
            Move Range, 將第一個選取的 Range Move 到第二個選取的 Range
            將 Range 塗上顏色, 將選取的 Range 塗上顏色, 設定條件將 Range 塗上不同顏色
            保護 Range ..........
       
    請問您能否教我或者能提供網站或網頁給我. Thanks.
    2007年12月6日 下午 05:36
  • 1. 是。

    有法故有破,執行檔也是有反組譯程式來解它。

     

    2. 你可以先搜尋既有討論。

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=Excel&localechoice=31748&SiteID=14&searchscope=forumscope&ForumID=805

     

    VBA 貼到 VB6 裡面更改的幅度不大,包含 Excel 本身的操控,都跟 VBA 內相同。

    VB6 線上手冊內亦有範例,查 CreateObject Excel.Application 即可。

     

    2007年12月6日 下午 11:41
    版主
  • 我有看討論, 不過都是針對 VB 2005, 您說 "VBA 貼到 VB6 裡面更改的幅度不大"

    那改成 VB 2005 呢?
    2007年12月7日 下午 01:55
  • VB6 跟 VBA 語法相容,只差在 VB6 版本比 VBA 舊,不支援指名引數,此外在 VB6 並沒有包含 Office 的命名空間,所以物件層數會多一層。

     

    VBNET 支援指名引數,但 VBNET 語法變更較多,所以更改幅度較大,你看到的程式碼就是 VBNET 更改的幅度。總體來說,善用 With 可以減少很多修改量,就沒啥更改了。

     

    比如說 2b 部分

    假設檔名 sFile = "c:\path\file.xls"

     

    VBA

    xlBook = WorkBooks.Open(sFile) ' 開檔

    With xlBook

    .Save ' 存檔

    .SaveAs "c:\path\file2.xls" ' 另存新檔

    .Close ' 關檔

    End With

     

     

    VB6

    Set xlApp = CreateObject("Excel.Application")

    xlBook = xlApp.WorkBooks.Open(sFile) ' 開檔

    With xlBook

    .Save ' 存檔

    .SaveAs "c:\path\file2.xls" ' 另存新檔

    .Close ' 關檔

    End With

     

     

    VBNET

    Dim xlApp As Object = CreateObject("Excel.Application")

    Dim xlBook As Object = xlApp.WorkBooks.Open(sFile) ' 開檔

    With xlBook

    .Save() ' 存檔

    .SaveAs("c:\path\file2.xls") ' 另存新檔

    .Close() ' 關檔

    End With

     

    可以看出差異不大。

    2007年12月7日 下午 02:39
    版主