国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

創(chuàng)建ActiveX接口以移植Excel工作表

2019-11-18 17:37:40
字體:
供稿:網(wǎng)友
利用VisualBasic5.0中的ActiveXDLL移植Excel工作表中的access數(shù)據(jù),本技術(shù)將避免應用程序修改后所需要的發(fā)布工作。

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

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

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

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

設計DLL
為了創(chuàng)建接口,打開VisualBasic并創(chuàng)建一個標準的可執(zhí)行項目,并將他存儲在你所選定的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->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泗洪县| 贡嘎县| 嘉荫县| 木里| 栾川县| 固安县| 巴东县| 荣昌县| 龙南县| 客服| 洪雅县| 浑源县| 临清市| 白朗县| 天峻县| 西盟| 布尔津县| 当涂县| 成都市| 娄烦县| 宣恩县| 伊金霍洛旗| 阳新县| 三门县| 柘荣县| 鲜城| 弥渡县| 竹山县| 竹北市| 辉县市| 永寿县| 弥勒县| 沽源县| 龙州县| 黎平县| 犍为县| 东城区| 缙云县| 鲁山县| 宣武区| 五华县|