久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Visual Basic調(diào)用Excel

 jianyun.zhou 2011-08-11

由于編程需要,,網(wǎng)上查到,,貼到這里以備查。謝謝提供者??!

1 EXCEL的對象模型

  如果一個應(yīng)用程序支持自動化技術(shù),那么其它的應(yīng)用就可以通過其暴露的對象,,對它進(jìn)行控制,,控制程序稱為客戶機(jī),而被控制的一方就稱為服務(wù)器,,被控制的對象就是Active對象,。VB正是通過EXCEL顯露的各級對象來控制EXCEL工作的。每個對象都有各自的方法和屬性,,通過方法可以實(shí)現(xiàn)對對象的控制,,而屬性則可以改變對象的各種狀態(tài)。

  理解EXCEL的對象模型是對其編程的基礎(chǔ),。EXCEL是以層次結(jié)構(gòu)組織對象的,,其對象模型中含有許多不同的對象元素,這些對象元素就是VB可以操縱的,。在EXCEL對象的層次結(jié)構(gòu)中,,最頂層是Application對象,是Excel本身,。從該對象開始往下依次是:

.workbooks對象集,,是Application對象的下層,其指的是Excel的工作簿文件,。

.worksheets對象集,,是Workbooks對象集的下層,它表示的是Excel的一個工作表,。

.Cells和Range對象,,它們是worksheets對象的下層,它則指向Excel工作表中的一個或多個單元格,。

  以上介紹的四個對象是Excel中最重要也是用得最多的對象,,而且從上面的介紹中也不難看出,要控制Excel中的某個具體對象,,如某個工作簿中某一表格中的單元格,,就必須從Excel層次結(jié)構(gòu)對象的最上層即Application對象開始遍歷。

2 Excel對象的使用

2.1 application對象的使用

如前所述,,Application對象位于Excel層次結(jié)構(gòu)對象的最上層,,它代表的是Excel自身,我們的應(yīng)用程序理應(yīng)從Application對象的建立開始,。VB控制Excel的啟動方式有幾種,,在這里我們使用了API調(diào)用,可以確保目前系統(tǒng)中只有一個Excel副本在運(yùn)行,,程序代碼和說明如下:

Option Explicit
Public xlapp As Object‘Excel對象
Public xlbook As Object‘工作簿
Public xlsheet As Object‘工作表
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As long,ByVal wMsg As Long, ByVal wParam As Long, lParam_
     As Any) As_  Long

  以上是公有變量和API函數(shù)應(yīng)在模塊中聲明,。

    Sub GetExcel()
   Dim MyXL As Object  '用于存放Microsoft Excel 引用的變量。
   Dim ExcelWasNotRunning As Boolean '用于最后釋放的標(biāo)記,。
   On Error Resume Next  '延遲錯誤捕獲,。
   '不帶第一個參數(shù)調(diào)用 Getobject 函數(shù)將返回對該應(yīng)用程序的實(shí)例的引用。
    '如果該應(yīng)用程序不在運(yùn)行,,則會產(chǎn)生錯誤,。
   Set MyXL = GetObject(, "Excel.Application")
   If Err.Number <> 0 Then ExcelWasNotRunning = True
   Err.Clear '如果發(fā)生錯誤則要清除 Err 對象。
   '檢測 Microsoft Excel,。如果 Microsoft Excel 在運(yùn)行,,則將其加入運(yùn)行對象表。
  DetectExcel      '該過程檢測并登記正在運(yùn)行的 Excel
   '設(shè)置其 Application 屬性,,顯示 Microsoft Excel,。
   '然后使用 MyXL 對象引用的 Windows 集合,顯示包含該文件的實(shí)際窗口,。
   MyXL.Application.Visible = True
   MyXL.Parent.Windows(1).Visible = True
   '如果在啟動時,Microsoft Excel 的這份副本不在運(yùn)行中,,
   '則使用 Application 屬性的 Quit 方法來關(guān)閉它,。
   '注意,當(dāng)試圖退出 Microsoft Excel 時,,
     '標(biāo)題欄會閃爍,,并顯示一條消息詢問是否保存所加載的文件。
   If ExcelWasNotRunning = True Then
    MyXL.Application.Quit
   End If
    Set MyXL = Nothing  '釋放對該應(yīng)用程序和電子數(shù)據(jù)表的引用,。
