none
EXCEL 2003 寫好的 VBA, 用在 2007 都正常, 直到 excel 2010 就不能執行

    問題

  • 原來是 XP + office 2003  年代時寫好的小工具, 一直都是很順暢的在用.

    但是最近有小妹挑了一台小電腦出差用, 發現了一個問題, XP + 內建 office 2010, 執行同樣的 VBA 就報錯

    回顧並且確認了以下組合,

    xp + excel 2003, 2007, ok

    xp + excel 2010, NG

    win7 + excel 2007, ok

    因為沒有其他機器試驗了, 所以斗膽認為, excel 2010 可能有特別的地方引起這個問題

    請教一下, 各位有沒有類似經驗或解決方法.

    2013年5月7日 上午 07:41

解答

所有回覆

  • ... 既然是你寫的,用開發模式查一下不就好了?

    搞不好是 x64 呼叫 COM 問題。

    2013年5月7日 下午 12:30
  • ... 既然是你寫的,用開發模式查一下不就好了?

    搞不好是 x64 呼叫 COM 問題。

    報告一下, 雖然是俺寫的, 不過從來沒有遇過類似的問題, 也沒有用 X64之類的東西, 謝謝你的回應

    有兩個問題已經解決, 關於 msgbox 和 chr(), 原因是可能是寫碼不夠嚴謹的緣故, 不用 chr(), 改成 vBCrLf

        'Excel 2003/2007/2010 可以正確運行
        MsgBox ("你所輸入的資料格式都檢查通過, 已經填入 Sheet1" + vbCrLf + _
                "不過資料的準確性需要自行判定" + vbCrLf + _
                "可以開印標籤或發EMAIL")
        
        'Excel 2003/2007 可以, 但是 Excel 2010 不可運行
        'MsgBox ("你所輸入的資料格式都檢查通過, 已經填入 Sheet1" + Chr(13) + _
        '        "不過資料的準確性需要自行判定" + Chr(13) + _
        '        "可以開印標籤或發EMAIL")



    再來一個問題就是,

    Private Sub CommandButton載入樣版_Click()
    
    Dim Answer As Boolean   '原來沒有這句, 沒有明確定義, excel2003/2007 可執行, excel 2010 則無法運行
    
        Answer = MsgBox("所有已經填寫的資料會被取代." + vbCr + _
                        "僅作為觀察用. 如果要填寫資料, 建議首先 [清除所有資料] !!" + vbCr + vbCr + _
                        "你要繼續載入嗎 ?" + vbCr _
                        , vbQuestion + vbYesNo _
                        , "注意!!")
    
        If Answer = vbNo Then Exit Sub
    
        Answer = MsgBox("看來你還是需要繼續載入樣板. 記得, 觀察完畢, 務必首先 [清除所有資料] !! 要載入樣板嗎 ?", vbCritical + vbQuestion + vbYesNo, "注意!!")
        
        If Answer = vbNo Then Exit Sub
    
        Call pre_set_template
    
    End Sub


    再來這個就還沒有頭緒, Trim 和 UCase, 要處理的資料從使用者輸入的字串, 全變大寫, 去掉首位多餘的 [ 空白], 然後存起來

    報錯是, [ 找不到專案或程式庫 ]

    補充, TextBoxSR, 是一個在 USERFORM 上 TextBox, 名稱改成 TextBoxSR, 方便閱讀而已, 其內容是使用者輸入的資料

        string_buffer = Trim(UCase(TextBoxSR))
        TextBoxSR = string_buffer





    2013年5月8日 上午 03:25
  • Hi,

    請問 TextBoxSR 是字串變數嗎?

    我使用以下方式,在Excel 2013上都OK呢!
    Trim or Trim$ or VBA.Trim or VBA.Trim$
    UCase or UCase$ or VBA.UCase or VBA.UCase$


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年5月8日 上午 06:10
  • Hi,

    請問 TextBoxSR 是字串變數嗎?

    我使用以下方式,在Excel 2013上都OK呢!
    Trim or Trim$ or VBA.Trim or VBA.Trim$
    UCase or UCase$ or VBA.UCase or VBA.UCase$


    你好,

    TextBoxSR, 是一個在 USERFORM 上 TextBox, 名稱改成 TextBoxSR, 方便閱讀而已, 其內容是使用者輸入的資料

    以前沒見過 VBA.Trim 或 VBA.Trim$ 的寫法, 請問有甚麼特別嗎

    這個需要等那個美美回來, 實機試驗才能揭曉

    謝謝你的提示

    2013年5月8日 上午 08:10
  • 我直接剪貼進去兩段都可以跑 (Excel 2010 x86 ):

    2013年5月8日 下午 04:25
  • 我直接剪貼進去兩段都可以跑 (Excel 2010 x86 ):


    謝謝你的提示與幫忙. 這大概能夠確認, 應該是有些設定或組件不齊全的緣故. 但還是毫無頭緒, 不解問題如何產生的

    不過已經算暫時解決了 msgbox, chr()

    (奇怪, 為什麼俺不能貼圖)

    2013年5月9日 上午 01:28
  • 您好,
    或許有些DLL沒有安裝進去!
    您可以在編輯巨集那,選取「工具」->「設定引用項目」,
    然後看看有沒有那個項目是MISS的!

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 xiaolaba_tw 2013年5月16日 下午 02:04
    2013年5月9日 上午 01:52
  • 您好,
    或許有些DLL沒有安裝進去!
    您可以在編輯巨集那,選取「工具」->「設定引用項目」,

    謝謝你

    確認是多了一個  [ 遺漏: Microsoft Calender Control 2007 ]

    不知從何而來的

    移除後所有的錯誤都一併解除, 原來的寫碼也不用修改

    h_ttp://wp.me/ph3BR-RX

    2013年5月16日 下午 02:01