999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VBA對Excel 2007二次開發應用研究

2010-04-12 00:00:00
現代電子技術 2010年10期

摘 要:Excel 2007在日常辦公方面應用較普遍,但是在合并多個單元格時,只能保留選擇區域最左上角的單元格數據,其他單元格的數據將被丟棄。針對工作中在合并單元格時,需要保留選擇區域所有單元格的數據,在此提出基于VBA對Excel 2007二次開發,結合Excel 2007對象模型Application對象的屬性,設計合并單元格控件的方法。在Windows XP SP3+Office 2007環境下,設計并開發出控件,實現了合并多個單元格,保留選擇區域數據,解決了工作中的實際問題。

關鍵詞:VBA; 二次開發; Excel 2007; 合并單元格

中圖分類號:TP311 文獻標識碼:B

文章編號:1004-373X(2010)10-0055-03

VBA-based Secondary Development of Excel 2007

LIU Ming

(Chongqing Vocational Institute of Engineering, Chongqing400037, China)

Abstract:Excel 2007 has been widely applied in peoptes daily life, but there are also some problems. When merging multiple cells, justthe cells on the very top left can be maintained andall the other cells are deleted. However, All the data of the cells in the selected area need be kept during the mergence of cells. The re-development of Excel 2007 is proposed based on VBA. The control widget of merging the cells is designed in combination with Excel 2007 objective mode and application object′s properties. Under the condition ofWindows XP SP3+Office 2007, the merging of multiple cells and the keeping of data in theselecting area are implemented by designing and developing control widget.

Keywords:VBA; redevelopment; Excel 2007; cell mergence

0 引 言

Microsoft Office已作為企事業單位解決辦公自動化的理想的工具。而 Visual Basic for Application(VBA)是 Office套件的一部分,用來定制和擴展Office的功能,讓用戶完成Office本身所不具備的功能,更高效地實現辦公自動化[1]。Microsoft Office中的Excel 2007是一款功能強大的辦公軟件,利用該軟件可以完成信息保存、數據計算、數據分析、信息動態發布等功能。但是在Microsoft Office中的Excel 2007軟件的使用中,對于單元格的合并處理并不是非常理想,在合并多個單元格時,Excel 2007總是只保留選擇區域中左上角單元格的數據,而將選擇區域的其他單元格的數據全部刪除。當使用Excel 2007處理數據,并需保留合并區域的所有單元格的數據時,Excel 2007就無法滿足要求,只能重新錄入數據,給工作帶來了極大的不便。

1 VBA對象

(1) VBA對象概述

VBA(microsoft visual basic for application)是Microsoft Office的核心組件之一,作為一個嵌入式二次開發引擎[2],VBA被集成到許多大型軟件系統之中,眾所周知的就有Word,Excel,PowerPoint,以及其他Office程序。Microsoft VBA建立在COM技術基礎之上,可以充分定制應用系統,或進行深度的二次開發。集成VBA可以與Microsoft Office共享同一個二次開發環境。在Office中,宏語言VBA 適用于所有應用程序,包括Word,Excel,PowerPoint,Access,Outlook 以及Project。從Office 97 版開始,新增了Visual Basic 編輯器。用戶無論是在Excel 中,還是在Word 中甚至于在Access 中建立和管理VBA 都使用統一的方法和標準。

具有開放性的Microsoft Office使用VBA語言進行二次開發。在Microsoft Office Excel 2007平臺上使用的VBA為用戶定制開發的應用程序,可以解決Excel 2007在具體使用過程中標準命令無法滿足用戶需求或者標準命令的操作過程過于繁瑣等方面的實際問題,達到幫助用戶減輕煩瑣、機械的日常工作,從而提高用戶的工作效率和程序的實用性。

VBA的Application對象共有AddIns集合、Columns和Rows集合、Dialogs集合、Sheets集合等對象集合[3],它們的作用有:

AddIns集合:AddIns集合表示所有當前加載的Excel Add-in;

Columns和Rows集合:這兩個集合表示活動工作簿中的列和行;

Dialogs集合:Dialogs集合包括Excel程序中所有的對話框;

Sheets集合:Sheets集合表示返回指定或活動工作簿中所有工作表的集合。

VBA的Application對象常用的屬性有ActiveCell,ActiveChart,ActiveSheet,ActiveWindow,ActiveWorkbook,RangeSelection,Selection,StatusBar,ThisWorkbook等。

ActiveCell屬性:Application對象的ActiveCell屬性表示返回一個表示活動工作簿中活動工作表的活動單元格的Range對象。

ActiveChart屬性:ActiveChart屬性表示返回表示活動圖表的Chart對象,不管它是嵌入的圖表還是圖表工作表。

ActiveSheet屬性:ActiveSheet屬性表示返回一個表示當前選中的工作表(頂部工作表)的Worksheet對象。

ActiveWindow屬性:ActiveWindow屬性表示返回一個表示活動窗口(頂部窗口)的Window對象。

