線上學習
About Us

線上文檔

首頁 >>線上學習 >>線上文檔

第23章:通過VBA程式操縱Excel伺服器(二)

23.2.4  新建表單

方法

VBA程式來新建一份表單,需要調用如下的介面方法:

NewReport(<範本名稱>)

 

利用NewReport方法,會針對指定範本建立一份空表單。如果需要在建立表單的同時為表單內容賦值,還需要在newReport之前調用addInitData方法:

 

AddInitData(<目的欄位元名><賦值運算式>)

其中“賦值運算式”可以是本範本的欄位名

示例

在示例資料庫中有如下範本,列舉所有客戶的資訊

 

 

 

 

 

 

 

 

 

 

 

 

 

當點擊【錄入訂單】按鈕之後,會打開一份新訂單,並且把當前選中(桔黃底色的那一行)的客戶資訊,自動傳遞到新訂單上。

為了實現上述目的,我們需要做三件事。

首先,我們要識別當前客戶是在哪一個。“當前客戶”指的是游標所在行的客戶。但是,當用戶點擊按鈕的時候,輸入焦點在按鈕上,也就是說,在按鈕的Click事件中無法讀取當前行號,所以,需要在點擊按鈕之前,就把當前行號記錄下來。我們的解決方案是,用J2單格存放當前行號資訊,在workSheet_ctionChange事件中,把當前行號記錄到J2單格中去。也就是說,每當遊標在工作表上移動,J2單格總是隨時反映當前的游標所在行號。

類似地,把當前行的客戶編號記錄到H2單格,記錄它的目的是定義條件格式,使得當前行的底色總是顯示成桔黃色。

第三,在【錄入訂單】按鈕的Click事件中,用VBA代碼新建訂單,並且把當前行的客戶資訊傳遞過去,代碼如下:

1

Private Sub cmdNewOrder_Click()

2

    Dim r As Long

3

    r = Range("J2")       確定當前行號

4

   

5

    如果當前行沒有資料,什麼也不做,返回。

6

    If Range("B" & r) = "" Then Exit Sub

7

   

8

    用當前行的資料新建訂單

9

    Dim oAdd As Object

10

    oAdd = Application.COMAddIns("ESClient.Connect").Object

11

   

12

    oAdd.addInitData "客戶編號", Range("B" & r)

13

    oAdd.addInitData "客戶名稱", Range("C" & r)

14

    oAdd.addInitData "地址", Range("D" & r)

15

    oAdd.addInitData "電話", Range("E" & r)

16

   

17

    oAdd.newReport "訂單"

18

   

19

    oAdd = Nothing

20

   

21

End Sub

 

3行,確定當前行號r

6行,如果當前行的客戶編號為空,說明當前行不是有效的客戶資訊,什麼也不做,直接退出。

910行,聲明介面物件,並賦值。

1215行,指定要傳遞到新表單上的資料。

17行,新建訂單並打開,同時把1215行指定的資料傳遞過去。

19行,釋放介面物件。