End Sub

   '該過程檢測并登記正在運(yùn)行的 Excel,。
Sub DetectExcel()
Const WM_USER = 1024
    Dim hwnd As Long
'如果 Excel 在運(yùn)行,則該 API 調(diào)用將返回其句柄,。
    hwnd = FindWindow("XLMAIN", 0)
    If hwnd = 0 Then  '0 表示沒有 Excel 在運(yùn)行,。
    Exit Sub
    Else
     'Excel 在運(yùn)行,因此可以使用 SendMessage API'函數(shù)將其放入運(yùn)行對象表,。
     SendMessage hwnd, WM_USER + 18, 0, 0
     End If
End Sub

      有了Application對象,,就可以非常方便地訪問Excel應(yīng)用程序中的其它對象,以及這此對象的屬性和方法,。

    2.2 workbooks對象的使用

    dim xlbook as object    定義一個指向工作簿變量
set xlbook=xlapp.application.workbooks.add

  使用ADD方法新建一個空白的工作簿,。

    2.3 worksheets對象的使用

    dim xlsheet as object    定義一個指向工作表的變量
set xlsheet=xlapp.application.workshets.add
或者:set xlsheet=xlapp.application.worksheet(1)   指向當(dāng)前工作簿的第一頁

2.4 Cells和Range對象的應(yīng)用

      引用一個工作表(xlsheet)中的某個單位格用以下代碼:

      xlsheet.cells(I,j)=100  ‘表示在第I行第J列中寫入100這個數(shù)。

      引用工作表中的多個單位格用以下代碼:

    With xlsheet                          '設(shè)置邊框?yàn)槭菍?shí)際上線
.Range(.Cells(7,1),.Cells(28,29)).Borders.LineStyle = xlContinuous
End With

3 應(yīng)用實(shí)例

  該實(shí)例給出怎樣運(yùn)行Excel創(chuàng)建復(fù)雜表格以及向表格填充數(shù)據(jù)的完整過程,。在開始應(yīng)用程序前,,我們要做的準(zhǔn)備工作是建立一個我們所需格式的Excel模板。模板的作用相信大家都不會陌生,。我所做的模板如下(模板文件取名為“土工試驗(yàn)成果表”):

  模板可以存在指定的文件夾里,,也可以在于Excel存放模板的文件夾里。

  打開VB編程環(huán)境,,選擇新建一標(biāo)準(zhǔn)工程,。要想在VB中很好地調(diào)用Excel,首先必須打開VB編程環(huán)境“工程”菜單中的“引用”項(xiàng)目,,并選取項(xiàng)目中的“Microsoft Excel8.0 object library項(xiàng),。然后在窗體中加入一命令按鈕,其caption屬性為:Excel輸出,。

  即command1.caption= Excel輸出,。

  以下是代碼,其中模塊中的代碼和上面介紹的application使用代碼是一樣的,,不再列出,。

    Private Sub Command1_Click()
 Dim i, j As Integer
 Call GetExcel
 Set xlapp = GetObject("土工試驗(yàn)成果表.XLS")     '打開模扳文件
xlapp.Parent.Windows(1).Visible = True        '使父窗體可見
 Set xlsheet = xlapp.Application.Worksheets(1)'當(dāng)前工作簿的第一頁
 For i = 7 To 28這段代碼是將整數(shù)1到29寫入單位格中,實(shí)際應(yīng)用時可
   For j = 1 To 29 讀一數(shù)據(jù)文件并按要求寫入表格中
     xlsheet.Cells(i, j) = j   '當(dāng)前工作簿第一頁的第I行第J列
   Next j
 Next i
 With xlsheet                                '設(shè)置邊框?yàn)槭菍?shí)線
    .Range(.Cells(7, 1), .Cells(28, 29)).Borders.LineStyle = xlContinuous
 End With
xlsheet.SaveAs "d:\temp\w2.xls"           ‘按指定文件名存盤
' 引用當(dāng)前工作簿的第二頁
 Set xlsheet = xlapp.Application.Worksheets(2) 
     xlsheet.Cells(7, 2) = 789   ‘在第二頁的第7行第2列寫入789
    Set xlbook = xlapp.Application.Workbooks.Add '新建一空白工作簿
End Sub

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多