注冊(cè) 登錄
Office中國(guó)論壇/Access中國(guó)論壇 返回首頁(yè)

ganlinlao的個(gè)人空間 http://m.mzhfr.cn/?230471 [收藏] [復(fù)制] [分享] [RSS]

日志

Freebasic后期綁定調(diào)用excel,word,powerpoint等ole automation軟件

已有 3507 次閱讀2017-5-4 18:18 |個(gè)人分類(lèi):FreeBasic| Freebasic教程, Freebasic, Freebasic, Freebasic, Freebasic

       在IE死掉以后,ms-office是目前微軟尚存的ole automation軟件,其它的coreal draw和auto cad都紛紛轉(zhuǎn)向。
不管是前期還是后期綁定ole automation,都只能通過(guò)idispatch接口,而idispatch只有兩種數(shù)據(jù)類(lèi)型,一種是hResult(用來(lái)處理錯(cuò)誤),另一種是variant。所以不管vba有多少數(shù)據(jù)類(lèi)型,它調(diào)用office對(duì)象,只有一種數(shù)據(jù)類(lèi)型,那就是variant。
除了vb(vba),不管是c++,c#……都無(wú)法做到完全自動(dòng)轉(zhuǎn)換variant中的類(lèi)型,F(xiàn)B也不例化,variant絕對(duì)是一個(gè)很讓人頭疼的數(shù)據(jù)類(lèi)型。
          idispatch接口,最常用的就是getidofNames和invoke方法。其中為了方便使用,一般把invoke方法進(jìn)行細(xì)分,get方法用來(lái)獲取屬性值和子對(duì)象,put方法用來(lái)設(shè)置屬性值,set用于byref方式設(shè)置屬性值(所以vba中使用set語(yǔ)句用來(lái)賦值object對(duì)象,呵呵),call方法用來(lái)調(diào)用對(duì)象的方法。
          FB中處理com和ole的庫(kù)不少,有的很強(qiáng)大,有的比較簡(jiǎn)單,有的強(qiáng)調(diào)調(diào)用,有的強(qiáng)調(diào)不僅調(diào)用還強(qiáng)調(diào)能寫(xiě)activeX的dll和ocx。但都或多或少有點(diǎn)瑕疵,因?yàn)閭(gè)人的喜好不同,寫(xiě)出來(lái)的風(fēng)格不太一樣。
          在這里,我就介紹其中的一種,這是vbrichclient作者為FB寫(xiě)的一個(gè)簡(jiǎn)單的vbvariant類(lèi)庫(kù)。
         寫(xiě)一個(gè)簡(jiǎn)單的例子:
          '==================================
          #include "simpleVariant.bi"
          dim excelapp as vbVariant
          excelapp=createobject("excel.application")
         excelapp.put("visible","b","true")
          excelApp.Get("workbooks").call("open","s","G:\Freebasic\FBtest\test.xls")
          print "調(diào)用成功"
          sleep
        '===================================
        

     

vbvariant類(lèi),有一個(gè)很遺憾的地方,就是它干脆不自動(dòng)處理variant的數(shù)據(jù)類(lèi)型,所以每一個(gè)參數(shù)值,都要指明數(shù)據(jù)類(lèi)型(b:表示boolean;s:表示string(ansii);w:表示wstring(unicode);c:表示currency;i:表示integer;I:表示long;f:表示single;D:表示double,t:表示datetime,v:表示variant)。
      這讓人很不爽,當(dāng)然這是有改進(jìn)的空間的。

評(píng)論 (0 個(gè)評(píng)論)

facelist doodle 涂鴉板

您需要登錄后才可以評(píng)論 登錄 | 注冊(cè)

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 02:57 , Processed in 0.068055 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部