ActiveWorkbook屬性:ActiveWorkbook屬性表示返回一個表示活動窗口(頂部窗口)中的工作簿的Workbook對象。

RangeSelection屬性:RangeSelection屬性表示返回一個表示指定窗口中工作表里選擇單元格的Range對象,即使在工作表中一個圖表對象已經被選擇或激活。

Selection屬性:Selection屬性表示返回活動窗口中被選擇的對象。

StatusBar屬性:StatusBar屬性表示返回或設置狀態欄的文本,這個屬性允許你更改在Excel窗口底部的狀態欄中顯示的信息。

ThisWorkbook屬性:ThisWorkbook屬性表示返回一個表示當前運行的宏代碼所在工作簿的 Workbook對象,這個屬性允許載入宏定義包含代碼的工作簿。

(2) Application對象概述[9]

Application對象是Microsoft Office Excel 2007對象模型中最高級別的對象,表示Excel程序自身。Application對象提供正在運行的程序的信息、應用于程序實例的選項以及實例中打開的當前對象。因為它是對象模型中最高的對象,Application對象也包含組成一個工作簿的很多部件,包括如工作簿、工作表集合、單元格以及這些對象所包含的數據等。Application對象帶有175個屬性和52個方法,可以設置整個應用程序的環境或配置應用程序。

有很多Application對象的屬性可以用來訪問Excel 2007程序的各種對象,但是只有小部分是你可能經常使用的。即如:

ActiveCell:返回一個表示活動工作簿中活動工作表的活動單元格的Range對象。

ActiveChart:返回表示活動圖表的Chart對象,不管是嵌入的圖表還是圖表工作表。在一個嵌入的圖表被選擇或激活時,它就是活動圖表。

ActiveSheet:返回一個表示當前選中的工作表(頂部工作表)的Worksheet對象。在一個工作簿中只有一個工作表能成為活動工作表。

ActiveWindow:返回一個表示活動窗口(頂部窗口)的Window對象。

ActiveWorkbook:返回一個表示活動窗口(頂部窗口)中的工作簿的Workbook對象。

RangeSelection:返回一個表示指定窗口中工作表里選擇的單元格的Range對象,即使在工作表中一個圖表對象已經被選擇或激活。

Selection:返回活動窗口中被選擇的對象。

StatusBar:返回或設置狀態欄的文本。

ThisWorkbook:返回一個表示當前運行的宏代碼所在工作簿的 Workbook對象。

(3) Application對象的Selection屬性使用方法[9]

Selection屬性返回活動窗口中被選擇的對象。例如,對于單元格,這個屬性返回Range對象;對于圖表,它返回Chart對象。如果使用屬性而沒有對象限定符,等于使用Application.Selection。

2 方案設計

使用VBA在Microsoft Office Excel 2007中進行二次開發時,利用Application對象的Selection屬性,設計一個控件。Selection屬性返回活動窗口中被選擇的對象,如果使用屬性而沒有對象限定符,等于使用Application.Selection。該控件需要能夠對Microsoft Office Excel 2007中的合并區域進行處理,先要讀出合并區域的所有單元格的數據,并保存起來,以備使用;然后對所選擇的區域進行合并操作,合并操作后,將保存的數據再寫回到合并后的單元格中,就完成合并操作。設計框圖如圖1所示。

3 系統設計

在程序系統設計中,可直接在Microsoft Office Excel 2007提供的Visual Basic編輯器中進行,系統設計分成選擇區域數據記數、數據讀出、數據寫入、程序加載等4個方面的設計。

圖1 設計框圖

(1) 選擇區域識別

在Microsoft Office Excel 2007進行區域選擇后,形成一個選擇區域,要由系統自動確認選擇區域的大小和編號。在Excel 2007提供的VBA中,使用下面的語句直接識別出選擇區域的大小:

行數:Selection.Rows.Count

列數:Selection.Columns.Count

(2) 數據讀出

識別出選擇區域的大小后,立刻讀出選擇區域中所有單元格的數據,并把數據保存起來,此時并不知道數據的類型,以及數據量的大小。在Microsoft Office Excel 2007中,在進行區域合并時,根據實際需要,其參與工作的數據量并不是很大,并且也不需要考慮每一個單元格的數據類型,只需要做簡單的保存即可。因此,用1個萬能型的變量,進行保存,把選擇區域中所有單元格的數據采用字符串的連接方法,按順序連接起來,保存在1個變量中。方法如下:

For i = 1 To Selection.Rows.Count

For j = 1 To Selection.Columns.Count

MergeData = MergeData \",\"

Selection.Cells(i, j)

Next j

Next i

(3) 數據寫入

在單元格合并完成以后,所有選擇的單元格合并成1個單元格,這時的數據寫入是非常簡單的,采用下面的方法即可:

Selection.Cells(1, 1) = MergeData

