用NET的VSTO产出Office档案(Excel)
本節所使用的.NET版本為.NET 2008
18-1. 本章目的: ................................................................................................................ 2 18-2. VSTO簡介與基本觀念: ............................................................................................. 3 18-3. MSDN中的範例教學(VSTO for Excel): ................................................................. 4 18-4. 範例練習[exp21-1]:將Access資料庫讀到Excel中(簡易版) .................................. 6 18-5. 範例練習[exp21-2]:將Access資料庫讀到Excel中(複雜版) ................................ 16 18-6. 範例練習[exp21-3]:4 種寫入Excel儲存格的方法 ............................................... 25 18-7. 範例練習[exp21-4]:使用 Windows Form 存到資料
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
內...................................... 34
(1).本節將介紹如何使用『Visual Studio Tools for Office』
來產出各種office檔案
(2).使用Visual Studio Tools for Office 來開發可善用Microsoft
Office 2003 和2007 Microsoft Office System 的
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
(3).練習讀進各種資料檔案
MSDN中的範例教學(VSTO for Excel):
, 範例練習[exp21-1]:將Access資料庫讀到Excel中(簡易版)
, 範例練習[exp21-2]:將Access資料庫讀到Excel中(複雜版
, 範例練習[exp21-3]:4 種寫入Excel儲存格的方法
, 範例練習[exp21-4]:使用 Windows Form 存到資料表內 (4).MSDN中的範例教學(VSTO for Word):
, 範例練習[exp21-5]:在Word裡面輸出一段文字(2段文字)
, 範例練習[exp21-6]:在Word裡面輸出一段文字(顏色、標楷體、粗
體)
, 範例練習[exp21-7]:在Word裡面輸出一段文字(標題一、標題二、
標題三)
, 範例練習[exp21-8]:在Word裡面設定頁首、頁尾
, 範例練習[exp21-9]:在Word裡面製作表格
(1).Visual Studio Tools for Office簡稱為『VSTO』 (2).VSTO可以產出的office檔案有:『Excel 方案、InfoPath 方
案、Outlook 方案、PowerPoint 方案、SharePoint 工作流
程方案、Visio 方案、Word 方案』
(3).透過 Visual Studio 2008的VSTO,我們可以開發各式各樣
的 Office 應用程式,包括增益集、以文件為主的解決方
案、以及和 Office 結合的應用程式。
Visual Studio Tools 逐步解說會提供適用於常見案例的逐步指示,而且是學習
for Office 的最佳入門。
Microsoft Office Excel下列逐步解說會示範幾種基本的工作:自動化執
行資料分析、使用控制項、部署方案以及設定安全性。
Excel 2007
逐步解說:使用功能區設計工具建立自訂的索引標籤 , Excel 2007 示範如何將自訂索引標籤加入活頁簿的功能區。
Excel 2007 Excel 2003
Excel 2007 Excel 2003 下列逐步解說示範可以使用和執行的工作。
逐步解說:使用收集資料 Windows Form
, Windows Form 說明使用收集使用者輸入,然後將這些輸入傳送到
Excel 工作表中的儲存格。
逐步解說:使用控制項來變更工作表格式 CheckBox , Excel 示範使用工作表上的核取方塊變更格式的基本概念。
逐步解說:使用按鈕在工作表的文字方塊中顯示文字 , Excel 示範在工作表上使用按鈕和文字方塊的基本概念。
逐步解說:針對控制項的事件進行程式設計 NamedRange , 提供逐步解說的指示,說明如何將NamedRange控制項加入工作表,並
針對其事件進行程式設計。
逐步解說:文件層級專案中的簡單資料繫結
, SQL Server Excel 示範將資料庫中的單一資料欄位繫結至中之已命名
範圍的基本概念。
逐步解說:文件層級專案中的複雜資料繫結 , Excel Northwind SQL Server 示範將工作表中的多個儲存格,繫結至
資料庫中的欄位之基本概念。
逐步解說:使用快取資料集來建立主從式關聯 , (Master/Detail) 示範在工作表上建立主從式關聯以及快取資料,使得此
方案可以離線使用。
逐步解說:使用選項按鈕更新工作表中的圖表 , Excel 顯示在工作表上,使用選項按鈕變更圖表樣式的基本概念。
逐步解說:將資料繫結至執行窗格上的控制項 Excel , Excel 說明如何將繫結至資料來源的控制項,加入至中的執行窗格。
Excel(1).練習目標:
, 在這個步驟中,您將會建立一個 Excel 應用程式專案,並可
執行『文件層級專案中的簡單資料繫結』
, 本逐步解說示範使用文件層級專案進行資料繫結的基本概
念。Access 資料庫中的單一資料欄位會繫結至 Microsoft
Office Excel 中的已命名範圍。
, 此逐步解說也將示範如何加入可讓您捲動資料表中所有記錄
的控制項。
(2).工作項目:這個逐步解說將說明下列工作:
, 建立 Excel 專案的資料來源。
, 將控制項加入至工作表。
, 捲動資料庫記錄。
(3).步驟1:建立新的專案
, 建立名為 exp21-1 的 Excel 活頁簿專案
(4).步驟2:下載資料庫、建立新的專案
下載資料庫『』到目錄內,Bin\DebugNorthwind.accdb
使用右邊的資料來源視窗,將具型別資料集加入到專案。, []
如果看不到 [資料來源] 視窗,請按一下 [資料] 功能表上的 [顯示資料來源]
如果無法使用 [顯示資料來源],請在 Excel 活頁簿內按一下,然後再檢查
一次。
按一下加入新資料來源,啟動資料來源組態精靈。, [] []
選取資料庫,再按一下下一步。, [] []
選取與資料庫的資料連接,或使用新增連接按鈕加入, Access []
新的連接。
在選取或建立連接後,請按下一步。, []
如果已經選取,請清除儲存連接的選項,然後按一下下一步。, []
在資料庫物件視窗中,展開資料表節點。, [] []
選取資料表旁的核取方塊。, []
按一下完成。, []
精靈會將資料表加入至資料來源視窗。也會將具型別,[] []
資料集加入至方案總管中可以看得到的專案。 []
(5).步驟3:將控制項加入至工作表
現在要在第一個工作表上,製作『兩個已命名的範圍和四個按鈕』。,
首先,將先從資料來源視窗加入兩個已命名的範圍,使它們自, [] 動繫結至資料來源。 接著,再從工具箱加入按鈕。, []
(6).步驟3-1:加入兩個已命名的範圍
確認已經在設計工具中開啟活頁,exp21-1.xls Visual Studio [] 簿,並顯示。Sheet1 []
開啟資料來源視窗,然後展開節點。,[] [] 選取資料行,然後按一下顯示的下拉箭號。, [] 在下拉式清單中,選取,,NamedRange []
,
然後將資料行拖曳至儲存格。,A1 [] []
儲存格中會建立一個名為的,A1NamedRange []
控制項。companyNameNamedRange
同時,會將名為的customersBindingSource,
、資料表配接器,以及執行個體加入BindingSource DataSet 至專案。控制項繫結至,繼而又繫結至 BindingSource DataSet 執行個體。
在資料來源視窗中選取資料行,然後按一下顯示, [] []
的下拉箭號。
,
在下拉式清單中,按一下,然後將, [NamedRange] [] 資料行拖曳至儲存格。 [B1]
另一個名為的控customerIDNamedRange, NamedRange 制項會建立在儲存格中,並繫結至。 [B1] BindingSource
(7).步驟3-2:加入四個按鈕
從工具箱的通用控制項索引標籤,將控制項加入,Button [] [] 至工作表的儲存格。A3 []
這個按鈕的名稱為。, Button1
依照此順序將另外三個按鈕加入至下列儲存格,使名稱如下所示:,
()
B3 Button2 C3 Button3 D3 Button4
(8).步驟3:設定按鈕文字、並初始化控制項
以下,要先『設定按鈕文字,並在事件期間加入事件處理, Startup
常式』。
首先,在方案總管中,在或上按一下, [] [Sheet1.vb] [Sheet1.cs]
滑鼠右鍵,再按快速鍵功能表上的檢視程式碼。 []
,
將下列程式碼加入至方法,以設定每個按鈕的文, Sheet1_Startup
字。(為設定起始值的副程式) Sheet1_Startup
,Visual Basic.NET
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Startup
With Me
.Button1.Text = "|<"
.Button2.Text = "<"
.Button3.Text = ">"
.Button4.Text = ">|"
End With
End Sub
或是, C#
this.button1.Text = "|<";
this.button2.Text = "<";
this.button3.Text = ">";
this.button4.Text = ">|";
若是使用,請將按鈕事件的事件處理常式加入至, C# Click
方法中Sheet1_Startup
this.button1.Click += new EventHandler(button1_Click);
this.button2.Click += new EventHandler(button2_Click);
this.button3.Click += new EventHandler(button3_Click);
this.button4.Click += new EventHandler(button4_Click);
(9).步驟4:加入程式碼以啟用捲動資料錄的功能
將程式碼加入至每個按鈕的事件處理常式,以便在資料錄,Click
中移動。
(10).步驟4-1:若要移至第一個記錄
為按鈕的事件加入事件處理常式,然後加入下,Click Button1
列程式碼,以移至第一個記錄:
,Visual Basic.NET
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.客戶BindingSource.MoveFirst()
End Sub
或是, C#
private void button1_Click(object sender, System.EventArgs e)
{
this.customersBindingSource.MoveFirst(); }
(11).步驟4-2:若要移至上一個記錄
為按鈕的事件加入事件處理常式,然後加入下,Click Button2
列程式碼,以後退一個記錄位置:
,Visual Basic.NET
Private Sub Button2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button2.Click
Me.客戶BindingSource.MoveNext()
End Sub
或是, C#
private void button2_Click(object sender, System.EventArg
s e)
{
this.customersBindingSource.MovePrevious();
}
(12).步驟4-3:若要移至下一個記錄
為按鈕的事件加入事件處理常式,然後加入下Button3, Click
列程式碼,以前進一個記錄的位置:
,Visual Basic.NET
Private Sub Button3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button2.Click
Me.客戶BindingSource.MoveNext()
End Sub
或是, C#
private void button3_Click(object sender, System.EventArg
s e)
{
this.customersBindingSource.MoveNext();
}
(13).步驟4-4:若要移至最後一個記錄
為按鈕的事件加入事件處理常式,然後加入下Button4, Click
列程式碼,以移至最後一個記錄:
,Visual Basic.NET
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.客戶BindingSource.MoveLast()
End Sub
或是, C#
private void button4_Click(object sender, System.EventArg
s e)
{
this.customersBindingSource.MoveLast();
}
(14).步驟5:測試應用程式
按執行專案。, F5
確認第一個記錄出現在和儲存格中。, [A1] [B1] 按一下按鈕,並確認下一個記錄出現在和,>A1 [] (Button3) []
儲存格中。B1[]
按一下其他捲動按鈕,以確認記錄如預期變更。,
Excel(1).練習目標:
, 在這個步驟中,您將會建立一個 Excel 應用程式專案,並可
執行『文件層級專案中的複雜資料繫結』
, 示範使用文件層級專案進行複雜資料繫結的基本概念。
, 可以將 Microsoft Office Excel 工作表中的多個儲存格,繫結
至 Access 的Northwind資料庫中的欄位
(2).工作項目:這個逐步解說將說明下列工作:
, 建立 Excel 專案的資料來源。
, 將控制項加入至工作表。
, 捲動資料庫記錄。
(3).步驟1:建立新的專案
, 建立名為 exp21-2 的 Excel 活頁簿專案
(4).步驟2:下載資料庫、建立新的專案
下載資料庫『』到目錄內,Bin\DebugNorthwind.accdb
使用右邊的資料來源視窗,將具型別資料集加入到專案。, []
如果看不到 [資料來源] 視窗,請按一下 [資料] 功能表上的 [顯示資料來源]
如果無法使用 [顯示資料來源],請在 Excel 活頁簿內按一下,然後再檢查一次。
按一下加入新資料來源,啟動資料來源組態精靈。, [] []
選取資料庫,再按一下下一步。, [] []
選取與資料庫的資料連接,或使用新增連接按鈕加入, Access []
新的連接。
在選取或建立連接後,請按下一步。, []
如果已經選取,請清除儲存連接的選項,然後按一下下一步。, []
在資料庫物件視窗中,展開資料表節點。, [] []
選取資料表旁的核取方塊。, []
按一下完成。, []
精靈會將資料表加入至資料來源視窗。也會將具型別,[] []
資料集加入至方案總管中可以看得到的專案。 []
(5).步驟3:將控制項加入至工作表
現在要在第一個工作表上,製作『兩個已命名的範圍和四個按鈕』。,
首先,將先從資料來源視窗加入兩個已命名的範圍,使它們自, [] 動繫結至資料來源。 接著,再從工具箱加入按鈕。, []
(6).步驟3-1:加入兩個已命名的範圍
確認已經在設計工具中開啟活頁,exp21-1.xls Visual Studio []
簿,並顯示。Sheet1 []
開啟資料來源視窗,然後選取節點下的。, [] [][]
按一下顯示的下拉箭號。,
選取下拉式清單中的。, [] ListObject
,
將資料表拖曳至儲存格。, [] [A6]
,
儲存格中會建立一個名為EmployeesListObject的[A6]
控制項。同時,會將名為EmployeesBindingSource的ListObject
、資料表配接器,以及執行個體BindingSource (Adapter) DataSet
加入至專案。控制項繫結至,繼而又繫結至 BindingSource DataSet
執行個體。
(7).步驟3-2:加入四個按鈕
從工具箱的通用控制項索引標籤,將控制項加, [] [] Button
入至工作表的儲存格 [A4]
(8).步驟3:設定按鈕文字、並初始化控制項
在方案總管中,在或上按一下滑鼠右, [] [Sheet1.vb] [Sheet1.cs]
鍵,再按快速鍵功能表上的檢視程式碼。 []
將下列程式碼加入至方法,以設定的文, Sheet1_Startup button
字。
,
將下列程式碼加入至方法,以設定每個按鈕的文, Sheet1_Startup
字。(為設定起始值的副程式) Sheet1_Startup ,Visual Basic.NET
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Startup
Me.Button1.Text = "Save"
End Sub
或是, C#
this.button1.Text = "Save";
若是使用,請將按鈕事件的事件處理常式加入至, C# Click
方法中Sheet1_Startup
this.button1.Click += new EventHandler(button1_Click);
(9).步驟4:加入程式碼以將變更儲存至資料庫 將對資料所做的任何變更明確存回資料庫之前,這些變更都只存在,
本機資料集中。
(10).步驟4-1:將變更儲存至資料庫
為的事件加入事件處理常式,然後加入下列程式utton, b Click
碼,認可對資料集所做的所有變更儲存到資料庫中:
,Visual Basic.NET
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Me.員工TableAdapter.Update(Me.NorthwindDataSet.員工)
Catch ex As System.Data.DataException
MessageBox.Show(ex.Message)
End Try
End Sub
或是, C#
private void button1_Click(object sender, System.EventArg
s e)
{
try
{
this.employeesTableAdapter.Update(this.northwindDataS
et.Employees);
}
catch (System.Data.DataException ex)
{
MessageBox.Show(ex.Message);
}
}
(11).步驟5:測試應用程式
按執行專案。, F5
(12).步驟5-1:測試 資料繫結
請按。, F5
確認當活頁簿開啟時,清單物件中會填入來自資料表的資, []
料。
(13).步驟5-2:測試 修改資料
按一下儲存格,此儲存格應該包含的名稱。,B7Davolio [] []
輸入的名稱,然後按。,Anderson ENTER
然後去打開資料庫的資料表,, AccessNorthwind.accdb[]
觀察是否修改後的資料已經儲存
(14).步驟5-3:測試 修改資料行行首
按一下包含資料行行首的儲存格。,LastName []
輸入,在兩個字中間包含一個空格,然後按。,Last Name ENTER
(15).步驟5-4:測試 儲存資料
在工作表上按一下儲存。, []
結束。當系統提示您儲存所做的變更時,請按一下否。, Excel []
按,再次執行專案。, F5
清單物件中便會填入來自資料表的資料。, []
請注意,儲存格中的名稱仍為,也就是您所進行,B7Anderson []
並儲存到資料庫的資料變更。資料行行首則已變更回LastName []
沒有空格的原始格式,因為資料行行首並未繫結至資料庫,而且您
也沒有儲存對工作表所做的變更。
(16).步驟5-5:測試 加入新資料列
在清單物件內選取儲存格。,
新資料列會出現在清單底部,而且新資料列的第一個儲存格中會出,
現星號。* ()
在空白資料列中加入下列資訊。,
EmployeeID LastName FirstName Title
10 Ito Shu Sales Manager
(17).步驟5-6:測試 刪除資料列
以滑鼠右鍵按一下工作表最左邊的數字第列,然後, [16] ( 16 )
按一下刪除。 []
(18).步驟5-7:測試 對清單中的資料列進行排序
在清單內選取儲存格。,
每個資料行行首中都會顯示箭號按鈕。,
按一下資料行行首中的箭號按鈕。,Last Name []
按一下遞增排序。, []
會按照姓氏的字母順序排列資料列。,
(19).步驟5-8:測試 篩選資訊
在清單內選取儲存格。 ,
按一下資料行行首中的箭號按鈕。,Title [] 按一下。,Sales Representative []
清單中只會顯示資料行中具有的,TitleSales Representative [] []
資料列。
再按一下資料行行首中的箭號按鈕。,Title [] 按一下全部。,() []
會移除篩選並顯示所有資料列。,
(1).練習目標:
, 練習在Excel工作表儲存格中顯示字串的4種方法
, 若要在儲存格中顯示文字,
(1).可使用 NamedRange 控制項。
(2).或原生 Excel 範圍物件
(2).步驟1:建立新的專案
, 建立名為 exp21-3 的 Excel 活頁簿專案
(3).方法(1):使用『為範圍命名』NamedRange 控制項
這個方法會使用名為的控制項。這個控制項, Input1 NamedRange
(4).步驟D-1:制訂『為範圍命名』(NamedRange)
設定的儲存格命名為,Sheet1 [A1]Input1 必頇是在設計階段加入至文件層級自訂。
方法:可在儲存格,按滑鼠右鍵,選擇『』,1 [A1]
然後命名為:, Input1
方法:點選儲存格後,直接在上方『命名區』直接輸入命名,2 [A1]
然後命名為:, Input1
(5).步驟D-2:用程式碼控制『為範圍命名』(NamedRange)
下列程式碼必頇放在工作表類別中,而不是, ThisWorkbook sheet1
類別中。若要在控制項中顯示文字,將 NamedRange
控制項的值設為。NamedRange Hello 1………
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As 方案總管?先點選?然後滑鼠右鍵?檢視程式碼, sheet1.vb System.EventArgs) Handles Me.Startup ,Visual Basic.NET
'======== 方法1 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中
'======== 在Sheet1已經手動建立新範圍,然後寫程式來分派值
Me.Input1.Value2 = "Hello 1.........."
'======== 為什麼使用Value2
'======== 上述範例會使用該範圍控制項的 Value2 屬性 (而不使用 Value 屬性) ,此
可避免一定要傳入參數。
'======== Value :一定要有給值
'======== Value2 :可以沒有給值
End Sub
或是, C#
private void Sheet1_Startup (object sender, System.EventArgs e)
{
this. Input1.Value2 = " Hello 1..........";
}
'上述範例會使用該範圍控制項的 Value2 屬性 (而不使用 Value 屬性) ,此可避免一定要傳入參數。
'Value :一定要有給值
'Value2 :可以沒有給值
(6).方法(2):使用『原生 Excel 範圍』
這個方法會以程式碼設計方式建立『新範圍』,然後為其分派值。, 步驟:
先在範圍物件中顯示文字,在的儲存格上擷, Excel Sheet1 [A1]
取範圍,然後將值設為。 Hello 2………….
,
下列程式碼必頇放在工作表類別中,而不是, ThisWorkbook sheet1
類別中。若要在控制項中顯示文字,將 NamedRange
控制項的值設為。NamedRange Hello 2………
方案總管?先點選?然後滑鼠右鍵?檢視程式碼, sheet1.vb
,Visual Basic.NET
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
'======== 方法1 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中 '======== 在Sheet1已經手動建立新範圍,然後寫程式來分派值
Me.Input1.Value2 = "Hello 1.........."
'======== 方法2 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中 '======== 以程式設計方式來先建立新範圍,然後為其分派值 '======== 透過應用程式層級增益集將值傳遞至儲存格 '======== 建立表示 Sheet1 之 [A3] 儲存格的
Microsoft.Office.Interop.Excel..::.Range,並指派字串值給 Value2 屬性。
Dim rng As Excel.Range = Globals.Sheet1.Range("A3")
rng.Value2 = "Hello 2.................."
End Sub
或是, C#
private void Sheet1_Startup (object sender, System.EventArgs e) {
Excel.Range rng = Globals.Sheet1.Range["A3", missing]; rng.Value2 = " Hello 2..................";
}
(7).方法(3):『透過文件層級自訂將值傳遞至儲存格』 在的儲存格上建立控制項,並指派字, Sheet1 A1 NamedRange
串值給屬性。 Value2
將下列程式碼放入類別中。, Sheet1
,
方案總管?先點選?然後滑鼠右鍵?檢視程式碼, sheet1.vb
,Visual Basic.NET
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
'======== 方法1 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中
'======== 在Sheet1已經手動建立新範圍,然後寫程式來分派值
Me.Input1.Value2 = "Hello 1.........."
'======== 方法2 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中
'======== 以程式設計方式來先建立新範圍,然後為其分派值
'======== 透過應用程式層級增益集將值傳遞至儲存格
'======== 建立表示 Sheet1 之 [A3] 儲存格的 Microsoft.Office.Interop.Excel..::.Range,並指派字串值給 Value2 屬性。
Dim rng As Excel.Range = Globals.Sheet1.Range("A3")
rng.Value2 = "Hello 2.................."
'======== 方法3 :寫在工作表類別sheet1中,而不是 ThisWorkbook 類別中
'======== 以程式設計方式來先建立新範圍,然後為其分派值
'======== 透過文件層級自訂將值傳遞至儲存格
'======== 在 Sheet1 的 A5 儲存格上建立 NamedRange 控制項,並指派字串值給 Value2 屬性。將下列程式碼放入 Sheet1 類別中。
Dim nr As Microsoft.Office.Tools.Excel.NamedRange =
Me.Controls.AddNamedRange(Me.Range("A5"), "NamedRange1")
nr.Value2 = "Hello 3..............."
End Sub
或是, C#
private void Sheet1_Startup (object sender, System.EventArgs e) {
Microsoft.Office.Tools.Excel.NamedRange nr =
this.Controls.AddNamedRange(this.Range["A5", missing], "NamedRange1");
nr.Value2 = " Hello 3...............";
}
(8).方法(4):『透過應用程式層級增益集將值傳遞至儲存格』 建立表示之儲存格的, Sheet1 [A1]
,並指派字串值給屬Microsoft.Office.Interop.Excel..::.Range Value2 性。
,
方案總管?先點選?然後滑鼠右鍵?檢視程式,ThisWorkbook.vb
碼
開啟『』副程式, ThisWorkbook_Open()
,Visual Basic.NET
Private Sub ThisWorkbook_Open() Handles Me.Open
'======== 方法4 :寫在ThisWorkbook 裡面 ===============
'======== 以程式設計方式來先建立新範圍,然後為其分派值
Dim rng As Excel.Range = Me.Application.Range("C1")
rng.Value2 = "Hello 4..........."
End Sub
或是, C#
private void Sheet1_Startup (object sender, System.EventArgs e) {
Excel.Range rng = this.Application.get_Range("C1", missing); rng.Value2 = " Hello 4...........";
}
(9).步驟5:測試應用程式
按執行專案。, F5
(1).練習目標:
, 在這個步驟中,示範如何從 Microsoft Office Excel 2007 工作
表開啟 Windows Form,從使用者收集資訊並且將這些資訊
寫入工作表的儲存格中。
(2).步驟1:建立新的專案
, 建立名為 exp21-4 的 Excel 活頁簿專案
(3).步驟3:將(命名範圍) NamedRange 控制項加入至工作
表
若要將已命名的範圍加入至, Sheet1
在中選取儲存格。, Sheet1 [A1]
在名稱方塊中,輸入。, [] Input1
名稱方塊位於資料編輯列的左邊,就在工作表欄的上面。[] A
注意:輸入後,一定要按鍵,否則無法登入, Input1 ENTER ,
注意:此時,儲存格中會加入控制項。選取,NamedRange A1 [A1]
儲存格時,工作表上不會出現任何可見的提示,但是 [Input1]
會顯示在名稱方塊中工作表上方左邊的位置和屬性 [] () []
視窗中。
(4).步驟4:將 Windows Form 加入專案
建立一個用來提示使用者輸入資訊。, (1). Windows Form 先在在方案總管中選取專案。, [] [exp21-4] 在專案功能表上,按一下加入。, [] [ Windows Form] 將表單命名為或,然後按一下加入。, Form1.vb Form1.cs [] 這個新表單就會在設計工具中開啟。,
將和加入至表單。,TextBoxButton
選取這個按鈕,在屬性視窗中找出屬性,然後將文字變, [] Text
更為。 OK
接著,將程式碼加入至或, ThisWorkbook.vb
,收集使用者的資訊。ThisWorkbook.cs
(5).步驟5:顯示 Windows Form 並且收集資訊
顯示表單並且收集資訊, (1).
在方案總管中的或, [] [ThisWorkbook.vb]
上按一下滑鼠右鍵,然後選取檢[ThisWorkbook.cs] [
。]
在的事件處理常式中,加入下列程式,Open ThisWorkbook
碼,宣告表單的變數,並顯示表單: GetInputString
,Visual Basic.NET
Private Sub ThisWorkbook_Open() Handles Me.Open
Dim inputForm As New Form1
inputForm.Show()
End Sub
或是, C#
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
this.Open += new
Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(T
hisWorkbook_Open);
}
private void ThisWorkbook_Open()
{
GetInputString inputForm = new GetInputString();
inputForm.Show();
}
(6).步驟6:建立名為 WriteStringToCell 的方法 建立名為的方法,用來將文字寫入已命名, WriteStringToCell
的範圍。
這個方法是從表單呼叫,然後將使用者的輸入傳遞到儲存格, A1
上的控制項:。 NamedRange Input1 注意:首先,在方案總管中,在或, [] [ThisWorkbook.vb]
上按一下滑鼠右鍵,再按快速鍵功能表上的檢[ThisWorkbook.cs] [
視程式碼。]
,Visual Basic.NET
Public Class ThisWorkbook
Private Sub ThisWorkbook_Open() Handles Me.Open
Dim inputForm As New Form1
inputForm.Show()
End Sub
Public Sub (ByVal formData As String)
Globals.Sheet1.Input1.Value2 = formData
End Sub
End Class
或是, C#
public void WriteStringToCell(string formData)
{
Globals.Sheet1.formInput.Value2 = formData;
}
接著,將程式碼加入至表單,處理按鈕的事件。, Click
(7).步驟7:傳送資訊到工作表
在方案總管中的上按一下滑鼠右鍵,然後選取檢視, [] [] [Form1
表設計工具。]
按兩下這個按鈕,開啟已經加入按鈕事件處理常式的程式, Click
碼檔案。
將程式碼加入至事件處理常式,以便從文字方塊取得輸入、將輸入, Public Class Form1
傳送至函式,然後關閉表單。 WriteStringToCell
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As ,Visual Basic.NET System.EventArgs) Handles Button1.Click
Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text)
Me.Dispose()
End Sub
End Class
或是, C#
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text);
this.Dispose();
(8).步驟5:測試應用程式
按執行專案。, F5
確認第一個記錄出現在和儲存格中。, [A1] [B1] 按一下按鈕,並確認下一個記錄出現在和,>A1 [] (Button3) []
儲存格中。B1[]
按一下其他捲動按鈕,以確認記錄如預期變更。,