vb操作EXCEL表的常用方法(設(shè)計(jì)值,顏色,大小)2009-05-18 15:37 VB是常用的應(yīng)用軟件開發(fā)工具之一,由于VB的報(bào)表功能有限,而且一但報(bào)表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極大的不便。因此有很多程序員現(xiàn)在已經(jīng)充分利用EXECL的強(qiáng)大報(bào)表功來實(shí)現(xiàn)報(bào)表功能。但由于VB與EXCEL由于分別屬于不同的應(yīng)用系統(tǒng),如何把它們有機(jī)地結(jié)合在一起,是一個(gè)值得我們研究的課題。
從“工程”菜單中選擇“引用”欄;選擇Microsoft Excel 9.0 Object Library(EXCEL2000),然后選擇“確定”。表示在工程中要引用EXCEL類型庫。
2、在通用對(duì)象的聲明過程中定義EXCEL對(duì)象: Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet
Set xlBook = xlApp.Workbooks.Open(“文件名”)'打開已經(jīng)存在的EXCEL工件簿文件 xlApp.Visible = True '設(shè)置EXCEL對(duì)象可見(或不可見)Set xlSheet = xlBook.Worksheets(“表名”)'設(shè)置活動(dòng)工作表 xlApp.Cells(row, col)=值 '給單元格(row,col)賦值
XLApp.Cells(i, 1).Interior.ColorIndex = i'設(shè)計(jì)單元格顏色i=1--56 xlSheet.PrintOut '打印工作表 xlBook.Close(True)'關(guān)閉工作簿 xlApp.Quit '結(jié)束EXCEL對(duì)象
xlBook.RunAutoMacros(xlAutoOpen)'運(yùn)行EXCEL啟動(dòng)宏 xlBook.RunAutoMacros(xlAutoClose)'運(yùn)行EXCEL關(guān)閉宏 自己用代碼就可以獲取顏色列表了 Sub yansecode()For i = 1 To 56 XlApp.Cells(i, 1)= i xlapp.Cells(i, 1).Interior.ColorIndex = i Next End Sub
4、在運(yùn)用以上VB命令操作EXCEL表時(shí),除非設(shè)置EXCEL對(duì)象不可見,否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉EXCEL,同時(shí)也可對(duì)EXCEL進(jìn)行操作。但在EXCEL操作過程中關(guān)閉EXCEL對(duì)象時(shí),VB程序無法知道,如果此時(shí)使用EXCEL對(duì)象,則VB程序會(huì)產(chǎn)生自動(dòng)化錯(cuò)誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節(jié)。
EXCEL提供一個(gè)Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點(diǎn)擊右鍵菜單的“插入模塊”,則增加一個(gè)“模塊1”,在此模塊中可以運(yùn)用Visual Basic語言編寫函數(shù)和過程并稱之為宏。其中,EXCEL有兩個(gè)自動(dòng)宏:一個(gè)是啟動(dòng)宏(Sub Auto_Open()),另一個(gè)是關(guān)閉宏(Sub Auto_Close())。它們的特性是:當(dāng)用EXCEL打含有啟動(dòng)宏的工簿時(shí),就會(huì)自動(dòng)運(yùn)行啟動(dòng)宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作簿時(shí)就會(huì)自動(dòng)運(yùn)行關(guān)閉宏。但是通過VB的自動(dòng)化功能來調(diào)用EXCEL工作表時(shí),啟動(dòng)宏和關(guān)閉宏不會(huì)自動(dòng)運(yùn)行,而需要在VB中通過命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros(xlAutoClose)來運(yùn)行啟動(dòng)宏和關(guān)閉宏。
在EXCEL的啟動(dòng)宏中加入一段程序,其功能是在磁盤中寫入一個(gè)標(biāo)志文件,同時(shí)在關(guān)閉宏中加入一段刪除此標(biāo)志文件的程序。VB程序在執(zhí)行時(shí)通過判斷此標(biāo)志文件存在與否來判斷EXCEL是否打開,如果此標(biāo)志文
件存在,表明EXCEL對(duì)象正在運(yùn)行,應(yīng)該禁止其它程序的運(yùn)行。如果此標(biāo)志文件不存在,表明EXCEL對(duì)象已被用戶關(guān)閉,此時(shí)如果要使用EXCEL對(duì)象運(yùn)行,必須重新創(chuàng)建EXCEL對(duì)象。
1、在VB中,建立一個(gè)FORM,在其上放置兩個(gè)命令按鈕,將Command1的Caption屬性改為EXCEL,Command2的Caption屬性改為End。然后在其中輸入如下程序:
Dim xlApp As Excel.Application '定義EXCEL類 Dim xlBook As Excel.Workbook '定義工件簿類 Dim xlsheet As Excel.Worksheet '定義工作表類 Private Sub Command1_Click()'打開EXCEL過程
If Dir(“D:tempexcel.bz”)= “" Then '判斷EXCEL是否打開 Set xlApp = CreateObject(”Excel.Application“)'創(chuàng)建EXCEL應(yīng)用類 xlApp.Visible = True '設(shè)置EXCEL可見
Set xlBook = xlApp.Workbooks.Open(”D:tempbb.xls“)'打開EXCEL工作簿 Set xlsheet = xlBook.Worksheets(1)'打開EXCEL工作表 xlApp.Activate '激活工作表
xlApp.Cells(1, 1)= ”abc“ '給單元格1行駛列賦值 xlBook.RunAutoMacros(xlAutoOpen)'運(yùn)行EXCEL中的啟動(dòng)宏
Else MsgBox(”EXCEL已打開“)End If End Sub Private Sub Command2_Click()If Dir(”D:tempexcel.bz“)<> ”“ Then '由VB關(guān)閉EXCEL xlBook.RunAutoMacros(xlAutoClose)'執(zhí)行EXCEL關(guān)閉宏 xlBook.Close(True)'關(guān)閉EXCEL工作簿
4、運(yùn)行VB程序,點(diǎn)擊EXCEL按鈕可以打開EXCEL系統(tǒng),打開EXCEL系統(tǒng)后,VB程序和EXCEL分別屬兩個(gè)不同的應(yīng)用系統(tǒng),均可同時(shí)進(jìn)行操作,由于系統(tǒng)加了判斷,因此在VB程序中重復(fù)點(diǎn)擊EXCEL按鈕時(shí)會(huì)提示EXCEL已打開。如果在EXCEL中關(guān)閉EXCEL后再點(diǎn)EXCEL按鈕,則會(huì)重新打開EXCEL。而無論EXCEL打開與否,通過VB程序均可關(guān)閉EXCEL。這樣就實(shí)現(xiàn)了VB與EXCEL的無縫連接。
Option Explicit Private Sub Command1_Click()Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlChar As New Excel.Chart Dim xlSheet As New Excel.Worksheet '建立需要的對(duì)象
Set xlApp = New Excel.Application Set xlApp = CreateObject(”Excel.Application“)Set xlBook = xlApp.Workbooks.Open(”F:BOOK1.xls“)Set xlSheet = xlBook.Worksheets(1)'建立Chart 對(duì)象
Set xlChar = xlApp.Charts.Add()xlChar.ChartType = xlLineMarkers Call xlChar.SetSourceData(xlSheet.Range(”A1:E7“), xlColumns)'原數(shù)據(jù) ActiveChart.Location Where:=xlLocationAsObject, Name:=”Sheet1“ ActiveChart.HasLegend = True ActiveChart.Legend.Select Selection.Position = xlRight '選中建立的ChartObjects對(duì)象
ActiveSheet.ChartObjects(”圖表 1“).Activate ActiveChart.PlotArea.Select ActiveChart.Legend.Select '刪除 退出(&X)菜單
Dim i As Integer For i = 1 To xlApp.CommandBars(”File“).Controls.Count Debug.Print xlApp.CommandBars(”File“).Controls(i).Caption If Left$(xlApp.CommandBars(”File“).Controls(i).Caption, 2)= ”關(guān)閉“ Then xlApp.CommandBars(”File“).Controls(i).Visible = False 'Delete Exit For End If Next '顯示EXCEL xlApp.Visible = True End Sub 范例二 RichTextBox1 Dim xlApp As Excel.Application Set xlApp = New Excel.Application----然后,可以用這些變量來訪問在EXCEL應(yīng)用程序中的從屬對(duì)象、以及這些對(duì)象的屬性和方法。例如:
xlApp.Visible = False ‘隱藏EXCEL應(yīng)用程序窗口 Set xlBook = xlApp.Workbooks.Open(strDestination)‘打開工作簿,strDestination為一個(gè)EXCEL報(bào)表文件 Set xlSheet = xlBook.Worksheets(1)‘設(shè)定工作表
做為一種簡捷、系統(tǒng)的 Windows應(yīng)用程序開發(fā)工具,Visual Basic 6 具有強(qiáng)大的數(shù)據(jù)處理功能,提供了多種數(shù)據(jù)訪問方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多種數(shù)據(jù)庫,被廣泛應(yīng)用于建立各種信息管理系統(tǒng)。但是,VB缺乏足夠的、符合中文習(xí)慣的數(shù)據(jù)表格輸出功能,雖然使用Crystal Report控件及 Crystal Reports程序可以輸出報(bào)表,但操作起來很麻煩,中文處理能力也不理想。Excel作為Micorsoft公司的表格處理軟件在表格方面有著強(qiáng)大的功能,我們可用VB5編寫直接控制Excel操作的程序,方法是用VB的OLE自動(dòng)化技術(shù)獲取Excel 2000 的控制句柄,從而直接控制Excel 2000的一系列操作。
首先建立一個(gè)窗體(FORM1)在窗體中加入一個(gè)DATA控件和一按鈕,引用Microsoft Excel類型庫: 從”工程“菜單中選擇”引用“欄;選擇Microsoft Excel 9.0 Object Library;選擇”確定“。然后在FORM的LOAD事件中加入:
Data1.DatabaseName = ”C:Program FilesMicrosoft Visual StudioVB98Nwind.mdb“ Data1.RecordSource = ”Customers“ Data1.Refresh End Sub 在按鈕的CLICK事件中加入 Private Sub Command1_Click()Dim Irow, Icol As Integer Dim Irowcount, Icolcount As Integer Dim Fieldlen()'存字段長度值 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject(”Excel.Application“)Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1)With Data1.Recordset.MoveLast If.RecordCount < 1 Then MsgBox(”Error 沒有記錄!“)Exit Sub End If Irowcount =.RecordCount '記錄總數(shù) Icolcount =.Fields.Count '字段總數(shù) ReDim Fieldlen(Icolcount).MoveFirst For Irow = 1 To Irowcount + 1 For Icol = 1 To Icolcount Select Case Irow Case 1 '在Excel中的第一行加標(biāo)題
xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1))= True Then Fieldlen(Icol)= LenB(.Fields(Icol1))End If
xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1))If Fieldlen(Icol)< Fieldlen1 Then xlSheet.Columns(Icol).ColumnWidth = Fieldlen1 '表格列寬等于較長字段長 Fieldlen(Icol)= Fieldlen1 '數(shù)組Fieldlen(Icol)中存放最大字段長度值 Else xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)End If xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1)).Font.Name = ”黑體“ '設(shè)標(biāo)題為黑體字
.Range(.Cells(1, 1),.Cells(1, Icol1)).Borders.LineStyle = xlContinuous '設(shè)表格邊框樣式 End With xlApp.Visible = True '顯示表格 xlBook.Save '保存
Visual Basic 5.0具有簡單、易學(xué)等特點(diǎn),深受初學(xué)者的歡迎,但也有一些不如人意的地方。例如,不能像Word 97那樣進(jìn)行拼寫檢查,不能像Excel 97那樣具有很多的函數(shù)。如果我們能將Word 97和Exce l97的功能使用在Visual Basic 5.0中,就可以使VB達(dá)到錦上添花的目的。
我們知道所有Office 97 應(yīng)用程序都提供了ActiveX對(duì)象,我們可以在Visual Basic 5.0中使用它們調(diào)用Word 97 要想在VB中調(diào)用Word 97,首先要打開VB的”工程“菜單中的”引用“項(xiàng)目,并在該項(xiàng)目對(duì)話框中選定”Microsoft Word 8.0 Object Library“就可以了。
下面我們舉例說明調(diào)用Word 97中的”拼寫檢查“和”單詞統(tǒng)計(jì)“功能。首先新建一個(gè)工程并在窗體上放置一個(gè)TextBox控件和兩個(gè)CommandButton控件,然后添入如下的代碼:
Doc.Application.Visible = True ′將Word 97變?yōu)榭梢? AppActivate Doc.Application.Caption ′激活Word 97 Doc.Range.CheckSpelling ′拼寫檢查
Text1 = Left(Text1, Len(Text1)- 1)AppActivate Caption End Sub ′統(tǒng)計(jì)單詞數(shù)
Private Sub Command2-Click()Dim Dlg As Word.Dialog Doc.Range = Text1.Text Set Dlg = Doc.Application.Dialogs(wdDialogDocumentStatistics)Dlg.Execute ′統(tǒng)計(jì)單詞和字符
Form1.Caption =”單詞數(shù):“ & Str(Dlg.Words)& ”詞“ & Str(Dlg.Characters)& ”字符“ ′顯示統(tǒng)計(jì)結(jié)果 End Sub Top 范例三
Private Sub Form-Load()Form1.Caption =”調(diào)用Word 97“ Text1.Text = ”“ Command1.Caption = ”拼寫檢查“ Command2.Caption = ”統(tǒng)計(jì)單詞“ ′使應(yīng)用程序可見
If Visi Then ′關(guān)閉文件 Doc.Close savechanges:=False Else Doc.Application.Quit savechanges:=False ′關(guān)閉 Word 97 End If End Sub 調(diào)用Excel 97 使用Excel Sheet對(duì)象的技術(shù)可以處理可變數(shù)量的數(shù)據(jù),并將結(jié)果最后送到你的Visual Basic 應(yīng)用程序中。例子如下:
新建一個(gè)工程并在新建的窗體上放置兩個(gè)TextBox控件和一個(gè)CommandButton控件及六個(gè)Label控件。建設(shè)中的窗體如圖2所示。
程序代碼如下: Option Explicit Private Sub Command1-Click()Dim xObject As Object ′調(diào)用Excel 97 Set xObject = CreateObject(”Excel.Sheet“)Set xObject = xObject.Application.ActiveWorkbook.ActiveSheet xObject.Range(”A1“).Value = Text1.Text ′將數(shù)值送入Excel 97的A1單元格 xObject.Range(”A2“).Value = Text2.Text ′將數(shù)值送入Excel 97的A2單元格 xObject.Range(”A3“).Formula = ”=MAX(A1,A2)“ ′將最大值送入A3單元格
Label1.Caption = xObject.Range(”A3“).Value Label2.Caption = xObject.Range(”A4“).Value
Set xObject = Nothing End Sub Private Sub Form_Load()Text1.Text = ”“ Text2.Text = ”“ Label1.Caption = ”“ Label2.Caption = ”“ End Sub 該程序的作用是:首先在兩個(gè)文本框(Text1和Text2)輸入數(shù)值并分別將輸入的數(shù)值送入Excel 97的”A1“和”A2“單元格中,然后用Excel 97中的”Max()“函數(shù)將計(jì)算的結(jié)果送入”A3“ 單元格中;用反正切函數(shù)”ATAN()“進(jìn)行計(jì)算并將結(jié)果送入”A4“ 單元格中,最后輸出。
===== 淺談Excel 的VB編程
Excel是一個(gè)優(yōu)秀的電子表格軟件,如果你編的程序需要以報(bào)表的形式顯示最終結(jié)果,它會(huì)是個(gè)不錯(cuò)的選擇。你可以通過VB控制Excel顯示數(shù)據(jù)表格。如果你不愿意深入了解Excel這些瑣碎的細(xì)節(jié),也不是沒有權(quán)宜之計(jì):你可以打開Excel中的工具→宏→錄制新宏,然后進(jìn)行手工操作,結(jié)束后把所錄的宏代碼貼進(jìn)你的VB程序就行。這樣得到的程序一般都能正常運(yùn)行,但其中的宏代碼往往不夠簡潔,效率和可讀性都不高。
----Excel編程碰到的第一個(gè)問題是表頭。有時(shí)表頭的形式比較復(fù)雜,需要橫向或縱向合并單元格。請(qǐng)放心,只要沒有斜杠,Excel都能應(yīng)付得了。
----例如合并A2~A5這4個(gè)單元格,你錄制的宏代碼會(huì)是這樣: Range(”A2:A5“).Select With Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlBottom.WrapText = False.Orientation = 0.AddIndent = False.ShrinkToFit = False.MergeCells = False End With Selection.Merge----而自己編程只要一句 Range.(”A2:A5“).mergecells=True 就可以解決問題。
----表頭形式定了,再就是表頭的內(nèi)容。如果單元格中的文本長度超過了列寬,往往只能顯示部分內(nèi)容,行尾那一格的內(nèi)容則會(huì)”越境“進(jìn)入右邊那個(gè)空白單元格,很不美觀。這個(gè)問題可以通過在程序中設(shè)置列寬加以解決。
----Columns(14).columnwidth=12 '設(shè)置第14列列寬為12(缺省列寬為8.38)----如果你不愿意勞神去逐列估計(jì)實(shí)際所需的列寬,干脆來一行----Columns(”a:i“).autofit 'a到i列自動(dòng)調(diào)整列寬----讓Excel隨機(jī)應(yīng)變吧。
----但也許你不喜歡這種方法,認(rèn)為表頭撐大了列寬,弄得瀏覽一張小表格還得向右滾動(dòng),太不方便了。要是能保持默認(rèn)列寬,讓文本自動(dòng)換行就好了。沒問題,Excel包你滿意。
----Rows(3).WrapText=True '讓第三行各單元格中的文本自動(dòng)換行
----不過你最好再加一句 Rows(3).VerticalAlignment = xlTop 讓表頭自動(dòng)向上對(duì)齊,這樣比較符合習(xí)慣。
----你還可以給表頭打上底色,讓你的讀者不至于看了打哈欠。----Rows(2).Interior.ColorIndex = 5 '設(shè)置第2行底色為藍(lán)色----再給表格的標(biāo)題上色,這樣更醒目一點(diǎn)。----Rows(1).Font.ColorIndex=4----表頭完成后該填數(shù)據(jù)了,一個(gè)一個(gè)地填實(shí)在是太慢了,如果你的數(shù)據(jù)是存放在一個(gè)二維數(shù)組中,那問題就簡單多了。
Dim Data(3,4)???? '數(shù)據(jù)處理 Range(”a2:d4“).Value=Data----這樣可以一次填入一個(gè)表的所有數(shù)據(jù),夠快了吧!不過提醒一句,Range對(duì)象大小最好與數(shù)組匹配,小了無法顯示所有數(shù)據(jù),大了則會(huì)在空白單元格只填入”N/A“表示沒有取得數(shù)據(jù)。
----如果需要在結(jié)果中顯示多個(gè)同樣規(guī)格的數(shù)據(jù)表,想在Range對(duì)象中加入循環(huán)變量,這也好辦。Dim cell11,cell2 Dim Data(3,4)???? For I =1 to 40
???? '數(shù)據(jù)處理
Set cell1=Worksheets(”Sheet1“).Cells(5*I-4,1)Set cell2=Worksheets(”Sheet1“).Cells(5*I-2,4)Worksheets(”Sheet1“).Range(cell1,cell2).value=Data Next I----表格填完了,現(xiàn)在該打表格線了,以下幾條語句可以滿足你的要求: With Worksheets(”Sheet1“).Range(cell1,cell2).borders.LineStyle=xlContinuous.weight=xlThin End With----好了,關(guān)于Excel的VB編程今天就講到這兒吧。
===== 如何將Excel的文件導(dǎo)入Access文件?
下面我已程序代碼做成模塊,只要導(dǎo)入必要之參數(shù)即可!此一模塊共有四個(gè)參數(shù):
1、sSheetName:要導(dǎo)出資料的文件名稱(Sheet name),例如 Sheet1
2、sExcelPath:要導(dǎo)出資料的 Excel 檔案路徑名稱(Workbook path),例如 C:book1.xls
3、sAccessTable:要導(dǎo)入的 Access Table 名稱,例如 TestTable
4、sAccessDBPath:要導(dǎo)入的 Access 檔案路徑名稱,例如 C:Test.mdb 在聲明中加入以下:
Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)Dim db As Database Dim rs As Recordset Set db = OpenDatabase(sExcelPath, True, False, ”Excel 5.0“)Call db.Execute(”Select * into [;database=“ & sAccessDBPath & ”].“ & sAccessTable & ” FROM [“ & sSheetName & ”$]“)MsgBox ”Table exported successfully.“, vbInformation, ”Yams“ End Sub 使用范例如下:將 C:book1.xls 中的 Sheet1 導(dǎo)入 C:Test.mdb 成為 TestTable ExportExcelSheetToAccess ”Sheet1“, ”C:book1.xls“, ”TestTable“, ”C:Test.mdb“ ===== Dim adoConnection As New ADODB.Connection Dim adoRecordset As New ADODB.Recordset 'OLE DB + ODBC Driver 方式: 'adoConnection.Open ”Data Provider=MSDASQL.1;driver=Microsoft
Excel Driver
(*.xls);DBQ=e:tempbook2.xls“ 'Microsoft.Jet.OLEDB.4.0 方式,(建議)adoConnection.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:tempbook2.xls;Extended Properties='Excel 8.0;HDR=Yes'“ adoRecordset.Open ”select * from [sheet1$]“, adoConnection, adOpenKeyset, adLockOptimistic '注: OLE DB + ODBC Driver 方式不支持以下語句,但 Microsoft.Jet.OLEDB.4.0 方式支持!adoConnection.Execute ”insert into [sheet1$](F1)values(3)“ adoRecordset.AddNew Array(”f1“, ”f2“, ”f3“, ”f4“), Array(1, 2, 3, 4)21
VB操作excel 全面控制Excel 首先創(chuàng)建Excel對(duì)象,使用ComObj: DimExcelIDasExcel.Application SetExcelIDasnewExcel.Application 1)顯示當(dāng)前窗口: ExcelID.Visible:=True;2)更改Excel標(biāo)題欄:
ExcelID.Caption:='應(yīng)用程序調(diào)用MicrosoftExcel';3)添加新工作簿: ExcelID.WorkBooks.Add;4)打開已存在的工作簿:
ExcelID.WorkBooks.Open('C:ExcelDemo.xls');5)設(shè)置第2個(gè)工作表為活動(dòng)工作表: ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets['Sheet2'].Activate;6)給單元格賦值:
ExcelID.Cells[1,4].Value:='第一行第四列';7)設(shè)置指定列的寬度(單位:字符個(gè)數(shù)),以第一列為例: ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;8)設(shè)置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米 9)在第8行之前插入分頁符:
ExcelID.WorkSheets[1].Rows[8].PageBreak:=1;參考代碼:ActiveSheet.HPageBreaks(1).Location=Range(”A22“)
10)在第8列之前刪除分頁符:
ExcelID.ActiveSheet.Columns[4].PageBreak:=0;11)指定邊框線寬度:
ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;1-左 2-右3-頂 4-底5-斜()6-斜(/)12)清除第一行第四列單元格公式:
ExcelID.ActiveSheet.Cells[1,4].ClearContents;13)設(shè)置第一行字體屬性:
ExcelID.ActiveSheet.Rows[1].Font.Name:='隸書';ExcelID.ActiveSheet.Rows[1].Font.Color :=clBlue;ExcelID.ActiveSheet.Rows[1].Font.Bold:=True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine:=True;14)進(jìn)行頁面設(shè)置: a.頁眉:
ExcelID.ActiveSheet.PageSetup.CenterHeader:='報(bào)表演示';b.頁腳:
ExcelID.ActiveSheet.PageSetup.CenterFooter:='第&P頁';c.頁眉到頂端邊距2cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin:=2/0.035;d.頁腳到底端邊距3cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin:=3/0.035;e.頂邊距2cm:
ExcelID.ActiveSheet.PageSetup.TopMargin:=2/0.035;f.底邊距2cm:
ExcelID.ActiveSheet.PageSetup.BottomMargin:=2/0.035;
g.左邊距2cm:
ExcelID.ActiveSheet.PageSetup.LeftMargin:=2/0.035;h.右邊距2cm:
ExcelID.ActiveSheet.PageSetup.RightMargin:=2/0.035;i.頁面水平居中:
ExcelID.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035;j.頁面垂直居中:
ExcelID.ActiveSheet.PageSetup.CenterVertically:=2/0.035;k.打印單元格網(wǎng)線:
ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;15)拷貝操作: a.拷貝整個(gè)工作表:
ExcelID.ActiveSheet.Used.Range.Copy;b.拷貝指定區(qū)域:
ExcelID.ActiveSheet.Range['A1:E2'].Copy;c.從A1位置開始粘貼:
ExcelID.ActiveSheet.Range.['A1'].PasteSpecial;d.從文件尾部開始粘貼:
ExcelID.ActiveSheet.Range.PasteSpecial;16)插入一行或一列:
a.ExcelID.ActiveSheet.Rows[2].insert;b.ExcelID.ActiveSheet.Columns[1].insert;17)刪除一行或一列:
a.ExcelID.ActiveSheet.Rows[2].delete;b.ExcelID.ActiveSheet.Columns[1].delete;
18)打印預(yù)覽工作表:
ExcelID.ActiveSheet.PrintPreview;19)打印輸出工作表:
ExcelID.ActiveSheet.PrintOut;20)工作表保存:
IfnotExcelID.ActiveWorkBook.Savedthen ExcelID.ActiveSheet.PrintPreview Endif 21)工作表另存為:
ExcelID.SaveAs('C:ExcelDemo1.xls');22)放棄存盤:
ExcelID.ActiveWorkBook.Saved:=True;23)關(guān)閉工作簿: ExcelID.WorkBooks.Close;24)退出Excel: ExcelID.Quit;25)設(shè)置工作表密碼: ExcelID.ActiveSheet.Protect”123“,DrawingObjects:=True,Contents:=True,Scenarios:=True 26)EXCEL的顯示方式為最大化
ExcelID.Application.WindowState=xlMaximized 27)工作薄顯示方式為最大化
ExcelID.ActiveWindow.WindowState=xlMaximized 28)設(shè)置打開默認(rèn)工作薄數(shù)量 ExcelID.SheetsInNewWorkbook=3 29)'關(guān)閉時(shí)是否提示保存(true保存;false不保存)
ExcelID.DisplayAlerts=False 30)設(shè)置拆分窗口,及固定行位置 ExcelID.ActiveWindow.SplitRow=1 ExcelID.ActiveWindow.FreezePanes=True 31)設(shè)置打印時(shí)固定打印內(nèi)容
ExcelID.ActiveSheet.PageSetup.PrintTitleRows=”$1:$1“ 32)設(shè)置打印標(biāo)題
ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=”“ 33)設(shè)置顯示方式(分頁方式顯示)ExcelID.ActiveWindow.View=xlPageBreakPreview 34)設(shè)置顯示比例
ExcelID.ActiveWindow.Zoom=100 35)讓Excel響應(yīng)DDE請(qǐng)求
Ex.Application.IgnoreRemoteRequests=False 26
用VB操作EXCEL PrivateSubCommand3_Click()OnErrorGoToerr1 DimiAsLong DimjAsLong DimobjExlAsExcel.Application'聲明對(duì)象變量 Me.MousePointer=11'改變鼠標(biāo)樣式
SetobjExl=NewExcel.Application'初始化對(duì)象變量
objExl.SheetsInNewWorkbook=1 '將新建的工作薄數(shù)量設(shè)為1 objExl.Workbooks.Add '增加一個(gè)工作薄
objExl.Sheets(objExl.Sheets.Count).Name=”book1“ '修改工作薄名稱
objExl.Sheets.Add,objExl.Sheets(”book1“)‘增加第二個(gè)工作薄在第一個(gè)之后 objExl.Sheets(objExl.Sheets.Count).Name=”book2“ objExl.Sheets.Add,objExl.Sheets(”book2“)‘增加第三個(gè)工作薄在第二個(gè)之后 objExl.Sheets(objExl.Sheets.Count).Name=”book3“
objExl.Sheets(”book1“).select'選中工作薄 Fori=1To50 '循環(huán)寫入數(shù)據(jù) Forj=1To5 If i= 1Then objExl.selection.NumberFormatLocal=”@“ '設(shè)置格式為文本 objExl.Cells(i,j)=” E “ & i & j Else objExl.Cells(i,j)=i&j EndIf
Next Next
objExl.Rows(”1:1“).select'選中第一行 objExl.selection.Font.Bold=True'設(shè)為粗體 objExl.selection.Font.Size=24'設(shè)置字體大小 objExl.Cells.EntireColumn.AutoFit '自動(dòng)調(diào)整列寬 objExl.ActiveWindow.SplitRow=1 '拆分第一行 objExl.ActiveWindow.SplitColumn=0 '拆分列 objExl.ActiveWindow.FreezePanes=True'固定拆分
objExl.ActiveSheet.PageSetup.PrintTitleRows=”$1:$1“ '設(shè)置打印固定行 objExl.ActiveSheet.PageSetup.PrintTitleColumns=”“ '打印標(biāo)題 objExl.ActiveSheet.PageSetup.RightFooter=”打印時(shí)間:“&_ Format(Now,”yyyy年mm月dd日hh:MM:ss“)objExl.ActiveWindow.View=xlPageBreakPreview '設(shè)置顯示方式 objExl.ActiveWindow.Zoom=100 '設(shè)置顯示大小
objExl.ActiveSheet.PageSetup.Orientation=xlLandscape ‘設(shè)置打印方向(橫向)'給工作表加密碼
objExl.ActiveSheet.Protect”123“,DrawingObjects:=True, _ Contents:=True,Scenarios:=True objExl.Application.IgnoreRemoteRequests=False objExl.Visible=True'使EXCEL可見
objExl.Application.WindowState=xlMaximized'EXCEL的顯示方式為最大化 objExl.ActiveWindow.WindowState=xlMaximized'工作薄顯示方式為最大化 objExl.SheetsInNewWorkbook=3 '將默認(rèn)新工作薄數(shù)量改回3個(gè)
SetobjExl=Nothing '清除對(duì)象 Me.MousePointer=0'修改鼠標(biāo) ExitSub err1: objExl.SheetsInNewWorkbook=3 objExl.DisplayAlerts=False '關(guān)閉時(shí)不提示保存 objExl.Quit'關(guān)閉EXCEL objExl.DisplayAlerts=True'關(guān)閉時(shí)提示保存 SetobjExl=Nothing Me.MousePointer=0 EndSub 數(shù)據(jù)庫管理系統(tǒng)的開發(fā)人員經(jīng)常被編制復(fù)雜的報(bào)表所困擾,VB的水晶報(bào)表可以設(shè)計(jì)簡單的報(bào)表,但是設(shè)計(jì)出的報(bào)表缺乏靈活性。我利用VB操作EXCEL2000來生成復(fù)雜的報(bào)表。
用VB創(chuàng)建外部EXCEL對(duì)象
Microsoft Office應(yīng)用程序提供了一個(gè)頂層Application 對(duì)象。下面語句顯示了對(duì)Microsoft Excel的Application 對(duì)象的引用,用這些變量來訪問在EXCEL應(yīng)用程序中的從屬對(duì)象、以及這些對(duì)象的屬性和方法。:
Dim xlApp As Excel.Application Set xlApp = New Excel.Application Set xlApp = CreateObject(”Excel.Application“)xlApp.Visible = False Set xlBook = xlApp.Workbooks.Open(strDestination)Set xlSheet = xlBook.Worksheets(1)29
用EXCEL 2000設(shè)計(jì)報(bào)表的模版文件
EXCEL 2000是一個(gè)非常優(yōu)秀的創(chuàng)建報(bào)表的工具。它提供的單元格任意合并、拆分功能基本上能夠滿足設(shè)計(jì)復(fù)雜報(bào)表的要求。它對(duì)任意一個(gè)單元格的格式隨意控制,因此它為設(shè)計(jì)復(fù)雜報(bào)表提供了強(qiáng)大的支持。
根據(jù)用戶提供的報(bào)表,我們可以很快在EXCEL里生成模版文件。模版文件只是為了滿足用戶多方面的需求而設(shè)計(jì)的。并且隨著時(shí)間和實(shí)際情況的變化,表格格式有可能需要改變,我們?cè)O(shè)計(jì)一個(gè)模版文件可以“以不變應(yīng)萬變”了。在程序里我們不要對(duì)模版文件進(jìn)行操作,我們只需要對(duì)模版文件的一個(gè)拷貝進(jìn)行操作就行。程序代碼如下:
Dim strSource, strDestination As String strSource = App.Path & ”Excelsdangan.xls“ strDestination = App.Path & ”ExcelsTemp.xls“ FileCopy strSource, strDestination Set mobjExcel = New Excel.Application Set mobjExcel = CreateObject(”Excel.Application“)mobjExcel.Visible = False Set mobjworkbook = mobjExcel.Workbooks.Open(strDestination)Set xlsheet = mobjworkbook.Worksheets(1)If Not opendatasource()Then MsgBox ”不能打開數(shù)據(jù)源!“, , ”提示“ Unload Me Exit Sub End If Private Function opendatasource()ssql=”select shgt_dah,shgt_yth,shgt_ajtm,shgt_chtrq, shgt_shjdw,shgt_wzysh,shgt_tzzhsh,shgt_gdrq,shgt_bz from shgtajb“ OpenResultset ssql, mrdors
opendatasource = True Exit Function End Function 生成工作表內(nèi)容
有了上述兩步工作的鋪墊,我們只要根據(jù)模板的格式給各單元格賦值如:
Do while Not mrdors.Eof i=4 For j=0 to mrdors.rdocolumns.count-2 MobjExcel.Activesheet.cells(i,j+1)。value=mrdors.rdocolumns(j)。Value Next Mrdors.movenext Loop 打印報(bào)表
生成了工作表后,就可以對(duì)EXCEL發(fā)出打印指令了。在執(zhí)行打印操作之前應(yīng)該對(duì)EXCEL臨時(shí)文件執(zhí)行一次保存操作,以免在退出應(yīng)用程序后EXCEL還提示用戶是否保存已修改的文件。如下語句:
xlBook.Save xlSheet.PrintOut xlApp.Quit Private Sub Command3_Click()On Error GoTo err1 Dim i As Long Dim j As Long Dim objExl As Excel.Application'聲明對(duì)象變量 Me.MousePointer = 11'改變鼠標(biāo)樣式
Set objExl = New Excel.Application'初始化對(duì)象變量 objExl.SheetsInNewWorkbook = 1 '將新建的工作薄數(shù)量設(shè)為1 objExl.Workbooks.Add '增加一個(gè)工作薄
objExl.Sheets(objExl.Sheets.Count).Name = ”book1“ '修改工作薄名稱 objExl.Sheets.Add , objExl.Sheets(”book1“)'增加第二個(gè)工作薄在第一個(gè)之后 objExl.Sheets(objExl.Sheets.Count).Name = ”book2“ objExl.Sheets.Add , objExl.Sheets(”book2“)'增加第三個(gè)工作薄在第二個(gè)之后 objExl.Sheets(objExl.Sheets.Count).Name = ”book3“
objExl.Sheets(”book1“).Select '選中工作薄 For i = 1 To 50'循環(huán)寫入數(shù)據(jù) For j = 1 To 5 If i = 1 Then objExl.Selection.NumberFormatLocal = ”@“ '設(shè)置格式為文本 objExl.Cells(i, j)= ” E “ & i & j Else objExl.Cells(i, j)= i & j End If Next Next objExl.Rows(”1:1“).Select '選中第一行 objExl.Selection.Font.Bold = True'設(shè)為粗體 objExl.Selection.Font.Size = 24 '設(shè)置字體大小 objExl.Cells.EntireColumn.AutoFit '自動(dòng)調(diào)整列寬 objExl.ActiveWindow.SplitRow = 1 '拆分第一行 objExl.ActiveWindow.SplitColumn = 0'拆分列 objExl.ActiveWindow.FreezePanes = True'固定拆分
objExl.ActiveSheet.PageSetup.PrintTitleRows = ”$1:$1“ '設(shè)置打印固定行 objExl.ActiveSheet.PageSetup.PrintTitleColumns = ”“'打印標(biāo)題 objExl.ActiveSheet.PageSetup.RightFooter = ”打印時(shí)間: “ & _ Format(Now, ”yyyy年mm月dd日 hh:MM:ss“)objExl.ActiveWindow.View = xlPageBreakPreview'設(shè)置顯示方式 objExl.ActiveWindow.Zoom = 100 '設(shè)置顯示大小 '給工作表加密碼
objExl.ActiveSheet.Protect ”123“, DrawingObjects:=True, _ Contents:=True, Scenarios:=True objExl.Application.IgnoreRemoteRequests = False objExl.Visible = True '使EXCEL可見
objExl.Application.WindowState = xlMaximized'EXCEL的顯示方式為最大化 objExl.ActiveWindow.WindowState = xlMaximized'工作薄顯示方式為最大化 objExl.SheetsInNewWorkbook = 3'將默認(rèn)新工作薄數(shù)量改回3個(gè) Set objExl = Nothing'清除對(duì)象 Me.MousePointer = 0'修改鼠標(biāo) Exit Sub err1: objExl.SheetsInNewWorkbook = 3 objExl.DisplayAlerts = False '關(guān)閉時(shí)不提示保存 objExl.Quit'關(guān)閉EXCEL objExl.DisplayAlerts = True'關(guān)閉時(shí)提示保存 Set objExl = Nothing Me.MousePointer = 0 End Sub =====================================
Visual Basic簡稱(VB)是設(shè)計(jì)Windows應(yīng)用程序強(qiáng)有力的開發(fā)工具,“全球絕大多數(shù)Windows應(yīng)用程序都是用VB開發(fā)的”; Excel是目前使用最廣泛的辦公應(yīng)用軟件之一,它具有強(qiáng)大的數(shù)學(xué)分析與計(jì)算功能,包括很多VB沒有的求值數(shù)學(xué)表達(dá)式的函數(shù)和方法。由于Excel的應(yīng)用程序?qū)ο笫峭獠靠蓜?chuàng)建的對(duì)象,所以能從VB應(yīng)用程序內(nèi)部來程序化操縱Excel。本文結(jié)合自己的實(shí)踐和體會(huì),談?wù)勅绾卧赩B6.0應(yīng)用程序中調(diào)用Exce12000,供大家參考。
一、Excel對(duì)象模型
為了在VB應(yīng)用程序中調(diào)用Excel,必須要了解Excel對(duì)象模型。Excel對(duì)象模型描述了Excel的理論結(jié)構(gòu),所提供的對(duì)象很多,其中最重要的對(duì)象,即涉及VB調(diào)用Excel最可能用到的對(duì)象有:
二、調(diào)用Excel 在VB應(yīng)用程序中調(diào)用Excel,實(shí)質(zhì)是將Excel作為一個(gè)外部對(duì)象來引用,由Excel對(duì)象模型提供能從VB應(yīng)用程序內(nèi)部來程序化操縱的對(duì)象以及相關(guān)的屬性、方法和事件。
1、在VB工程中添加對(duì)Excel類型庫的引用
為了能從VB應(yīng)用程序中訪問Excel豐富的內(nèi)部資源,使Excel應(yīng)用程序運(yùn)行得更快,需要在VB工程中添加對(duì)Excel類型庫的引用。具體步驟如下:
a)從VB5“工程”菜單中選擇“引用”;
b)在“引用”對(duì)話框中選擇Excel類型庫:”Microsoft Excel9.0 Object Library“; c)單擊左邊小方框,使之出現(xiàn)“√”符號(hào); d)按“確定”退出。
注:要想在VB應(yīng)用程序中調(diào)用Excel,你的計(jì)算機(jī)系統(tǒng)中必須安裝Excel。
2、引用Application對(duì)象
Application對(duì)象是Excel對(duì)象模型的頂層,表示整個(gè)Excel應(yīng)用程序。在VB應(yīng)用程序中調(diào)用Excel,就是使用Application對(duì)象的屬性、方法和事件。為此,首先要聲明對(duì)象變量:
Dim VBExcel As Object 或直接聲明為Excel對(duì)象:
Dim VBExcel As Excel.Application 在聲明對(duì)象變量之后,可用CreateObject函數(shù)或GetObject函數(shù)給變量賦值新的或已存在的Application對(duì)象引用。
a)用CreateObject函數(shù)生成新的對(duì)象引用: Set VBExcel=CreateObject(”Excel.Application“)字符串“Excel.Application”是提供Excel應(yīng)用程序的編程ID,這個(gè)變量引用Excel應(yīng)用程序本身。b)用GetO場ect函數(shù)打開已存在的對(duì)象引用:
Set AppExcel=GetObject(”SAMP.XLS“)上面語句打開文件SAMP.XLS。
3、Application對(duì)象常用的屬性、方法 屬性、方法 方法
Visible屬性 取True或False,表明Excel應(yīng)用程序是否可見。Left,Top屬性 Excel窗口的位置; Height, Width屬性 Excel窗口的大小;
WindowState屬性 指定窗口的狀態(tài),?。篨IMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。Quit方法 退出Microsoft Excel;
Calculate方法 重新計(jì)算所有打開的工作簿、工作表或單元格。Evaluate方法 求值數(shù)學(xué)表達(dá)式并返回結(jié)果。示例1:求值數(shù)學(xué)表達(dá)式: Dim VBExcel As Object Set VBExcel=CreateObject(”Excel.Application“)X=VBExcel.Evaluate(”3+5*(cos(1/log(99.9)))“)
三、使用Excel應(yīng)用程序
如前所述,在VB應(yīng)用程序中調(diào)用Excel應(yīng)用程序,就是使用Application對(duì)象的屬性、方法和事件。下面分類給出其中常用的屬性和方法。
1、使用工作薄
Workbook對(duì)象代表Excel應(yīng)用程序中當(dāng)前打開的一個(gè)工作簿,包含在Workbooks集合中??梢酝ㄟ^Workbooks集合或表示當(dāng)前活動(dòng)工作簿的Active Workbook對(duì)象訪問Workbook對(duì)象。
常用的方法有: 屬性、方法 意義
Add方法 創(chuàng)建新的空白工作簿,并將其添加到集合中。Open方法 打開工作簿。
Activate方法 激活工作簿,使指定工作簿變?yōu)榛顒?dòng)工作簿,以便作為Active Workbook對(duì)象使用。Save方法 按當(dāng)前路徑和名稱保存現(xiàn)有工作簿(如是首次保存,則將其保存到缺省名稱中,如BOOK1.XLS)。SaveAs方法 首次保存工作簿或用另一名稱保存工作簿。Close方法 關(guān)閉工作簿。
PrintOut方法 打印工作簿,語法為:
PrintOut(from, To, Copies, Preview, Printer, ToFile, Collate)可選參數(shù):
From:打印的起始頁號(hào)。如省略將從起始位置開始打印。
To:打印的終止頁號(hào)。如省略將打印至最后一頁。
Copies:要打印的份數(shù)。如省略將只打印一份。
Preview:如果為True則Excel打印指定對(duì)象之前進(jìn)行打印預(yù)覽。如果為False,或省略則立即打印該對(duì)象。
Printer:設(shè)置活動(dòng)打印機(jī)的名稱。
ToFile:如果為True則打印輸出到文件。
Collate:如果為True則逐份打印每份副本。下面語句將活動(dòng)工作簿的2到5頁打印3份:
ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 示例2:生成、保存、關(guān)閉工作簿 Dim VBExcel As Excel.Application Set VBExcel== CreateObject(”Excel.Application“)With VBExcel.Workbooks.Add With ActiveWorkbook.Save As”C: Temp OUTPUT.XLS“.Close
End With.Quit End With
2、使用工作表
Sheets集合表示工作簿中所有的工作表??梢酝ㄟ^Sheets集合來訪問、激活、增加、更名和刪除工作表。一個(gè)Worksheet對(duì)象代表一個(gè)工作表。
常用的屬性、方法有: 屬性、方法 意義
Worksheets屬性 返回Sheets集合。Name屬性 工作表更名。
Add方法 創(chuàng)建新工作表并將其添加到工作簿中。Select方法 選擇工作表。Copy方法 復(fù)制工作表。
Move方法 將指定工作表移到工作簿的另一位置。Delete方法 刪除指定工作表。PrintOut方法 打印工作表。
示例3:將C盤工作簿中的工作表復(fù)制到A盤工作簿中: Dim VBExcel As Excel.Application Set VBExcel=CreateObject(”Excel.Application“)With VBExcel.Workbooks.Open ”C:TempOUTPUT.XLS“.Workbooks.Open”A:OUTPUT1.XLS“.Workbooks(”O(jiān)UTPUT.XLS“).Sheets(”Sales“).Copy.Workbooks(”O(jiān)UTPUT1.XLS).Workbooks(“OUTPUT1.XLS”).Save
.Workbooks(“OUTPUT.XLS”).Close.Workbooks(“OUTPUTI.XLS”).Close.Quit End With
3、使用單元范圍
Range對(duì)象代表工作表的某一單元格、某一行、某一列、某一選定區(qū)域或者某一三維區(qū)域。常用的屬性、方法有: 屬性、方法 意義
Range屬性 Range(arg)其中arg為A1--樣式符號(hào),表示單個(gè)單元格或單元格區(qū)域。Cells屬性 Cells(row, col)(其中row為行號(hào),col為列號(hào))表示單個(gè)單元格。ColumnWidth屬性 指定區(qū)域中所有列的列寬。Rowl3eight屬性 指定區(qū)域中所有行的行寬。Value屬性 指定區(qū)域中所有單元格的值(缺省屬性)。Formula屬性 指定單元格的公式,由A1--樣式引用。Select方法 選擇范圍。
Copy方法 將范圍的內(nèi)容復(fù)制到剪貼板。C1earContents方法 清除范圍的內(nèi)容。Delete方法 刪除指定單元范圍。
4、使用圖表
Chart對(duì)象代表工作簿中的圖表。該圖表既可為嵌人式圖表(包含于ChartObject對(duì)象中)也可為分立的圖表工作表。
常用方法有: 方法 意義
Add方法 新建圖表工作表。返回Chart對(duì)象。PrineOut方法 打印圖表。
ChartWizard方法 修改給定圖表的屬性,其語法為:
ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)其中:
Source:包含新圖表的源數(shù)據(jù)的區(qū)域。如省略,將修改活動(dòng)圖表工作表或活動(dòng)工作表中處于選定狀態(tài)的嵌人式圖表。
Gallery:圖表類型。其值可為下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13DBar、x13DColumn, x13DLine, x13DPie、x13 DSurface、xlDoughnut或xlDefaultAutoFormat。
Format:內(nèi)置自動(dòng)套用格式的編號(hào)。如省略,將選擇默認(rèn)值。P1otBy:指定系列中的數(shù)據(jù)是來自行(xlRows)還是列(xlColumns)。CategoryLabels:表示包含分類標(biāo)志的源區(qū)域內(nèi)行數(shù)或列數(shù)的整數(shù)。SeriesLabels:表示包含系列標(biāo)志的源區(qū)域內(nèi)行數(shù)或列數(shù)的整數(shù)。HasLegend:若指定True,則圖表將具有圖例。Title:圖表標(biāo)題文字。
CategoryTitle:分類軸標(biāo)題文字。ValueTitle:數(shù)值軸標(biāo)題文字。
ExtraTitle:三維圖表的系列軸標(biāo)題,或二維圖表的第二數(shù)值軸標(biāo)題。
可組合使用Add方法和ChartWizard方法,以創(chuàng)建包含工作表中數(shù)據(jù)的圖表工作表。下例基于工作表“Sheetl”中單元格區(qū)域“A1:A20”中的數(shù)據(jù)生成新的折線圖并打印。
With Charts.Add.ChartWizard source:=Worksheets(“sheet1”).Range(“a1:a20”),gallery:=xlLine, title:=“折線圖表”
.Printout End With
5、使用Excel工作表函數(shù)
在VB語句中可使用大部分的Excel工作表函數(shù),可通過WorksheetFunction對(duì)象調(diào)用Excel工作表函數(shù)。下面的Sub過程用Min工作表函數(shù)求出指定區(qū)域中單元格的最小值,并通過消息框顯示結(jié)果值。
Sub UseFunction()Dim myRange As Range Set myRange=Worksheets(“Sheet1”).Range(“B2:F10”)answer=Application.WorksheetFunction.Min(myRange)MsgBox answer End Sub 如果使用以區(qū)域引用為參數(shù)的工作表函數(shù),必須指定一個(gè)Range對(duì)象。如可用Match工作表函數(shù)對(duì)A1:A10區(qū)域的所有單元格進(jìn)行搜索。
Sub FindFirst()my Var=Application.WorksheetFunction.Match(9, Worksheets(1).Range(“A1:A10”),0)MsgBox myVar End Sub 要在單元格中插人工作表函數(shù),可將該函數(shù)指定為對(duì)應(yīng)于Range對(duì)象的Formula屬性值。在以下示例中,將當(dāng)前工作簿Sheetl內(nèi)A1:B3區(qū)域的Formula屬性指定為RAND工作表函數(shù)(此函數(shù)產(chǎn)生二個(gè)隨機(jī)數(shù))。
Sub InsertFormula()Worksheets(“Sheet1”).Range(“A1:B3”).Formula=“RAND()” End Sub 以上簡要介紹了Excel對(duì)象模型中部分對(duì)象及其屬性和方法,更詳細(xì)的信息可參閱Excel 2000幫助中的“Microsoft Excel Visual Basic參考”一節(jié)的內(nèi)容。實(shí)際上,Microsoft Office家族的Word,PowerPoint, Access和Project等應(yīng)用程序都可以在VB應(yīng)用程序中調(diào)用,其原理和步驟完全相同,只是其對(duì)象模型有所不同而已。
----VB程序中直接調(diào)用Excel的格式如下:
Private Sub menudy_Click(Index As Integer)這是一個(gè)打印菜單 Select Case Index Case 0 On Error GoTo kung aaa = Shell(“D:Program FilesMicrosoft OfficeOfficeEXCEL.EXE c:cnglcngl.xls“, 1)Case 1 On Error GoTo kong 作為空表處理 aaa = Shell(“D:Program FilesMicrosoft OfficeOfficeEXCEL.EXE c:cnglcngly.xls”, 1)Case 3 Case 4 Case 5 End Select Exit Sub kung: aaa = Shell(“EXCEL.EXE c:cnglcngl.xls“, 1)Exit Sub kong: aaa = Shell(“EXCEL.EXE c:cnglcngly.xls”, 1)End Sub----由于Word97和Excel97等高版本的Office組件都有和VB 的接口:VB 編輯器,所以我們可以直接利用 VB 編輯器編寫我們需要的程序。步驟如下:進(jìn)入Excel97后,用鼠標(biāo)點(diǎn)擊菜單欄中的“工具”按鈕,選擇“宏”,再選擇“VB 編輯器”。
----“VB編輯器”的編輯界面非常類似于“Visual Basic“的界面。我們可以從它的控件“工程資源管理器”中插入需要的“添加用戶窗體、添加模塊、添加類模塊”,并且從“屬性窗口”中加入屬性。
----例如,我們可以制定一個(gè)打印窗體,通過程序來實(shí)現(xiàn)數(shù)據(jù)定位和循環(huán)調(diào)用打印過程。Public panduan As Boolean Private Sub CommandButton1_Click()change If panduan Then Unload Me Else TextBox1.Text = “” End If End Sub Sub change()If Not judgeday(TextBox1.Text)Then GoTo error panduan = True Dim sql As String Dim db As Database Dim rs As Recordset sql = “SELECT * From 數(shù)據(jù)表“ sql = sql + “ WHERE(((數(shù)據(jù)表.日期)= ?!?+ TextBox1.Text + “#))“ Setdb =OpenDatabase(Application.ThisWorkbook.Path +“cngl.mdb”)Set rs = db.OpenRecordset(sql, dbOpenDynaset)If rs.EOF Then
MsgBox(“此日期無數(shù)據(jù)“)Exit Sub End If daima1 = rs.Fields(“代碼”)Sheet1.Range(“e5“).Value = rs.Fields(“日期”)Sheet1.Range(“f7“).Value = rs.Fields(“數(shù)據(jù)表記錄”)Sheet1.Range(“d13“).Value = rs.Fields(“整數(shù)100”)Sheet1.Range(“d15“).Value = rs.Fields(“整數(shù)50”)Sheet1.Range(“d17“).Value = rs.Fields(“整數(shù)10”)Sheet1.Range(“d19“).Value = rs.Fields(“整數(shù)5”)Sheet1.Range(“d21“).Value = rs.Fields(“整數(shù)2”)Sheet1.Range(“d23“).Value = rs.Fields(“整數(shù)1”)Sheet1.Range(“h13“).Value = rs.Fields(“其他100”)Sheet1.Range(“h15“).Value = rs.Fields(“其他50”)Sheet1.Range(“h17“).Value = rs.Fields(“其他10”)Sheet1.Range(“h19“).Value = rs.Fields(“其他5”)Sheet1.Range(“h21“).Value = rs.Fields(“其他2”)Sheet1.Range(“h23“).Value = rs.Fields(“其他1”)Sheet1.Range(“d37“).Value = Sheet1.Range(“d13”).Value * 100 + Sheet1.Range(“d15“).Value * 50 + Sheet1.Range(“d17”).Value * 10 + Sheet1.Range(“d19“).Value * 5 + Sheet1.Range(“d21”).Value * 2 + Sheet1.Range(“d23“).Value Sheet1.Range(“h37”).Value = Sheet1.Range(“h13“).Value * 100 + Sheet1.Range(“h15”).43
Value * 50 + Sheet1.Range(“h17“).Value * 10 + Sheet1.Range(“h19”).Value * 5 + Sheet1.Range(“h21“).Value * 2 + Sheet1.Range(“h23”).Value Dim sql1 As String Dim db1 As Database Dim rs1 As Recordset sql1 = “SELECT * From 代碼字典“ sql1 = sql1 + “WHERE(((代碼字典.代碼)= ” & daima1 & “))“ Setdb1 =OpenDatabase(Application.ThisWorkbook.Path + “cngl.mdb”)Set rs1 = db1.OpenRecordset(sql1, dbOpenDynaset)Sheet1.Range(“h41“).Value = rs1.Fields(“代碼字典名稱”)Exit Sub error: MsgBox(“日期輸入錯(cuò)誤“)panduan = False End Sub Private Sub TextBox1_Change()End Sub Private Sub UserForm_Activate()dyxjkc.Top = 30 dyxjkc.Left = 230 End Sub----具體的表格畫線可以由Excel自動(dòng)完成,因此簡化了VB 編程的步驟,并且節(jié)約調(diào)試程序和畫線定
位的時(shí)間。
這兩天編了一個(gè)程序,基本功能是從自動(dòng)站B文件(ACCESS數(shù)據(jù)庫文件)查詢當(dāng)月的日數(shù)據(jù)生成月簡表,調(diào)出數(shù)據(jù)很好實(shí)現(xiàn),程序的核心源碼是把這些數(shù)據(jù)寫入一個(gè)Excel模板中,這是我以前就想學(xué)會(huì)的一個(gè)功能,但沒有好好去找資料,為編這個(gè)程序在網(wǎng)上查找了一些資料,只用一小段代碼就實(shí)現(xiàn)了把數(shù)據(jù)寫入Excel模板中的功能,下面是基本源碼,后面附幾篇用VB控制的文章,希望對(duì)大家有益。(如果大家感興趣的話,我可以把那個(gè)從自動(dòng)站中調(diào)用數(shù)據(jù)并形成日數(shù)據(jù)EXCEL文件的源碼發(fā)上來)
Dim exl As New Excel.Application Dim book As New Excel.Workbook Dim sheet As New Excel.Worksheet '先使用excel制作一個(gè)模板
Set book = exl.Workbooks.Open(”你制作的excel的路徑“)Set sheet = book.Worksheets(1)'在excel的格子中寫入你想打印的內(nèi)容 With sheet.Cells(Row, col)= ”“ End With sheet.PrintOut book.Close Set book = Nothing exl.Quit Set exl = Nothing 45
Excel、Access、VB的結(jié)合應(yīng)用
----微軟公司的Office系列辦公軟件相信已是眾所周知,其中Excel強(qiáng)大的統(tǒng)計(jì)制表功能、Access功能完備的數(shù)據(jù)處理能力深受眾多用戶所喜愛。Visual Bsaic更是微軟公司又一有力的產(chǎn)品,它簡單易學(xué),在Windows編程中的應(yīng)用十分廣泛。本文通過介紹數(shù)據(jù)處理及復(fù)雜表格的打印,來討論VB與Excel及Access的結(jié)合運(yùn)用。
----由于筆者所在的公司員工眾多,在進(jìn)行職工養(yǎng)老保險(xiǎn)繳費(fèi)的計(jì)算工作時(shí),若使用勞動(dòng)局編制的軟件(用Foxbase編寫),無論是在管理或維護(hù)方面均顯得力不從心。于是在公司領(lǐng)導(dǎo)的強(qiáng)烈要求下,決定由筆者構(gòu)思重新編制?;舅悸肥牵?.將所有員工資料輸入Access進(jìn)行處理,以便于維護(hù)。2.在Excel中預(yù)先制成有表頭的空表(Access相對(duì)欠缺處理復(fù)雜表格的能力),對(duì)需要進(jìn)行金額匯總或其他運(yùn)算的單元格可直接輸入公式。3.在VB中編寫程序代碼,從Access中提取數(shù)據(jù)填入Excel對(duì)應(yīng)表格相應(yīng)的單元格,并輸出至打印機(jī)。
----部分窗體及源程序代碼如下:----1.程序主模塊
----定義Excel、Access對(duì)象變量,顯示系統(tǒng)啟動(dòng)畫面,進(jìn)入系統(tǒng)主程序界面。強(qiáng)調(diào)一下,在編寫程序之前須加入對(duì)Excel及Access庫函數(shù)的引用,具體操作是:選擇菜單欄'工程''引用?',將'可使用的引用'列表框內(nèi)'Microsoft Access 8.0 Object Library'和 'Microsoft Excel 8.0 Object Library'兩項(xiàng)前的復(fù)選框標(biāo)為選中,按”確定“返回。
mdsMain.bas '定義數(shù)據(jù)庫記錄集及Excel對(duì)象變量 Public ex As New Excel.Application Public exwbook As Excel.Workbook Public exsheet As Excel.Worksheet Public mydatabase As Database Public myrecordset1 As Recordset [定義記錄集]
?? ??
Public Opt As Integer '報(bào)表選項(xiàng) [Opt為frmSelreport.frm返回值] Public isYN As Boolean Sub Main()Load frmSplash frmSplash.Show frmSplash.Label2.Caption = ” 系統(tǒng)正在加載Access數(shù)據(jù)庫...“ Set mydatabase = OpenDatabase(”c:sbdasbda.mdb“)Set myrecordset1 = mydatabase.OpenRecordset(”報(bào)表打印(一)“)[此處對(duì)記錄集賦值] ?? ??
frmSplash.Label2.Caption = ” 系統(tǒng)正在加載Excel電子表格...“ Set ex = CreateObject(”excel.application“)Set exwbook = ex.Workbooks.Open(”c:sbdasbda.xls“)Load FrmInput '將數(shù)據(jù)輸入窗體加載到內(nèi)存中 Unload frmSplash Load FrmMain'將主程序界面加載到內(nèi)存中 End Sub----2.報(bào)表打印模塊
----其中ExcelDoForVB1()是一子程序,由prnProess()調(diào)用,作用是從Access中提取所需數(shù)據(jù)資料,填入Excel對(duì)應(yīng)工作表(Worksheet)的相應(yīng)單元格(Cells)中,然后打印已填入數(shù)據(jù)的表格;prnProess()則負(fù)責(zé)實(shí)現(xiàn)對(duì)VB通用對(duì)話框(Commom Dialog)中打印功能的控制。
mdlPrint.bas Option Explicit '定義循環(huán)計(jì)數(shù)變量
Public nRow As Integer, nCol As Integer, nBtoE As Integer '定義變量接收打印對(duì)話框返回值 Public BeginPage, EndPage, NumCopies '程序運(yùn)行時(shí)需進(jìn)行判斷的各種標(biāo)志 Public nflag, Flag, ifNum '數(shù)據(jù)記錄集中指針移動(dòng)數(shù)
Public PageN As Integer, n As Integer 'bar1為進(jìn)度條 Public bar1 As Object Sub prnProess()'控制通用對(duì)話框打印功能
Set bar1 = FrmPrint.PgsBar1 '進(jìn)度條 On Error GoTo errhandle: If Flag = 0 Then '當(dāng)打印對(duì)話框中選”全部“時(shí) Select Case Opt'選擇需要打印的表格 Case 1 nflag = 1 myrecordset1.MoveFirst
myrecordset1.MovePrevious PageN = 1 Do While nflag = 1 Call ExcelDoForVB1 '數(shù)據(jù)填入Excel單元格打印 PageN = PageN + 1 Loop Case 2 ?? ?? End Select Else If Flag = 2 Then' 當(dāng)打印對(duì)話框中選”頁"時(shí)
If EndPageBeginPage > 0 Then ifNum = 1 Else ifNum = 2 End If End If Select Case ifNum Case 2
Exit Sub Case 0 Select Case Opt ' 選擇需要打印的表格 Case 1 myrecordset1.MoveFirst n =(BeginPage4 + 1)1)*(491 myrecordset1.Move n PageN = BeginPage
發(fā)表于《中小學(xué)信息技術(shù)教育》雜志2005年第7期 VB程序設(shè)計(jì)方法——今天我來做導(dǎo)演!
教學(xué)目標(biāo):
1、知道創(chuàng)建一個(gè)VB程序的基本步驟
2、了解窗口、事件和消息的含義
3、培養(yǎng)學(xué)生的自主探究精神
教學(xué)重點(diǎn)和難點(diǎn):
1、窗口,事件和消息的關(guān)系
2、屬性的設(shè)置
3、代碼的輸入
學(xué)生分析:
高一學(xué)生,已經(jīng)學(xué)習(xí)了程序的三種基本結(jié)構(gòu),能辨別三種結(jié)構(gòu),但不會(huì)自己書寫程序。對(duì)VB基本上一無所知。
教學(xué)方法:
采用主動(dòng)式任務(wù)驅(qū)動(dòng)的教學(xué)方法,通過創(chuàng)設(shè)情境,激發(fā)學(xué)生對(duì)VB的興趣,使學(xué)生產(chǎn)生動(dòng)手做一個(gè)VB程序的欲望.在布置任務(wù)的時(shí)候,不是教師指定完成什么任務(wù),而是由學(xué)生自己提出想完成一個(gè)樣的任務(wù),即想做一個(gè)什么樣的VB程序,因?yàn)槿蝿?wù)是學(xué)生自己提出來的,所以學(xué)生肯定感興趣的,這就避免了教師布置的任務(wù)不能照顧到全體學(xué)生裝的弊端.而教師作為引導(dǎo)者和技術(shù)幫助者,幫助學(xué)生一步步地完成任務(wù),引導(dǎo)學(xué)生分解任務(wù),分解為界面的創(chuàng)建,屬性的設(shè)置,代碼的輸入等幾部分。在實(shí)踐過程中,使學(xué)生掌握用VB進(jìn)行程序設(shè)計(jì)的步驟和方法。
教學(xué)過程:
一、激趣引入
師:上節(jié)課中我們演示了一個(gè)拋硬幣的VB小程序,大家還有印象嗎?(教師演示這個(gè)程序)師:下面我再來演示幾個(gè)其他VB小程序(教師演示若干個(gè)趣味小程序,如,和劉德華對(duì)話,井字棋,心情好嗎,挖地雷,單選復(fù)選框與字體,測驗(yàn)記憶力,彈球游戲,剪刀包袱,在演示過程中,讓學(xué)生注意鼠標(biāo)單擊按鈕,或者鼠標(biāo)移動(dòng),窗口上會(huì)有什么反應(yīng))
師:窗口——舞臺(tái),事件——導(dǎo)演的命令,反應(yīng)——演員的表演,控件——演員(以對(duì)比方式說明它們之間的關(guān)系,讓學(xué)生明白,需要哪個(gè)演員(控件)作出什么表演,要對(duì)這個(gè)演員(控件)發(fā)號(hào)施令,導(dǎo)演不能瞎指揮,不然表演要亂套的。)
師:有了舞臺(tái),演員,導(dǎo)演在哪兒呢?導(dǎo)演就是你!今天就是請(qǐng)大家當(dāng)一回導(dǎo)演(出示課題:今天你來做導(dǎo)演!)意圖:
1、在演示過程中,提醒學(xué)生注意窗口,事件(點(diǎn)擊按鈕或移動(dòng)按鈕),消息(事件的反應(yīng))。
2、激發(fā)學(xué)生的興趣,產(chǎn)生自己動(dòng)手做一個(gè)VB程序的欲望。
二、形成任務(wù) 大屏幕展示:
一、確定導(dǎo)演的工作目標(biāo),即你想要完成一個(gè)什么樣的VB程序?
老師引導(dǎo),啟發(fā)學(xué)生,使每個(gè)學(xué)生能確定自己的目標(biāo),即要完成一個(gè)什么樣的VB程序,即名稱是什么?功能是什么?……。(對(duì)于不能確定的學(xué)生,建議參考老師演示的例子,從中選擇一個(gè)自己感興趣的)
意圖:這是很重要的一個(gè)過程,要很好地引導(dǎo)學(xué)生,使學(xué)生清楚地知道自己的任務(wù),即自己要做什么?
三、分解任務(wù)
(以演示中的一個(gè)小例子,來說明如何完成一個(gè)VB程序)大屏幕展示:
二、導(dǎo)演如何完成任務(wù)?
師:導(dǎo)演正式上任了,大家都胸有成竹了,明確了要做一個(gè)什么樣的VB程序,首先做什么呢?
1、界面的設(shè)計(jì)(舞臺(tái)的布置)師:一個(gè)程序,你最先看到是什么?
師:舞臺(tái)如何布局?演員如何選???窗口如何布局?上面要放哪些東西?這些東西怎么放比較好看?……
意圖:引導(dǎo)學(xué)生從界面設(shè)計(jì)入手,學(xué)會(huì)用控件來輸入文字,圖片,通過對(duì)文字的修飾,圖片的插入,引入屬性的設(shè)置,突破這個(gè)難點(diǎn)。
2、如何讓對(duì)象動(dòng)起來?
師:窗口布置好了,舞臺(tái)拱建好了,演員也到位了,那么讓演員如何表演呢?每個(gè)演員做什么動(dòng)作呢?導(dǎo)演發(fā)布命令的時(shí)候(輸入代碼)的時(shí)候,一定要看清對(duì)象,不要亂發(fā)命令??!意圖:
引入代碼的輸入。為節(jié)省時(shí)間,提供演示程序的代碼,避免自己書寫代碼。
四、動(dòng)手實(shí)踐
師:各位躍躍欲試的導(dǎo)演們,按照自己剛才確定的任務(wù),動(dòng)手來完成自己的第一個(gè)VB小程序吧!可能問題:
有些學(xué)生在輸入代碼的時(shí)候,為分不清代碼需要給哪個(gè)控件加上,這時(shí)一定要讓學(xué)生明白,導(dǎo)演的指令必須是針對(duì)某個(gè)演員發(fā)的,不能亂發(fā)。對(duì)于學(xué)生碰到的問題,老師做好技術(shù)指導(dǎo)工作。
五、評(píng)價(jià)交流(展示學(xué)生作品,交流評(píng)價(jià))
師:不同風(fēng)格的導(dǎo)演設(shè)計(jì)的效果是不同的,讓我們來欣賞一下各位導(dǎo)演的作品吧 意圖:
通過電子教室軟件,轉(zhuǎn)發(fā)一些小組完成的作品,能過交流了解其他同學(xué)的制作成果,吸取他人經(jīng)驗(yàn)
提醒學(xué)生在程序中加入制作人信息,即導(dǎo)演的信息,有初步的版權(quán)意識(shí)
有些學(xué)生可能設(shè)計(jì)的任務(wù)比較大,在課內(nèi)無法完成,則鼓勵(lì)在課后繼續(xù)完成,作為拓展作業(yè)。
五、總結(jié)
師:各位導(dǎo)演感覺如何?做一個(gè)導(dǎo)演不容易吧,做一個(gè)好的導(dǎo)演更不容易。創(chuàng)建一個(gè)VB程序的基本步驟:界面設(shè)計(jì),屬性設(shè)置,代碼輸入。
導(dǎo)演有大有小,但是基本工作是一樣的,就是上面這些步驟,今天我們是小導(dǎo)演,明天我們可能是大導(dǎo)演,期待欣賞到同學(xué)們的大作!意圖:回顧過程,總結(jié)提高。
附:學(xué)案
今天我來做導(dǎo)演
——VB程序設(shè)計(jì)方法
一、明確目標(biāo)
身為導(dǎo)演,最重要的一件事,就是明確自己的目標(biāo),請(qǐng)確定你的目標(biāo),即你想做個(gè)什么樣的VB程序?
提示:如果一時(shí)之間想不出來,可以參考老師演示的例子
二、設(shè)計(jì)舞臺(tái)(界面的布局)
1、如果你想在窗口上輸入文字,方法如下:
(1)用鼠標(biāo)選擇左邊工具欄中的“LABEL”標(biāo)簽
(2)在窗口上拖出一個(gè)大小合適的矩形(矩形的大小可以用矩形邊上的八個(gè)小方塊進(jìn)行調(diào)整)
2、如果你想插入一張圖片,方法如下:
(1)用鼠標(biāo)選擇左邊工具欄中的“IMAGES”標(biāo)簽
(2)在窗口上拖出一個(gè)大小合適的矩形
3、如果你想在窗口上增加一個(gè)按鈕,方法如下:
(1)用鼠標(biāo)選擇左邊工具欄中的“BUTTON”標(biāo)簽
(2)在窗口上拖出一個(gè)大小合適的矩形
4、如果你想在窗口上增加一個(gè)文本框,方法如下:
(1)用鼠標(biāo)選擇左邊工具欄中的“TEXT”標(biāo)簽
(2)在窗口上拖出一個(gè)大小合適的矩形
:),增加其他控件的方法類似,相信自己,試一試!
三、對(duì)演員進(jìn)行分工(屬性的設(shè)置)
1、如何在窗口上顯示文字?
方法如下:
(1)用鼠標(biāo)選中Label控件
(2)在右邊的屬性窗口中找到“Caption”屬性,在右邊輸入要顯示的文字 思考:如何修改文字的字體?顏色?大??? 提示:修改相應(yīng)的屬性
2、如何插入圖片?
方法如下:
(1)用鼠標(biāo)選中Image控件
(2)在右邊的屬性窗口中找到“Picture”屬性,點(diǎn)擊旁邊的省略號(hào)按鈕,選擇要插入的圖片
3、如何修改Text顯示的文字? 方法如下:
(1)用鼠標(biāo)選中Text控件
(2)在右邊鼠性中選中Text屬性,輸入要顯示的文字
4、如何修改按鈕上顯示的文字? 方法如下:
選中按鈕,修改“Caption”屬性
四、讓演員動(dòng)起來(輸入代碼)選擇演員,輸入想要演員實(shí)現(xiàn)的代碼
五、檢查一下導(dǎo)演工作進(jìn)展如何? 方法: 運(yùn)行、播放
六、你是個(gè)合格的導(dǎo)演?還是個(gè)優(yōu)秀的導(dǎo)演?
1、你知道如何做一個(gè)VB程序了嗎?(知道/不知道)
2、你是個(gè)合格的/優(yōu)秀的導(dǎo)演?(是/不是)
請(qǐng)耐心看完:問題出現(xiàn)得較復(fù)雜。
我的目的:
將多個(gè)文檔內(nèi)容逐一拷貝粘貼到另一文檔后面
我的方法:
wordapp=new word.application
Set doc = wordapp.Documents.Add
while
pathTemp = App.Path & “temp.doc”
LoadFile rs(“word”), pathTemp
Set doctemp = wordapp.Documents.Open(pathTemp)
doctemp.Content.Select
wordapp.Selection.copy
Set myRange = doc.Range(Start:=doc.Content.End 缺少參數(shù) 3文件不存在 ' '*************************************************************** Public Function ReplacePic(FindStr As String, Optional Time As Integer = 0)As Integer Attribute ReplacePic.VB_Description = “查找FindStr,并替換為PicFile所指向的圖片文件,替換次數(shù)由time參數(shù)確定,為0時(shí),替換所有” '******************************************************************************** '
從Word.Range對(duì)象mysel中查找所有FindStr,并替換為PicFile圖像 ' 替換次數(shù)由time參數(shù)確定,為0時(shí),替換所有
'******************************************************************************** If Len(C_PicFile)= 0 Then C_ErrMsg = 2 Exit Function End If Dim i As Integer Dim findtxt As Boolean mysel.Find.ClearFormatting mysel.Find.Replacement.ClearFormatting With mysel.Find.Text = FindStr.Replacement.Text = “".Forward = True.Wrap = wdFindContinue.Format = False.MatchCase = False.MatchWholeWord = False.MatchByte = True.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = False End With mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=True)If Not findtxt Then ReplacePic = 0 Exit Function End If i = 1 Do While findtxt mysel.InlineShapes.AddPicture FileName:=C_PicFile If i = Time Then Exit Do i = i + 1 mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=True)Loop ReplacePic = i End Function Public Function FindThis(FindStr As String)As Boolean Attribute FindThis.VB_Description = ”查找FindStr,如果模板中有FindStr則返回True“ If Len(FindStr)= 0 Then C_ErrMsg = 2 Exit Function End If mysel.Find.ClearFormatting mysel.Find.Replacement.ClearFormatting With mysel.Find.Text = FindStr.Replacement.Text = ”“.Forward = True.Wrap = wdFindContinue.Format = False.MatchCase = False.MatchWholeWord = False.MatchByte = True.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = False End With mysel.HomeKey Unit:=wdStory FindThis = mysel.Find.Execute End Function Public Function ReplaceChar(FindStr As String, RepStr As String, Optional Time As Integer = 0)As Integer Attribute ReplaceChar.VB_Description = ”查找FindStr,并替換為RepStr,替換次數(shù)由time參數(shù)確定,為0時(shí),替換所有“ '******************************************************************************** '
從Word.Range對(duì)象mysel中查找FindStr,并替換為RepStr ' 替換次數(shù)由time參數(shù)確定,為0時(shí),替換所有
'******************************************************************************** Dim findtxt As Boolean If Len(FindStr)= 0 Then C_ErrMsg = 2 RaiseEvent HaveError Exit Function End If mysel.Find.ClearFormatting mysel.Find.Replacement.ClearFormatting With mysel.Find.Text = FindStr.Replacement.Text = RepStr.Forward = True.Wrap = wdFindContinue.Format = False.MatchCase = False.MatchWholeWord = False.MatchByte = True.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = False End With
If Time > 0 Then For i = 1 To Time mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=wdReplaceOne)If Not findtxt Then Exit For Next If i = 1 And Not findtxt Then ReplaceChar = 0 Else ReplaceChar = i End If Else mysel.Find.Execute Replace:=wdReplaceAll End If End Function
Public Function GetPic(PicData()As Byte, FileName As String)As Boolean Attribute GetPic.VB_Description = ”把圖像數(shù)據(jù)PicData,存為PicFile指定的文件“ '******************************************************************************** '
把圖像數(shù)據(jù)PicData,存為PicFile指定的文件
'******************************************************************************** On Error Resume Next If Len(FileName)= 0 Then C_ErrMsg = 2 RaiseEvent HaveError Exit Function End If Open FileName For Binary As #1 If Err.Number <> 0 Then C_ErrMsg = 3 Exit Function End If '二進(jìn)制文件用Get,Put存放,讀取數(shù)據(jù) Put #1, , PicData Close #1 C_PicFile = FileName GetPic = True End Function
Public Sub DeleteToEnd()Attribute DeleteToEnd.VB_Description = ”刪除從當(dāng)前位置到結(jié)尾的所有內(nèi)容“ mysel.EndKey Unit:=wdStory, Extend:=wdExtend mysel.Delete Unit:=wdCharacter, Count:=1 End Sub Public Sub MoveEnd()Attribute MoveEnd.VB_Description = ”光標(biāo)移動(dòng)到文檔結(jié)尾“ '光標(biāo)移動(dòng)到文檔結(jié)尾 mysel.EndKey Unit:=wdStory End Sub Public Sub GotoLine(LineTime As Integer)mysel.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=LineTime, Name:=”“ End Sub Public Sub OpenDoc(view As Boolean)Attribute OpenDoc.VB_Description = ”打開Word文件,View確定是否顯示W(wǎng)ord界面“ On Error Resume Next '******************************************************************************** '
打開Word文件,并給全局變量mysel賦值
'******************************************************************************** If Len(C_TemplateDoc)= 0 Then mywdapp.Documents.Add Else mywdapp.Documents.Open(C_TemplateDoc)End If If Err.Number <> 0 Then C_ErrMsg = 4 RaiseEvent HaveError Exit Sub End If
mywdapp.Visible = view mywdapp.Activate Set mysel = mywdapp.Application.Selection 'mysel.Select
End Sub Public Sub OpenWord()On Error Resume Next '******************************************************************************** '
打開Word程序,并給全局變量mywdapp賦值
'******************************************************************************** Set mywdapp = CreateObject(”word.application“)If Err.Number <> 0 Then C_ErrMsg = 1 RaiseEvent HaveError Exit Sub End If End Sub Public Sub ViewDoc()Attribute ViewDoc.VB_Description = ”顯示W(wǎng)ord程序界面“ mywdapp.Visible = True End Sub Public Sub AddNewPage()Attribute AddNewPage.VB_Description = ”插入分頁符“ mysel.InsertBreak Type:=wdPageBreak End Sub Public Sub WordCut()Attribute WordCut.VB_Description = ”剪切模板所有內(nèi)容到剪切板“ '保存模板頁面內(nèi)容 mysel.WholeStory mysel.Cut mysel.HomeKey Unit:=wdStory End Sub Public Sub WordCopy()Attribute WordCopy.VB_Description = ”拷貝模板所有內(nèi)容到剪切板“ mysel.WholeStory mysel.Copy mysel.HomeKey Unit:=wdStory End Sub Public Sub WordDel()mysel.WholeStory mysel.Delete mysel.HomeKey Unit:=wdStory End Sub Public Sub WordPaste()Attribute WordPaste.VB_Description = ”拷貝剪切板內(nèi)容到當(dāng)前位置“ '插入模塊內(nèi)容 mysel.Paste End Sub Public Sub CloseDoc()Attribute CloseDoc.VB_Description = ”關(guān)閉Word文件模板“ '******************************************************************************** '
關(guān)閉Word文件模本 '******************************************************************************** On Error Resume Next
mywdapp.ActiveDocument.Close False If Err.Number <> 0 Then C_ErrMsg = 3 Exit Sub End If End Sub Public Sub QuitWord()'******************************************************************************** '
關(guān)閉Word程序
'******************************************************************************** On Error Resume Next mywdapp.Quit
If Err.Number <> 0 Then C_ErrMsg = 3 Exit Sub End If End Sub Public Sub SavetoDoc()Attribute SavetoDoc.VB_Description = ”保存當(dāng)前文檔為FileName指定文件“ On Error Resume Next '并另存為文件FileName If Len(C_newDoc)= 0 Then C_ErrMsg = 2 RaiseEvent HaveError Exit Sub End If mywdapp.ActiveDocument.SaveAs(C_newDoc)
If Err.Number <> 0 Then C_ErrMsg = 3 RaiseEvent HaveError Exit Sub End If End Sub
Public Property Get TemplateDoc()As String Attribute TemplateDoc.VB_Description = ”模板文件名.“ TemplateDoc = C_TemplateDoc End Property Public Property Let TemplateDoc(ByVal vNewValue As String)C_TemplateDoc = vNewValue End Property Public Property Get newdoc()As String Attribute newdoc.VB_Description = ”執(zhí)行CloseDoc方法時(shí),將模板文件另存為此文件名指定的新文件.如果不指定,在執(zhí)行CloseDoc方法時(shí),將產(chǎn)生一個(gè)錯(cuò)誤“ newdoc = C_newDoc End Property Public Property Let newdoc(ByVal vNewValue As String)C_newDoc = vNewValue End Property Public Property Get PicFile()As String Attribute PicFile.VB_Description = ”圖像文件名“ PicFile = C_PicFile End Property Public Property Let PicFile(ByVal vNewValue As String)C_PicFile = vNewValue End Property Public Property Get ErrMsg()As Integer Attribute ErrMsg.VB_Description = ”錯(cuò)誤信息.ErrMsg代碼: 1-word沒有安裝 2-缺少參數(shù) 3-沒權(quán)限寫文件 4-文件不存在“ ErrMsg = C_ErrMsg End Property 請(qǐng)問如何正確殺掉word進(jìn)程?
樓主btl19792008(btl19792008)2005-11-04 17:05:03 在 VB / 數(shù)據(jù)庫(包含打印,安裝,報(bào)表)提問 我的word程序運(yùn)行幾次,在資源管理器中就會(huì)出現(xiàn)很多word進(jìn)程。
我的代碼寫的不對(duì)嗎?
代碼如下:
Dim appTemplate As Word.Application
Dim docTemplate As Word.Document
Set appTemplate = GetObject(, ”Word.Application“)
If Err.Number = 429 Then
Set appTemplate = New Word.Application
End If
Set docTemplate = Nothing
Set appTemplate = Nothing
問題點(diǎn)數(shù):100、回復(fù)次數(shù):9Top 樓bbhere(俺是二等小兵(baby,i'll be right here waiting for you))回復(fù)于 2005-11-04 17:31:33 得分 0 markTop 樓province_(雍昊)回復(fù)于 2005-11-04 18:03:37 得分 0 要先QUIT再NOTHING。Top 樓faysky2(出來混,遲早是要還嘀)回復(fù)于 2005-11-04 19:21:30 得分 0
'引用Microsoft Word X.0 Object Library
Private Sub Command1_Click()
On Error GoTo connecterr
Dim wordApp As Object
Set wordApp = CreateObject(”word.application“)
wordApp.Visible = True
Dim myDoc As Object
Set myDoc = wordApp.Documents.Open(”c:Test.dot“)
wordApp.selection.TypeText(” Hello“)
myDoc.Close '關(guān)閉
wordApp.Quit
'退出
Set myDoc = Nothing
Set wordApp = Nothing
Exit Sub
connecterr:
End Sub
Top 樓faysky2(出來混,遲早是要還嘀)回復(fù)于 2005-11-04 19:24:16 得分 0 Dim appTemplate As Word.Application
Dim docTemplate As Word.Document
Set appTemplate = GetObject(, ”Word.Application“)
If Err.Number = 429 Then
Set appTemplate = New Word.Application
End If
'**************
docTemplate.Close
appTemplate.Quit
'**************
Set docTemplate = Nothing
Set appTemplate = NothingTop 樓rainstormmaster(暴風(fēng)雨 v2.0)回復(fù)于 2005-11-06 11:01:27 得分 0 沒有office沒法測試,不過我想你可以參考一下這個(gè):
http://blog.joycode.com/mvm/archive/2004/04/25/20208.aspxTop 6 樓ahlegend(愛之傳奇)回復(fù)于 2005-11-06 20:51:45 得分 0 QuitTop 樓szjhxu(天野)回復(fù)于 2005-11-06 22:01:48 得分 0 Dim appTemplate As Word.Application
Dim docTemplate As Word.Document
Set appTemplate = GetObject(, ”Word.Application")
If Err.Number = 429 Then
Set appTemplate = New Word.Application
End If
appTemplate.quit
Set docTemplate = Nothing
Set appTemplate = NothingTop 樓zhf_btj(鬧鬧)回復(fù)于 2005-11-15 21:54:47 得分 0 引用四樓
faysky2()
myDoc.Close '關(guān)閉
wordApp.Quit
'退出
Set myDoc = Nothing
Set wordApp = Nothing
這樣應(yīng)該能退干凈了...我的就是..光用Close和Quit.沒用Nothing就老有多余的進(jìn)程
偶爾試下加個(gè)Nothing就OK了~~~~Top 樓lfh103856111()回復(fù)于 2005-11-16 12:46:09 得分 0 對(duì),注意quit就行了
Vbs 操作wincc畫面腳本總結(jié)
一: 不使用變量單純的操作界面
1.操作某個(gè)畫面中控件的屬性 如 Home1.Pdl(總窗體)下的 畫面窗口2(畫面窗口)
Sub OnClick(ByVal Item)
Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems(“圓1”)objCircle.Radius = 60
Set screenname=HMIRuntime.Screens(“Home1”)
//獲取要操作的窗體
Set pwname=screenname.ScreenItems(“畫面窗口2”)
//獲取要操作的控件,這里填入你要操作的控件名
MsgBox(objCircle.Radius)
//輸出圓的半徑
MsgBox(pwname.Picturename)
//輸出當(dāng)前畫面窗口2的名字 End Sub
注意
當(dāng)調(diào)用某窗體下的某控件的某個(gè)屬性時(shí),需要聲明兩個(gè)對(duì)象,一個(gè)接納這個(gè)控件,一個(gè)接納值
例如
Dim object Dim value Set object =HMIRuntime.Screens(“Home1”).ScreenItems(“畫面窗口2”)Set value=object.picturename
2.更改畫面窗口的對(duì)象
Sub OnClick(Byval Item)
Dim opObject Set opObject=HMIRuntime.Screens(“Home1”).ScreenItems(“畫面窗口2”)opObject.PictureName=“Page1.Pdl” End Sub 3.設(shè)置文本
Set titleTxt=HMIRuntime.Screens(“Home1”).ScreenItems(“靜態(tài)文本2”)titleTxt.Text =titleTxt.Text+“EF” //獲取文本的值并追加字符
4.vb 字符串函數(shù)
VB的字符串截取函數(shù)有Left(字符串,n),返回字符串前N個(gè)字符;Mid(字符串,p,n),從第p個(gè)字符開始,向后截取N個(gè)字符;right(字符串,n),返回字符串的最后n個(gè)字符。
獲取下標(biāo)
VB中的InStr()函數(shù)與InStrRev()函數(shù):
都是在主字符串當(dāng)中搜尋尋找子字符串,返回找到的子字符串在主字符串中出現(xiàn)的位置; 不同在于;
InStr()函數(shù),從左開始向右尋找,InStrRev()函數(shù),從右開始向左尋找。
截取 right 和left
獲取長度 Len 二:操作變量
1.Dim objTag Dim AText Set objTag = HMIRuntime.Tags(“a”)
//獲取變量 objTag.Read
//執(zhí)行讀取
Set AText=ScreenItems(“靜態(tài)文本2”)//獲取控件 AText.Text=objTag.Value //給控件寫入值 objTag.Value =100 //給目標(biāo)變量寫入值 objTag.Write
//執(zhí)行寫入
2.vb 中 Switch 語句的變體
Dim objTag Dim AText Set objTag = HMIRuntime.Tags(“a”)
//獲取內(nèi)部變量a的值
objTag.Read
//必須要有這一步,這是讀取操作,同理如果改寫值必須要有ogjTag.write Set AText=ScreenItems(“靜態(tài)文本2”)
Select Case objTag.Value Case 1 AText.Text=“a” Case 2 AText.Text=“b” Case Else AText.Text=objTag.Value End Select
三.彈出對(duì)話框
設(shè)置
buttons 參數(shù)可以有以下值:
常數(shù) 值 描述
vbOKOnly 0 只顯示確定按鈕。vbOKCancel 1 顯示確定和取消按鈕。
vbAbortRetryIgnore 2 顯示放棄、重試和忽略按鈕。vbYesNoCancel 3 顯示是、否和取消按鈕。vbYesNo 4 顯示是和否按鈕。
vbRetryCancel 5 顯示重試和取消按鈕。vbCritical 16 顯示臨界信息圖標(biāo)。vbQuestion 32 顯示警告查詢圖標(biāo)。vbExclamation 48 顯示警告消息圖標(biāo)。vbInformation 64 顯示信息消息圖標(biāo)。vbDefaultButton1 0 第一個(gè)按鈕為默認(rèn)按鈕。vbDefaultButton2 256 第二個(gè)按鈕為默認(rèn)按鈕。vbDefaultButton3 512 第三個(gè)按鈕為默認(rèn)按鈕。vbDefaultButton4 768 第四個(gè)按鈕為默認(rèn)按鈕。
vbApplicationModal 0 應(yīng)用程序模式:用戶必須響應(yīng)消息框才能繼續(xù)在當(dāng)前應(yīng)用程序中工作。
vbSystemModal 4096 系統(tǒng)模式:在用戶響應(yīng)消息框前,所有應(yīng)用程序都被掛起。
第一組值(0-5)用于描述對(duì)話框中顯示的按鈕類型與數(shù)目;第二組值(16, 32, 48, 64)用于描述圖標(biāo)的樣式;第三組值(0, 256, 512)用于確定默認(rèn)按鈕;而第四組值(0, 4096)則決定消息框的樣式。在將這些數(shù)字相加以生成 buttons 參數(shù)值時(shí),只能從每組值中取用一個(gè)數(shù)字。返回值
MsgBox 函數(shù)有以下返回值:
常數(shù) 值 按鈕 vbOK 1 確定 vbCancel 2 取消 vbAbort 3 放棄 vbRetry 4 重試 vbIgnore 5 忽略 vbYes 6 是 vbNo 7 否
下面的例子演示了 MsgBox 函數(shù)的用法:
Dim MyVar
MyVar = MsgBox(“Hello World!”, 65, “MsgBox Example”)' MyVar contains either 1 or 2, depending on which button is clicked.你要求是有是和否兩個(gè)按鈕那么MyVar = MsgBox(“Hello World!”, 65, “MsgBox Example”)中的65改成4就可以了!
vbs腳本中:
if msgbox(“確實(shí)要啟動(dòng)設(shè)備嗎?”,4,“警告”)=6 then
hmiruntime.tags(“tag1”).write 1
end if
用VB操作Excel的辦法
[日期:2008-11-23]
來源:
作者:
[字體:大 中
小] Private Sub Command3_Click()
On Error GoTo err1
Dim i As Long
Dim j As Long
Dim objExl As Excel.Application '聲明對(duì)象變量
Me.MousePointer = 11
'改變鼠標(biāo)樣式
Set objExl = New Excel.Application
'初始化對(duì)象變量
objExl.SheetsInNewWorkbook = 1 '將新建的工作薄數(shù)量設(shè)為1
objExl.Workbooks.Add
'增加一個(gè)工作薄
objExl.Sheets(objExl.Sheets.Count).Name = “book1” '修改工作薄名稱
objExl.Sheets.Add , objExl.Sheets(“book1”)'增加第二個(gè)工作薄在第一個(gè)之后
objExl.Sheets(objExl.Sheets.Count).Name = “book2”
objExl.Sheets.Add , objExl.Sheets(“book2”)'增加第三個(gè)工作薄在第二個(gè)之后
objExl.Sheets(objExl.Sheets.Count).Name = “book3”
objExl.Sheets(“book1”).Select
'選中工作薄
For i = 1 To 50
'循環(huán)寫入數(shù)據(jù)
For j = 1 To 5
If i = 1 Then
objExl.Selection.NumberFormatLocal = “@” '設(shè)置格式為文本
objExl.Cells(i, j)= “ E ” & i & j
Else
objExl.Cells(i, j)= i & j
End If
Next
Next
objExl.Rows(“1:1”).Select
'選中第一行
objExl.Selection.Font.Bold = True '設(shè)為粗體
objExl.Selection.Font.Size = 24
'設(shè)置字體大小
objExl.Cells.EntireColumn.AutoFit '自動(dòng)調(diào)整列寬
objExl.ActiveWindow.SplitRow = 1 '拆分第一行
objExl.ActiveWindow.SplitColumn = 0 '拆分列
objExl.ActiveWindow.FreezePanes = True '固定拆分
objExl.ActiveSheet.PageSetup.PrintTitleRows = “$1:$1” '設(shè)置打印固定行
objExl.ActiveSheet.PageSetup.PrintTitleColumns = “"
'打印標(biāo)題
objExl.ActiveSheet.PageSetup.RightFooter = ”打印時(shí)間: “ & _
Format(Now, ”yyyy年mm月dd日 hh:MM:ss“)
objExl.ActiveWindow.View = xlPageBreakPreview
'設(shè)置顯示方式
objExl.ActiveWindow.Zoom = 100
'設(shè)置顯示大小
'給工作表加密碼
objExl.ActiveSheet.Protect ”123“, DrawingObjects:=True, _
Contents:=True, Scenarios:=True
objExl.Application.IgnoreRemoteRequests = False
objExl.Visible = True
'使EXCEL可見
objExl.Application.WindowState = xlMaximized
'EXCEL的顯示方式為最大化
objExl.ActiveWindow.WindowState = xlMaximized
'工作薄顯示方式為最大化
objExl.SheetsInNewWorkbook = 3
'將默認(rèn)新工作薄數(shù)量改回3個(gè)
Set objExl = Nothing
'清除對(duì)象
Me.MousePointer = 0 '修改鼠標(biāo)
Exit Sub
err1:
objExl.SheetsInNewWorkbook = 3
objExl.DisplayAlerts = False '關(guān)閉時(shí)不提示保存
objExl.Quit
'關(guān)閉EXCEL
objExl.DisplayAlerts = True '關(guān)閉時(shí)提示保存
Set objExl = Nothing
Me.MousePointer = 0 End Sub
=====================================
全面控制 Excel
首先創(chuàng)建 Excel 對(duì)象,使用ComObj: Dim ExcelID as Excel.Application Set ExcelID as new Excel.Application
1)顯示當(dāng)前窗口:ExcelID.Visible := True;
2)更改 Excel 標(biāo)題欄:ExcelID.Caption := '應(yīng)用程序調(diào)用 Microsoft Excel';
3)添加新工作簿:ExcelID.WorkBooks.Add;
4)打開已存在的工作簿:ExcelID.WorkBooks.Open('C:ExcelDemo.xls');
5)設(shè)置第2個(gè)工作表為活動(dòng)工作表:ExcelID.WorkSheets[2].Activate;或 ExcelID.WorkSheets[ 'Sheet2' ].Activate;
6)給單元格賦值:ExcelID.Cells[1,4].Value := '第一行第四列';
7)設(shè)置指定列的寬度(單位:字符個(gè)數(shù)),以第一列為例:
ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;
8)設(shè)置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例:
ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035;// 1厘米
9)在第8行之前插入分頁符:
ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;
10)在第8列之前刪除分頁符:
ExcelID.ActiveSheet.Columns[4].PageBreak := 0;
11)指定邊框線寬度:
ExcelID.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左
2-右
3-頂
4-底
5-斜()
6-斜(/)
12)清除第一行第四列單元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;
13)設(shè)置第一行字體屬性:
ExcelID.ActiveSheet.Rows[1].Font.Name := '隸書';ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelID.ActiveSheet.Rows[1].Font.Bold := True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;
14)進(jìn)行頁面設(shè)置:
a.頁眉:ExcelID.ActiveSheet.PageSetup.CenterHeader := '報(bào)表演示';b.頁腳:ExcelID.ActiveSheet.PageSetup.CenterFooter := '第&P頁';c.頁眉到頂端邊距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.頁腳到底端邊距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.頂邊距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底邊距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;g.左邊距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右邊距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.頁面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;j.頁面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;k.打印單元格網(wǎng)線:ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;
15)拷貝操作:
a.拷貝整個(gè)工作表:ExcelID.ActiveSheet.Used.Range.Copy;b.拷貝指定區(qū)域:ExcelID.ActiveSheet.Range[ 'A1:E2' ].Copy;c.從A1位置開始粘貼:ExcelID.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.從文件尾部開始粘貼:ExcelID.ActiveSheet.Range.PasteSpecial;
16)插入一行或一列:
a.ExcelID.ActiveSheet.Rows[2].Insert;
b.ExcelID.ActiveSheet.Columns[1].Insert;
17)刪除一行或一列:
a.ExcelID.ActiveSheet.Rows[2].Delete;
b.ExcelID.ActiveSheet.Columns[1].Delete;
18)打印預(yù)覽工作表:
ExcelID.ActiveSheet.PrintPreview;
19)打印輸出工作表:
ExcelID.ActiveSheet.PrintOut;
20)工作表保存:
If not ExcelID.ActiveWorkBook.Saved then
ExcelID.ActiveSheet.PrintPreview
End if
21)工作表另存為:
ExcelID.SaveAs('C:ExcelDemo1.xls');22)放棄存盤:
ExcelID.ActiveWorkBook.Saved := True;
23)關(guān)閉工作簿:
ExcelID.WorkBooks.Close;
24)退出 Excel:ExcelID.Quit;
25)設(shè)置工作表密碼: ExcelID.ActiveSheet.Protect ”123“, DrawingObjects:=True, Contents:=True, Scenarios:=True
26)EXCEL的顯示方式為最大化
ExcelID.Application.WindowState = xlMaximized
27)工作薄顯示方式為最大化
ExcelID.ActiveWindow.WindowState = xlMaximized
28)設(shè)置打開默認(rèn)工作薄數(shù)量
ExcelID.SheetsInNewWorkbook = 3
29)'關(guān)閉時(shí)是否提示保存(true 保存;false 不保存)ExcelID.DisplayAlerts = False
30)設(shè)置拆分窗口,及固定行位置 ExcelID.ActiveWindow.SplitRow = 1 ExcelID.ActiveWindow.FreezePanes = True
31)設(shè)置打印時(shí)固定打印內(nèi)容
ExcelID.ActiveSheet.PageSetup.PrintTitleRows = ”$1:$1“
32)設(shè)置打印標(biāo)題
ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ”"
33)設(shè)置顯示方式(分頁方式顯示)ExcelID.ActiveWindow.View = xlPageBreakPreview
34)設(shè)置顯示比例
ExcelID.ActiveWindow.Zoom = 100
35)讓Excel 響應(yīng) DDE 請(qǐng)求
Ex.Application.IgnoreRemoteRequests = False
Vb操作excel的命令
1.創(chuàng)建Excel對(duì)象
eole=CREATEOBJECT(′Excel.application′)
2.添加新工作簿
eole.Workbooks.add
3.設(shè)置第3個(gè)工作表為激活工作表
eole.Worksheets(″sheet3″).Activate
4.打開指定工作簿
eole.Workbooks.Open(″c:templl.xls″)
5.顯示Excel窗口
eole.visible=.t.6.更改Excel標(biāo)題欄
eole.Caption=″VFP應(yīng)用程序調(diào)用Microsoft Excel″
7.給單元格賦值
eole.cells(1,4).value=XM(XM為數(shù)據(jù)庫字段名)
8.設(shè)置指定列的寬度(單位:字符個(gè)數(shù))
eole.ActiveSheet.Columns(1).ColumnWidth=5
9.設(shè)置指定行的高度(單位:磅)
eole.ActiveSheet.Rows(1).RowHeight=1/0.035
(設(shè)定行高為1厘米,1磅=0.035厘米)
10.在第18行之前插入分頁符
eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1
11.在第4列之前刪除分頁符
eole.ActiveSheet.Columns(4).PageBreak=0
12.指定邊框線寬度(Borders參數(shù)如下)
ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3
13.設(shè)置四個(gè)邊框線條的類型
eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1
(其中Borders參數(shù):1-左、2-右、3-頂、4-底、5-斜、6-斜/;LineStyle值:1與7-細(xì)實(shí)、2-細(xì)虛、4-點(diǎn)虛、9-雙細(xì)實(shí)線)
14.設(shè)置頁眉
eole.ActiveSheet.PageSetup.CenterHeader=″報(bào)表1″
15.設(shè)置頁腳
eole.ActiveSheet.PageSetup.CenterFooter=″第&P頁″
16.設(shè)置頁眉到頂端邊距為2厘米
eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035
17.設(shè)置頁腳到底邊距為3厘米
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035
18.設(shè)置頂邊距為2厘米
eole.ActiveSheet.PageSetup.TopMargin=2/0.035
19.設(shè)置底邊距為4厘米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035
20.設(shè)置左邊距為2厘米
veole.ActiveSheet.PageSetup.LeftMargin=2/0.035
21.設(shè)置右邊距為2厘米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035
22.設(shè)置頁面水平居中
eole.ActiveSheet.PageSetup.CenterHorizontally=.t.23.設(shè)置頁面垂直居中
eole.ActiveSheet.PageSetup.CenterVertically=.t.24.設(shè)置頁面紙張大小(1-窄行8511 39-寬行1411)
eole.ActiveSheet.PageSetup.PaperSize=1
25.打印單元格網(wǎng)線
eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷貝整個(gè)工作表
eole.ActiveSheet.UsedRange.Copy
27.拷貝指定區(qū)域
eole.ActiveSheet.Range(″A1:E2″).Copy
28.粘貼
eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial
29.在第2行之前插入一行
eole.ActiveSheet.Rows(2).Insert
30.在第2列之前插入一列
eole.ActiveSheet.Columns(2).Insert
31.設(shè)置字體
eole.ActiveSheet.Cells(2,1).Font.Name=″黑體″
32.設(shè)置字體大小
eole.ActiveSheet.Cells(1,1).Font.Size=25
33.設(shè)置字體為斜體
eole.ActiveSheet.Cells(1,1).Font.Italic=.t.34.設(shè)置整列字體為粗體
eole.ActiveSheet.Columns(1).Font.Bold=.t.35.清除單元格公式
eole.ActiveSheet.Cells(1,4).ClearContents
36.打印預(yù)覽工作表
eole.ActiveSheet.PrintPreview
37.打印輸出工作表
eole.ActiveSheet.PrintOut
38.工作表另為
eole.ActiveWorkbook.SaveAs(″c:temp22.xls″)
39.放棄存盤
eole.ActiveWorkbook.saved=.t.40.關(guān)閉工作簿
eole.Workbooks.close
41.退出Excel eole.quit
下載vb操作EXCEL表的常用方法(共五則范文).doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
網(wǎng)址:http://004km.cn/a1/2019051123/3856f9bd4b199f91.html
聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。
二0一一年度縣(區(qū))綜治暨平安建設(shè)檢查考核操作表(一) 縣區(qū): 檢查考核時(shí)間:2011年12月 日 單位 項(xiàng)目 檢查內(nèi)容、方法 1、綜治和平安建設(shè)在黨政綜合考核總分不低于10%(查縣區(qū)委正式......
EXCEL VBA工作表操作全能方法小結(jié) [示例04-01]增加工作表(Add方法) Sub AddWorksheet() MsgBox "在當(dāng)前工作簿中添加一個(gè)工作表" Worksheets.Add MsgBox "在當(dāng)前工作簿......
EXCELVBA工作表操作全能方法小結(jié)[示例04-01]增加工作表(Add方法) SubAddWorksheet() MsgBox"在當(dāng)前工作簿中添加一個(gè)工作表" Worksheets.Add MsgBox"在當(dāng)前工作簿中的工作表......
一、基本操作題 在名稱為Forml,標(biāo)題為“輸入”、最大化按鈕不可用的窗體上畫1個(gè)名稱為Framel的框架控件,其標(biāo)題為“選擇性別”;再向框架內(nèi)畫兩個(gè)名稱分別為Optionl和Option......
Vb對(duì)excel操作的實(shí)例 最近,由于工作關(guān)系,我用vb6.0做了一個(gè)計(jì)算成績的軟件,由于我不會(huì)數(shù)據(jù)庫技術(shù),同行對(duì)excel應(yīng)用又比較普遍,所以就用vb6.0操作excel完成了成績統(tǒng)計(jì)的任務(wù)。 先......
提高VB程序設(shè)計(jì)教學(xué)質(zhì)量方法淺析 —— 長春分中心 長春大學(xué) 邊晶 VB程序設(shè)計(jì)這門課一般都是面向全校文科學(xué)生開設(shè)的,學(xué)生人數(shù)較多、層次差異也較大,教學(xué)存在一定的困難。通過......
一、 DDL數(shù)據(jù)定義語言 1. 創(chuàng)建表:create table 表名要求: 1.必須以字母開頭 2.必須在1-30個(gè)字符之間 3.必須只能包含A-Z,a-z,0-9,$,_,# 4.必須不能和用戶定義的其他對(duì)象重名 5......
以下情況會(huì)漲1、均線沒有壓力或者均線有支撐 2、資金量剛介入 3、陽線剛升起投資策略(思路)一、投資啟動(dòng)形態(tài)的個(gè)股,盈利2%就走。 投資方案原理:個(gè)股升跌有其慣性決定,處于漲勢狀態(tài),短......