(4)程序加載

程序設計好后,Excel有2種加載宏的方法。第一種是在運行Microsoft Office Excel 2007后,在宏中直接加載運行即可;第二種是在Microsoft Office Excel 2007運行的時候進行加載,并且嵌入在Microsoft Office Excel 2007的工具欄上,這種方法使用比較方便,能夠直接使用。

Excel有3種類型的加載宏程序,即:Excel 加載宏、自定義的組件對象模型 (COM) 加載宏和自動化加載宏。此處所指的加載宏采用第一類加載宏。將寫好的宏文件,保存在Office的安裝盤Program Files/Microsoft Office/Office12/Library文件夾中,在Excel 2007啟動時,可以自動加載該宏文件[8]。建立如下宏:

Sub Macro_Merge()

Dim MergeData

Dim i, j As Integer

For i = 1 To Selection.Rows.Count

For j = 1 To Selection.Columns.Count

If MergeData <> \"\" Then

MergeData = MergeData \",\" Selection.

Cells(i, j)

Else

MergeData = Selection.Cells(i, j)

End If

Next j

Next i

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

Selection.Cells(1, 1) = MergeData

End Sub

完成后,以Merge_Macro.xlam保存在Program Files/Microsoft Office/Office12/Library文件夾中。

選擇Excel 2007中的“Office按鈕”,選擇菜單中的按鈕,彈出“Excel 選項”對話框,在對話框中,選擇“加載項”,再選擇最下面的“轉到”按鈕,彈出“加載宏”對話框,在對話框中,勾選“Merge_Macro”,單擊確定。

再選擇Excel 2007中的“Office按鈕”,選擇菜單中的按鈕,彈出“Excel 選項”對話框,在對話框中,選擇“自定義”選項,將自己編寫的宏Macro_Merge添加到“快速訪問工具欄”,即可。

該宏程序在Windows XP SP3+Office 2007下調試通過。

4 結 語

Microsoft Visual Basic for Application是Microsoft Office的核心組件之一,作為嵌入式二次開發引擎,VBA得到廣泛的應用,二次開發對軟件在使用方面的性能得到很好的擴展。本文基于VBA對Excel 2007做了一個簡單的二次開發,還可以基于VBA對其他軟件做二次開發,可以更好地解決工作中的問題,提高了辦事效率。

主站蜘蛛池模板: 亚洲天堂网在线视频| 在线国产91| 蜜臀AV在线播放| 日韩中文欧美| 国产精品成人一区二区不卡| 99在线观看精品视频| yjizz国产在线视频网| 狠狠色丁香婷婷| 极品国产一区二区三区| 青青青国产精品国产精品美女| 午夜人性色福利无码视频在线观看| 亚洲av无码久久无遮挡| 国产精品免费p区| 天堂网亚洲系列亚洲系列| 四虎在线高清无码| 美女被操91视频| 欧美人人干| 综合网久久| 欧美亚洲日韩不卡在线在线观看| 国产精品hd在线播放| 欧美国产在线看| 青青热久免费精品视频6| 思思热精品在线8| 精品撒尿视频一区二区三区| 国产亚洲高清在线精品99| 国产麻豆福利av在线播放 | 亚洲视频三级| 中文字幕资源站| 中文天堂在线视频| 欧美三级日韩三级| 欧美激情成人网| 99视频全部免费| 亚洲伊人天堂| 欧美一区中文字幕| 成人日韩精品| 少妇人妻无码首页| 欧美一级色视频| 国产自无码视频在线观看| 欧美啪啪网| 少妇极品熟妇人妻专区视频| 日本黄色a视频| 亚洲无码视频一区二区三区| 午夜精品久久久久久久无码软件| www.国产福利| 精品国产成人三级在线观看| 色噜噜综合网| 狠狠ⅴ日韩v欧美v天堂| 91无码网站| 国产正在播放| 久久综合五月婷婷| 国产成人高清精品免费| 婷婷色丁香综合激情| 在线国产欧美| 麻豆精品在线| 国产主播在线一区| 国产好痛疼轻点好爽的视频| 99人体免费视频| 国产精品毛片一区| 亚洲第一视频网| 国产呦视频免费视频在线观看 | 综合色亚洲| 国产尹人香蕉综合在线电影| 99热这里只有精品免费| 热伊人99re久久精品最新地| 色天堂无毒不卡| 欧美国产日韩在线| 狠狠亚洲婷婷综合色香| 国产青青操| 波多野结衣在线一区二区| 免费a在线观看播放| 日韩欧美国产中文| 四虎精品黑人视频| 欧美笫一页| 尤物精品视频一区二区三区| 欧美成人手机在线观看网址| 午夜精品久久久久久久99热下载| 91精品国产91久久久久久三级| 国产第一页屁屁影院| 99热最新网址| 久久久久久尹人网香蕉| 欧美午夜精品| 无码AV高清毛片中国一级毛片|