麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

創建ActiveX接口以移植Excel工作表

2019-11-18 17:37:40
字體:
來源:轉載
供稿:網友
利用VisualBasic5.0中的ActiveXDLL移植Excel工作表中的access數據,本技術將避免應用程序修改后所需要的發布工作。

你可曾想過移植Excel工作表中的數據,但是對那些用戶來說卻不會感覺到工作的復雜?你是否想開發具有報告列表的用戶接口,從而使你能夠插入Excel工作簿?另外,你是否能夠以這樣一種方式開發用戶接口,即當該接口發生變化時,用戶的機器能夠自動更新到最新版本?本文將向你展示怎樣建立:

VisualBasic5.0中的簡單ActiveXDLL,從而使用戶從Northwind數據庫中獲得一系列表單。只要選擇表單,就可以移植包含Access數據的Excel工作表。
Excel工作表,該表包含菜單項的定制代碼,從而初始化ActiveXDLL。
可執行程序,該程序可以發送上述工作簿,并可檢查公用資源中ActiveXDLL的新版本,如果發現存在新版本,則拷貝并注冊該DLL到用戶的機器。
該方法的優點
我因為以下幾個原因而喜歡該方法。一旦ActiveXDLL編譯成功,它可以被任何ActiveX的兼容宿主程序調用,這意味著你能夠在MicrosoftWord、InternetExplorer或者大量的應用程序中使用它們。

不同于Excel中的VBA編碼,那些DLL一旦編譯成功就再也不能為用戶所修改,如果你想做一些與Excel相似的工作,就必須創建并發布相應的附加項。正如前面討論的那樣,只要進行簡單的VisualBasic編程,用戶機器上的DLL就能夠輕易地被替換。這意味著一旦故障被發現,或者新版本開發成功,用戶就可以直接升級,而再也不必經受安裝整個應用程序的痛苦。

該方法的不足
最大的不足是需要在兼容宿主程序上調用該ActiveXDLL,如果你要移植Excel工作表或Word文檔,那將不成問題。如果你要在自己編制的可執行程序或不可視的兼容宿主程序上調用該DLL,那么控制將變得比較困難,換句話說,此時采用標準的可執行程序作為接口是不適合的,最好的方法是為另一個應用程序提供接口。

設計DLL
為了創建接口,打開VisualBasic并創建一個標準的可執行項目,并將他存儲在你所選定的ExcelDLL文件夾中。為了加入Excel引用,點擊xlobj.application.DisplayAlerts=False

ForEachwsInxlobj.Worksheets
Ifws.Name<>"Sheet1"Then
ws.Delete
EndIf
Next

xlobj.Application.DisplayAlerts=True
EndSub

PrivateSubDetectExcel()
ConstWM_USER=1024
DimhwndAsLong
'IfExcelisrunning,thisAPIcallreturnitshandle.
hwnd=FindWindow("XLMAIN",0)
'0meansExcelisn'trunning.
Ifhwnd=0Then
ExitSub
Else'ExcelisrunningsousetheSendMessageAPIfunctionto
'enteritintheRunningObjectTable.
SendMessgehwnd,WM_USER 18,0,0
EndIf
EndSub

FriendSubCreateWorksheet()
DimstrJetConnStringAsString
DimstrJetSQLAsString
DimstrJetDBAsString
'PrepareExcelworksheetfortheQuerytable.
GetExcel
xlobj.Worksheets.Add
xlsheetname=xlobj.ActiveSheet.Name
xlobj.Windows("DLLTest.xls").Activate
'ModifystrJetDBtopointtoyourinstallationofNorthwind.mdb.
strJetDB="c:/ProgramFiles/MicrosoftOffice/Office/Samples/Northwind.mdb"

'Createaconnectionstring.
strJetConnString="ODBC;"&"DBQ="&strJetDB&";"&_
"Driver={MicrosoftAccessDriver(*.mdb)};"

'CreatetheSQLstring
strJetSQL="SELECT*FROM"&frmMain.lstTables.Text
'CreatetheQueryTableandpopulatetheworksheet.
Withxlobj.Worksheets(xlsheetname).QueryTables.Add(Connection:=strJetConnString,_
Destination:=xlobj.Worksheets(xlsheetname)_
.Range("A1"),Sql:=strJetSQL)
.Refresh(False)
EndWith
EndSub->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av手机免费在线观看 | 国产va在线观看免费 | 欧美a级毛片 | 免费一级欧美大片视频在线 | 九九热免费视频在线观看 | 欧美日韩亚洲在线观看 | 国产精品久久久久久久久久iiiii | 欧美成年性h版影视中文字幕 | 亚洲精品一区二区三区大胸 | 中文字幕亚洲一区二区三区 | 香蕉国产片 | 一区二区三区在线观看国产 | 黄色毛片视频在线观看 | 国产又白又嫩又紧又爽18p | 国产精品久久久久久久久久东京 | 久久精品亚洲欧美日韩精品中文字幕 | 中文字幕一区二区三区久久 | 国产在线1区 | 国产羞羞视频在线免费观看 | 国产色爱综合网 | 亚洲综合视频网站 | 长泽雅美av| 一级片久久免费 | 久成人 | 欧美亚洲一区二区三区四区 | 草草免费视频 | 他也色在线视频 | 欧产日产国产精品v | 97人操| 久久久久久三区 | 久久综合婷婷香五月 | 国产1区2区3区中文字幕 | 精品乱码久久久久 | 香蕉在线播放 | 一区二区久久电影 | 91福利免费观看 | 天天看天天摸天天操 | av电影在线网站 | 欧美成人a | 一本一道久久久a久久久精品91 | 国产91对白叫床清晰播放 |