謝謝所有回覆過的的先進與高手,已順利解決!

===============================

各位先進大家好:

日前碰到一個問題

現行使用的vba巨集,有一段是利用「MSComDlg.CommonDialog」元件來開啟檔案選擇對話框

但OS升級成win10的64再搭配2016excel的64後

就一直卡在此段而無法使用

Google了很多資料,本想試著安裝回comdlg32.ocx的元件

但安裝了,也註冊了,也設定引用了

始終無法使用,依舊提示缺少「MSComDlg.CommonDialog」

所以試著改寫該段,但因非本科出生,甚為苦手,加上該巨集我是接手,裡面判斷又多

故在此提問,希望能有高手或先進,能不吝指導及解惑
文章關鍵字
不好意思,沒下載您的檔案.....

記得好久以前,我好像也用過這個元件。但是檔案拿到別臺電腦要直接執行時,就會有問題(沒設定引用)。

後來我的解決方法,就是:........我就不用,可以吧?呵。

現在我要使用對話框來讀取檔案的話,舉一個方法

Sub ss()
f1 = Application.GetOpenFilename()
MsgBox f1
End Sub





也不用設啥引用(應該),您試試看?
Der,misser1
順帶提一下,存檔時可以用的對話框:

Sub dd()
nametemp = "test.xls"
fname = Application.GetSaveAsFilename(nametemp, fileFilter:="匯出成Excle (*.xls), *.xls")
MsgBox fname
End Sub


以上,希望能幫到您。
Der,misser1
另外,google一下,有一種說法是:

NOTE: You must have one of the following programs installed to run this example:

Microsoft Office 2000 Developer Edition
Microsoft Visual Basic 6.0
Microsoft Visual Studio

不然就是:可能得在32位元系統執行(win?office?)。

樓主有試過:安裝以上的programs,或是找一臺32位元(win+office)電腦來試試?或許問題能夠解決?
Der,misser1
32bit的exe配32bit的dll, 64bit的exe配64bit的dll, 你的dll是32bit的,須用32bit的exe(Excel)才可以參照!
misser wrote:
另外,google一...(恕刪)


謝謝您的回覆,前述兩篇的方法,我會再試試

但應該是不太行

因為這VBA的定義極多,對我來說,要利用您給的來整段重寫

還要融合原本的定義,有點苦手....

但還是謝謝您!!

至於找32位元的方法

因這是公司的升級專案,就是要使用win10的64跟2016的64

故您提的這方法,我無法突破

我只能改寫該段或找到對應元件的安裝方法
imdslee wrote:
32bit的exe配...(恕刪)


您好,謝謝回覆!

我剛有搜尋了一下,似乎沒有comdlg64的ocx或dll 

教學都是說,放到system裡的64資料夾再註冊啟動即可

這些我都已試過了....
hfl wrote:
謝謝您的回覆,前述兩(恕刪)


關於電腦的問題,不知您是否考慮過,在64位元電腦上安裝虛擬機器,跑32位元?(其實我沒試過,也不知是否可行),或許這也是解決的方法之一?

您的檔案,昨天我有下載「瞄了一眼」,是把excel的VBA貼在Word?.......裡面程式碼還包有按鍵....我猜可能是檔案內容「不方便」公開?~~所以也無法確實幫您修改測試。

不過既然您都能「明確」的找到問題點是在那個引用元件上,那麼去逐一找到並修改應該不是難事?對話框的作用無非就是要回傳值(取得檔案位置與名稱).........取消引用,用上面提供給您的開啟對話框取代,邊找邊試,相信應該不會花太多時間?

加油~~希望您能早點解決您的問題~~
Der,misser1
請問大大,可以告訴我您是如何解決的嗎?因為我目前也遭遇一樣的困難?拜託了,感恩不盡~~
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!