为您推荐:
精华内容
最热下载
问答
  • 5星
    5.47MB zhangjin7422 2021-01-28 10:18:50
  • 5星
    1.45MB zhangjin7422 2021-04-07 09:24:30
  • 5星
    49KB weixin_58444518 2021-05-21 11:46:39
  • 323KB szscluoyifang 2013-03-02 11:35:40
  • 4KB qaz2013001 2013-01-31 22:21:19
  • 4星
    2KB ruanguohan 2008-09-25 18:38:39
  • 4星
    6KB benandpao 2012-02-18 08:37:26
  • 4星
    143KB sm8350 2009-06-09 15:53:55
  • 77KB t12440 2009-03-11 12:47:09
  • 7.04MB sino222 2012-09-27 11:23:18
  • 24KB super115 2015-04-07 20:59:17
  • 396KB btqyxz 2013-07-22 08:29:31
  • 4星
    3KB beginvfp 2009-02-11 20:31:57
  • 4星
    427KB lauryn2011 2011-01-18 16:47:06
  • 4KB ayliang 2008-02-02 21:44:05
  • 1.66MB siaswjf 2012-08-02 09:23:05
  • 4星
    4KB wen_enroll 2009-05-27 13:46:43
  • 4星
    7KB mokton 2009-04-11 19:36:18
  • VB是常用的应用软件开发工具之一...但由于VBEXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。 一、 VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: ...

    VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
    一、 VB读写EXCEL表:
    VB本身提自动化功能可以读写EXCEL表,其方法如下:
    1、在工程中引用Microsoft Excel类型库:
    从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。
    2、在通用对象的声明过程中定义EXCEL对象:
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.WorkBook
    Dim xlSheet As Excel.Worksheet
    3、在程序中操作EXCEL表常用命令:
    Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
    Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件
    xlApp.Visible = True '设置EXCEL对象可见(或不可见)
    Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表
    xlApp.Cells(row, col) =值 '给单元格(row,col)赋值
    XLApp.Cells(i, 1).Interior.ColorIndex = i'设计单元格颜色i=1--56
    xlSheet.PrintOut '打印工作表
    xlBook.Close (True) '关闭工作簿
    xlApp.Quit '结束EXCEL对象
    Set xlApp = Nothing '释放xlApp对象
    xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏
    xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
    自己用代码就可以获取颜色列表了 
    Sub yansecode() 
    For i = 1 To 56 
    XlApp.Cells(i, 1) = i 
    xlapp.Cells(i, 1).Interior.ColorIndex = i 
    Next 
    End Sub
    4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。
    二、 EXCEL的宏功能:
    EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。
    三、 VB与EXCEL的相互勾通:
    充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:
    在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。
    四、举例:
    1、在VB中,建立一个FORM,在其上放置两个命令按钮,将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:\temp\excel.bz") = "" Then '判断EXCEL是否打开
    Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
    xlApp.Visible = True '设置EXCEL可见
    Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") '打开EXCEL工作簿
    Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
    xlApp .Activate '激活工作表
    xlApp .Cells(1, 1) = "abc" '给单元格1行驶列赋值
    xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL中的启动宏
     Else
    MsgBox ("EXCEL已打开") 
     End If
    End Sub
    Private Sub Command2_Click()
     If Dir("D:\temp\excel.bz") <> "" Then '由VB关闭EXCEL 
    xlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏
    xlBook.Close (True) '关闭EXCEL工作簿 
    xlApp.Quit '关闭EXCEL
     End If
     Set xlApp = Nothing '释放EXCEL对象
     End
    End Sub
    2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。
    3、在"bb.xls"中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:
    Sub auto_open()
     Open "d:\temp\excel.bz" For Output As #1 '写标志文件
     Close #1
    End Sub
    Sub auto_close()
     Kill "d:\temp\excel.bz" '删除标志文件
    End Sub
    4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了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
    '建立需要的对象
    Set xlApp = New Excel.Application
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("F:\BOOK1.xls")
    Set xlSheet = xlBook.Worksheets(1)
    '建立Chart 对象
    Set xlChar = xlApp.Charts.Add()
    xlChar.ChartType = xlLineMarkers
    Call xlChar.SetSourceData(xlSheet.Range("A1:E7"), xlColumns) '原数据
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
    ActiveChart.HasLegend = True
    ActiveChart.Legend.Select
    Selection.Position = xlRight
    '选中建立的ChartObjects对象
    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) = "关闭" 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应用程序中的从属对象、以及这些对象的属性和方法。例如:
    Set xlApp = CreateObject("Excel.Application")
    ‘激活EXCEL应用程序
    xlApp.Visible = False ‘隐藏EXCEL应用程序窗口
    Set xlBook = xlApp.Workbooks.Open(strDestination)
    ‘打开工作簿,strDestination为一个EXCEL报表文件
    Set xlSheet = xlBook.Worksheets(1)
    ‘设定工作表
    VB借助EXCEL实现表格设计
    1、定义EXCEL对象变量
    dim x as excel.application
    2、VB中,启动EXCEL
    set x=createobject("excel.application")
    3、新建一个EXCEL工作簿
    x.workbooks.add
    4、选定工作表1
    set xsheet=xbook.worksheets(1)
    5、指定单元格,并赋值
    xsheet.cell(1,1)=ret.fields(0)
    6、指定EXCEL列宽
    xsheet.column(1).columnwidth=10
    7、RANGE()函数,选定单元格区域
    range(cells(1,1),cells(10,20))
    8、设置EXCEL字体
    xsheet.range(cells(1,1),cells(10,20)).font.name="黑体"
    9、设置EXCEL为粗体
    xsheet.range(cells(1,1),cells(10,20)).fontbold=true
    10、设置EXCEL表格边框
    xsheet.range(cells(1,1),cells(10,20)).borders.linestyle=xlcontinuous
    11、运行时,显示EXCEL或隐藏EXCEL
    x.visible=true
    12、保存工作簿
    xbook save
    13、退出EXCEL
    x.quit
    14、交还控制权给EXCEL
    set x=nothing
    15、打印EXCEL表
    x.active.window.selectedsheets.printout copies=numcopies
    16、退出EXCEL时,不出现保存提示。
    x.displayalerts=false
    17、怎样运用EXCEL公式?
    x.range("A3").formula= "=max(A1,A2)"
    18、EXCEL代码获取技巧
    打开EXCEL中的工具----宏----录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。
    19、合并单元格代码
    x.range("A2:A5").inergecells=true
    20、自动调整列宽代码
    x.column("A:I").autofit ' a到 I列自动调整列宽
    21、文本自动换行代码
    x.rows(3).wraptext=true
    22、设置字体颜色
    x.rows(1).font.colorindex=4
    23、打印预览代码
    x.worksheets.printpreview
    24、打开EXCEL文件
    x.workbooks.open filename:="c:\my documents\my vb \lgx \dy.xls"
    ========================================================================================
    如何用VB控制EXCEL生成报表
    做为一种简捷、系统的 Windows应用程序开发工具,Visual Basic 6 具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。但是,VB缺乏足够的、符合中文习惯的数据表格输出功能,虽然使用Crystal Report控件及 Crystal Reports程序可以输出报表,但操作起来很麻烦,中文处理能力也不理想。Excel作为Micorsoft公司的表格处理软件在表格方面有着强大的功能,我们可用VB5编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel 2000 的控制句柄,从而直接控制Excel 2000的一系列操作。
    下面给出一个实例:
    首先建立一个窗体(FORM1)在窗体中加入一个DATA控件和一按钮,引用Microsoft Excel类型库:
    从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library;选择"确定"。
    然后在FORM的LOAD事件中加入:
    Private Sub Form_Load()'数据库及表可以另选,本文以Nwind.mdb为例
    Data1.DatabaseName = "C:\Program Files\Microsoft Visual Studio\VB98\Nwind.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 '记录总数
    Icolcount = .Fields.Count '字段总数
    ReDim Fieldlen(Icolcount)
    .MoveFirst
    For Irow = 1 To Irowcount + 1
    For Icol = 1 To Icolcount
    Select Case Irow
    Case 1 '在Excel中的第一行加标题
    xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1).Name
    Case 2 '将数组FIELDLEN()存为第一条记录的字段长
    If IsNull(.Fields(Icol - 1)) = True Then
    Fieldlen(Icol) = LenB(.Fields(Icol - 1).Name)
    '如果字段值为NULL,则将数组Filelen(Icol)的值设为标题名的宽度
    Else
    Fieldlen(Icol) = LenB(.Fields(Icol - 1))
    End If
    xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)
    'Excel列宽等于字段长
    xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)
    '向Excel的CellS中写入字段值
    Case Else
    Fieldlen1 = LenB(.Fields(Icol - 1))
    If Fieldlen(Icol) < Fieldlen1 Then
    xlSheet.Columns(Icol).ColumnWidth = Fieldlen1
    '表格列宽等于较长字段长
    Fieldlen(Icol) = Fieldlen1
    '数组Fieldlen(Icol)中存放最大字段长度值
    Else
    xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)
    End If
    xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)
    End Select
    Next
    If Irow <> 1 Then
    If Not .EOF Then .MoveNext
    End If
    Next
    With xlSheet
    .Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Name = "黑体"
    '设标题为黑体字
    .Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Bold = True
    '标题字体加粗
    .Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous
    '设表格边框样式
    End With
    xlApp.Visible = True '显示表格
    xlBook.Save '保存
    Set xlApp = Nothing '交还控制给Excel
    End With
    End Sub
    本程序在中文Windows98、中文VB6下通过。
     
    ===================================================
    VB5.0调用Office97技巧
    Visual Basic 5.0具有简单、易学等特点,深受初学者的欢迎,但也有一些不如人意的地方。例如,不能像Word 97那样进行拼写检查,不能像Excel 97那样具有很多的函数。如果我们能将Word 97和Exce l97的功能使用在Visual Basic 5.0中,就可以使VB达到锦上添花的目的。
    我们知道所有Office 97 应用程序都提供了ActiveX对象,我们可以在Visual Basic 5.0中使用它们调用Word 97
    要想在VB中调用Word 97,首先要打开VB的"工程"菜单中的"引用"项目,并在该项目对话框中选定"Microsoft Word 8.0 Object Library"就可以了。
    下面我们举例说明调用Word 97中的"拼写检查"和"单词统计"功能。首先新建一个工程并在窗体上放置一个TextBox控件和两个CommandButton控件,然后添入如下的代码:
     Option Explicit
     Dim Doc As New Document
     Dim Visi As Boolean
    ′拼写检查
     Private Sub Command1-Click()
     Form1.Caption = "拼写检查"
     Doc.Range.Text = Text1
    ′确定范围
     Doc.Application.Visible = True ′将Word 97变为可见
     AppActivate Doc.Application.Caption
    ′激活Word 97
     Doc.Range.CheckSpelling
    ′拼写检查
     Text1 = Doc.Range.Text
     Text1 = Left(Text1, Len(Text1) - 1)
     AppActivate Caption
     End Sub
     ′统计单词数
     Private Sub Command2-Click()
     Dim Dlg As Word.Dialog
     Doc.Range = Text1.Text
     Set Dlg = Doc.Application.Dialogs
     (wdDialogDocumentStatistics)
     Dlg.Execute ′统计单词和字符
     Form1.Caption ="单词数:" & Str(Dlg.Words) & "词"
     & Str(Dlg.Characters) & "字符" ′显示统计结果
     End Sub
    Top
    范例三
     Private Sub Form-Load()
     Form1.Caption ="调用Word 97"
     Text1.Text = ""
     Command1.Caption = "拼写检查"
     Command2.Caption = "统计单词"
     ′使应用程序可见
     Visi = Doc.Application.Visible
     End Sub
     ′关闭应用程序
     Private Sub Form-Unload(Cancel As Integer)
     If Visi Then ′关闭文件
     Doc.Close savechanges:=False
     Else
     Doc.Application.Quit savechanges:=False ′关闭 Word 97
     End If
     End Sub
    调用Excel 97
    使用Excel Sheet对象的技术可以处理可变数量的数据,并将结果最后送到你的Visual Basic 应用程序中。例子如下:
    新建一个工程并在新建的窗体上放置两个TextBox控件和一个CommandButton控件及六个Label控件。建设中的窗体如图2所示。
    程序代码如下:
     Option Explicit
     Private Sub Command1-Click()
     Dim xObject As Object
     ′调用Excel 97
     Set xObject = CreateObject("Excel.Sheet")
     Set xObject = xObject.Application.ActiveWorkbook.ActiveSheet
     xObject.Range("A1").Value = Text1.Text ′将数值送入Excel 97的A1单元格
     xObject.Range("A2").Value = Text2.Text ′将数值送入Excel 97的A2单元格
     xObject.Range("A3").Formula = "=MAX(A1,A2)" ′将最大值送入A3单元格
     xObject.Range("A4").Formula = "=ATAN(A1/A2)*180/PI()" ′将反正切值送入A4单元格
     ′显示计算的结果
     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
    该程序的作用是:首先在两个文本框(Text1和Text2)输入数值并分别将输入的数值送入Excel 97的"A1"和"A2"单元格中,然后用Excel 97中的"Max()"函数将计算的结果送入"A3" 单元格中;用反正切函数"ATAN()"进行计算并将结果送入"A4" 单元格中,最后输出。
    <table border="0" width="100%" cell
     
    ===================================================
    浅谈Excel 的VB编程
    Excel是一个优秀的电子表格软件,如果你编的程序需要以报表的形式显示最终结果,它会是个不错的选择。你可以通过VB控制Excel显示数据表格。如果你不愿意深入了解Excel这些琐碎的细节,也不是没有权宜之计:你可以打开Excel中的工具→宏→录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。这样得到的程序一般都能正常运行,但其中的宏代码往往不够简洁,效率和可读性都不高。
    ---- Excel编程碰到的第一个问题是表头。有时表头的形式比较复杂,需要横向或纵向合并单元格。请放心,只要没有斜杠,Excel都能应付得了。
    ---- 例如合并A2~A5这4个单元格,你录制的宏代码会是这样:
    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 就可以解决问题。
    ---- 表头形式定了,再就是表头的内容。如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会"越境"进入右边那个空白单元格,很不美观。这个问题可以通过在程序中设置列宽加以解决。
    ---- Columns(14).columnwidth=12 '设置第14列列宽为12(缺省列宽为8.38)
    ---- 如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行
    ---- Columns("a:i").autofit 'a到i列自动调整列宽
    ---- 让Excel随机应变吧。
    ---- 但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。要是能保持默认列宽,让文本自动换行就好了。没问题,Excel包你满意。
    ---- Rows(3).WrapText=True '让第三行各单元格中的文本自动换行
    ---- 不过你最好再加一句 Rows(3) .VerticalAlignment = xlTop 让表头自动向上对齐,这样比较符合习惯。
    ---- 你还可以给表头打上底色,让你的读者不至于看了打哈欠。
    ---- Rows(2). Interior .ColorIndex = 5 '设置第2行底色为蓝色
    ---- 再给表格的标题上色,这样更醒目一点。
    ---- Rows(1).Font.ColorIndex=4
    ---- 表头完成后该填数据了,一个一个地填实在是太慢了,如果你的数据是存放在一个二维数组中,那问题就简单多了。
    Dim Data(3,4)
    ………… '数据处理
    Range("a2:d4").Value=Data
    ---- 这样可以一次填入一个表的所有数据,够快了吧!不过提醒一句,Range对象大小最好与数组匹配,小了无法显示所有数据,大了则会在空白单元格只填入"N/A"表示没有取得数据。
    ---- 如果需要在结果中显示多个同样规格的数据表,想在Range对象中加入循环变量,这也好办。
    Dim cell11,cell2
    Dim Data(3,4)
    …………
    For I =1 to 40
    ………… '数据处理
    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
    ---- 表格填完了,现在该打表格线了,以下几条语句可以满足你的要求:
    With Worksheets("Sheet1").Range(cell1,cell2).borders
    .LineStyle=xlContinuous
    .weight=xlThin
    End With
    ---- 好了,关于Excel的VB编程今天就讲到这儿吧。
     
    ===================================================
    如何將Excel的文件导入Access文件?
    下面我已程序代码做成模块,只要导入必要之参数即可!
    此一模块共有四个参数:
    1、sSheetName:要导出资料的文件名称 (Sheet name),例如 Sheet1
    2、sExcelPath:要导出资料的 Excel 档案路径名称 (Workbook path),例如 C:\book1.xls
    3、sAccessTable:要导入的 Access Table 名称,例如 TestTable
    4、sAccessDBPath:要导入的 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 导入 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:\temp\book2.xls"
    'Microsoft.Jet.OLEDB.4.0 方式,(建议)
    adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.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)
     
    VB操作excel
    全面控制Excel  
      首先创建Excel对象,使用ComObj:  
      DimExcelIDasExcel.Application  
      SetExcelIDasnewExcel.Application  
      1)显示当前窗口:  
      ExcelID.Visible:=True;  
      2)更改Excel标题栏:  
      ExcelID.Caption:='应用程序调用MicrosoftExcel';  
      3)添加新工作簿:  
      ExcelID.WorkBooks.Add;  
      4)打开已存在的工作簿:  
      ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');  
      5)设置第2个工作表为活动工作表:  
      ExcelID.WorkSheets[2].Activate;  
    或ExcelID.WorkSheets['Sheet2'].Activate;  
      6)给单元格赋值:  
    ExcelID.Cells[1,4].Value:='第一行第四列';  
      7)设置指定列的宽度(单位:字符个数),以第一列为例:  
    ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;  
      8)设置指定行的高度(单位:磅)(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)设置第一行字体属性:  
      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)进行页面设置:  
      a.页眉:  
      ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示';  
      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.打印单元格网线:  
      ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;  
      15)拷贝操作:  
      a.拷贝整个工作表:  
      ExcelID.ActiveSheet.Used.Range.Copy;  
      b.拷贝指定区域:  
      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)打印预览工作表:  
      ExcelID.ActiveSheet.PrintPreview;  
      19)打印输出工作表:  
      ExcelID.ActiveSheet.PrintOut;  
      20)工作表保存:  
    IfnotExcelID.ActiveWorkBook.Savedthen  
    ExcelID.ActiveSheet.PrintPreview  
    Endif  
      21)工作表另存为:  
      ExcelID.SaveAs('C:\Excel\Demo1.xls');  
      22)放弃存盘:  
    ExcelID.ActiveWorkBook.Saved:=True;  
      23)关闭工作簿:  
    ExcelID.WorkBooks.Close;  
      24)退出Excel:  
      ExcelID.Quit;  
      25)设置工作表密码:  
      ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Contents:=True,Scenarios:=True  
      26) EXCEL的显示方式为最大化  
      ExcelID.Application.WindowState=xlMaximized  
      27)工作薄显示方式为最大化  
      ExcelID.ActiveWindow.WindowState=xlMaximized  
      28)设置打开默认工作薄数量  
      ExcelID.SheetsInNewWorkbook=3  
      29)'关闭时是否提示保存(true保存;false不保存)  
      ExcelID.DisplayAlerts=False  
      30)设置拆分窗口,及固定行位置  
      ExcelID.ActiveWindow.SplitRow=1  
      ExcelID.ActiveWindow.FreezePanes=True  
      31)设置打印时固定打印内容  
      ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"  
      32)设置打印标题  
      ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""
      33)设置显示方式(分页方式显示)  
      ExcelID.ActiveWindow.View=xlPageBreakPreview  
      34)设置显示比例  
      ExcelID.ActiveWindow.Zoom=100  
      35)让Excel响应DDE请求  
      Ex.Application.IgnoreRemoteRequests=False  
     
      用VB操作EXCEL  
      PrivateSubCommand3_Click()  
      OnErrorGoToerr1  
      DimiAsLong  
      DimjAsLong  
      DimobjExlAsExcel.Application'声明对象变量  
      Me.MousePointer=11'改变鼠标样式  
      SetobjExl=NewExcel.Application'初始化对象变量  
      objExl.SheetsInNewWorkbook=1 '将新建的工作薄数量设为1  
      objExl.Workbooks.Add '增加一个工作薄  
      objExl.Sheets(objExl.Sheets.Count).Name="book1" '修改工作薄名称
      objExl.Sheets.Add,objExl.Sheets("book1")‘增加第二个工作薄在第一个之后  
      objExl.Sheets(objExl.Sheets.Count).Name="book2"
      objExl.Sheets.Add,objExl.Sheets("book2")‘增加第三个工作薄在第二个之后  
      objExl.Sheets(objExl.Sheets.Count).Name="book3"

      objExl.Sheets("book1").select'选中工作薄<book1>  
      Fori=1To50 '循环写入数据  
      Forj=1To5  
      If i= 1Then  
     objExl.selection.NumberFormatLocal="@" '设置格式为文本
      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'设为粗体  
    objExl.selection.Font.Size=24'设置字体大小  
    objExl.Cells.EntireColumn.AutoFit '自动调整列宽
      objExl.ActiveWindow.SplitRow=1 '拆分第一行  
    objExl.ActiveWindow.SplitColumn=0 '拆分列  
      objExl.ActiveWindow.FreezePanes=True'固定拆分 
      objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1" '设置打印固定行  
      objExl.ActiveSheet.PageSetup.PrintTitleColumns="" '打印标题 
    objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_  
      Format(Now,"yyyy年mm月dd日hh:MM:ss")  
    objExl.ActiveWindow.View=xlPageBreakPreview '设置显示方式  
    objExl.ActiveWindow.Zoom=100 '设置显示大小  
      objExl.ActiveSheet.PageSetup.Orientation=xlLandscape ‘设置打印方向(横向)  
      '给工作表加密码  
      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  '将默认新工作薄数量改回3个
    SetobjExl=Nothing '清除对象  
    Me.MousePointer=0'修改鼠标  
      ExitSub  
      err1:  
      objExl.SheetsInNewWorkbook=3  
      objExl.DisplayAlerts=False '关闭时不提示保存  
      objExl.Quit'关闭EXCEL  
      objExl.DisplayAlerts=True'关闭时提示保存  
      SetobjExl=Nothing  
      Me.MousePointer=0  
      EndSub 
      数据库管理系统的开发人员经常被编制复杂的报表所困扰,VB的水晶报表可以设计简单的报表,但是设计出的报表缺乏灵活性。我利用VB操作EXCEL2000来生成复杂的报表。
    用VB创建外部EXCEL对象 
    Microsoft Office应用程序提供了一个顶层Application 对象。下面语句显示了对Microsoft Excel的Application 对象的引用,用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。:
    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)
     
    用EXCEL 2000设计报表的模版文件
    EXCEL 2000是一个非常优秀的创建报表的工具。它提供的单元格任意合并、拆分功能基本上能够满足设计复杂报表的要求。它对任意一个单元格的格式随意控制,因此它为设计复杂报表提供了强大的支持。
    根据用户提供的报表,我们可以很快在EXCEL里生成模版文件。模版文件只是为了满足用户多方面的需求而设计的。并且随着时间和实际情况的变化,表格格式有可能需要改变,我们设计一个模版文件可以“以不变应万变”了。在程序里我们不要对模版文件进行操作,我们只需要对模版文件的一个拷贝进行操作就行。程序代码如下:
    Dim strSource, strDestination As String
    strSource = App.Path & "\\Excels\\dangan.xls" 
    strDestination = App.Path & "\\Excels\\Temp.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 "不能打开数据源!", , "提示"
     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
    生成工作表内容
    有了上述两步工作的铺垫,我们只要根据模板的格式给各单元格赋值如:
    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
    打印报表
    生成了工作表后,就可以对EXCEL发出打印指令了。在执行打印操作之前应该对EXCEL临时文件执行一次保存操作,以免在退出应用程序后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'声明对象变量
    Me.MousePointer = 11'改变鼠标样式
    Set objExl = New Excel.Application'初始化对象变量
    objExl.SheetsInNewWorkbook = 1  '将新建的工作薄数量设为1
    objExl.Workbooks.Add  '增加一个工作薄
    objExl.Sheets(objExl.Sheets.Count).Name = "book1"  '修改工作薄名称
    objExl.Sheets.Add , objExl.Sheets("book1") '增加第二个工作薄在第一个之后
    objExl.Sheets(objExl.Sheets.Count).Name = "book2"
    objExl.Sheets.Add , objExl.Sheets("book2") '增加第三个工作薄在第二个之后
    objExl.Sheets(objExl.Sheets.Count).Name = "book3"
    objExl.Sheets("book1").Select '选中工作薄<book1>
    For i = 1 To 50'循环写入数据
    For j = 1 To 5
    If i = 1 Then
    objExl.Selection.NumberFormatLocal = "@"  '设置格式为文本
    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'设为粗体
    objExl.Selection.Font.Size = 24 '设置字体大小
    objExl.Cells.EntireColumn.AutoFit  '自动调整列宽
    objExl.ActiveWindow.SplitRow = 1  '拆分第一行
    objExl.ActiveWindow.SplitColumn = 0'拆分列
    objExl.ActiveWindow.FreezePanes = True'固定拆分
    objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"  '设置打印固定行
    objExl.ActiveSheet.PageSetup.PrintTitleColumns = ""'打印标题
    objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _
    Format(Now, "yyyy年mm月dd日 hh:MM:ss")
    objExl.ActiveWindow.View = xlPageBreakPreview'设置显示方式
    objExl.ActiveWindow.Zoom = 100 '设置显示大小
    '给工作表加密码
    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'将默认新工作薄数量改回3个
    Set objExl = Nothing'清除对象
    Me.MousePointer = 0'修改鼠标
    Exit Sub
    err1:
    objExl.SheetsInNewWorkbook = 3
    objExl.DisplayAlerts = False  '关闭时不提示保存
    objExl.Quit'关闭EXCEL
    objExl.DisplayAlerts = True'关闭时提示保存
    Set objExl = Nothing
    Me.MousePointer = 0
    End Sub
    =====================================
    Visual Basic简称(VB)是设计Windows应用程序强有力的开发工具,“全球绝大多数Windows应用程序都是用VB开发的”; Excel是目前使用最广泛的办公应用软件之一,它具有强大的数学分析与计算功能,包括很多VB没有的求值数学表达式的函数和方法。由于Excel的应用程序对象是外部可创建的对象,所以能从VB应用程序内部来程序化操纵Excel。本文结合自己的实践和体会,谈谈如何在VB6.0应用程序中调用Exce12000,供大家参考。
    一、Excel对象模型
    为了在VB应用程序中调用Excel,必须要了解Excel对象模型。Excel对象模型描述了Excel的理论结构,所提供的对象很多,其中最重要的对象,即涉及VB调用Excel最可能用到的对象有:
    二、调用Excel
    在VB应用程序中调用Excel,实质是将Excel作为一个外部对象来引用,由Excel对象模型提供能从VB应用程序内部来程序化操纵的对象以及相关的属性、方法和事件。
    1、在VB工程中添加对Excel类型库的引用
    为了能从VB应用程序中访问Excel丰富的内部资源,使Excel应用程序运行得更快,需要在VB工程中添加对Excel类型库的引用。具体步骤如下:
    a)从VB5“工程”菜单中选择“引用”;
    b) 在“引用”对话框中选择Excel类型库:"Microsoft Excel9.0 Object Library";
    c)单击左边小方框,使之出现“√”符号;
    d)按“确定”退出。
    注:要想在VB应用程序中调用Excel,你的计算机系统中必须安装Excel。
    2、引用Application对象
    Application对象是Excel对象模型的顶层,表示整个Excel应用程序。在VB应用程序中调用Excel,就是使用Application对象的属性、方法和事件。为此,首先要声明对象变量:
    Dim VBExcel As Object 
    或直接声明为Excel对象:
    Dim VBExcel As Excel.Application 
    在声明对象变量之后,可用CreateObject函数或GetObject函数给变量赋值新的或已存在的Application对象引用。
    a)用CreateObject函数生成新的对象引用:
    Set VBExcel=CreateObject ("Excel.Application") 
    字符串“Excel.Application”是提供Excel应用程序的编程ID,这个变量引用Excel应用程序本身。
    b)用GetO场ect函数打开已存在的对象引用:
    Set AppExcel=GetObject("SAMP.XLS") 
    上面语句打开文件SAMP.XLS。
    3、Application对象常用的属性、方法
    属性、方法 方法 
    Visible属性 取True或False,表明Excel应用程序是否可见。 
    Left,Top属性 Excel窗口的位置; 
    Height, Width属性 Excel窗口的大小; 
    WindowState属性 指定窗口的状态,取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。 
    Quit方法 退出Microsoft Excel; 
    Calculate方法 重新计算所有打开的工作簿、工作表或单元格。 
    Evaluate方法 求值数学表达式并返回结果。 
    示例1:求值数学表达式:
    Dim VBExcel As Object
    Set VBExcel=CreateObject ("Excel.Application")
    X=VBExcel. Evaluate ("3+5*(cos (1/log (99. 9)))") 
    三、使用Excel应用程序
    如前所述,在VB应用程序中调用Excel应用程序,就是使用Application对象的属性、方法和事件。下面分类给出其中常用的属性和方法。
    1、使用工作薄
    Workbook对象代表Excel应用程序中当前打开的一个工作簿,包含在Workbooks集合中。可以通过Workbooks集合或表示当前活动工作簿的Active Workbook对象访问Workbook对象。
    常用的方法有:
    属性、方法 意义 
    Add方法 创建新的空白工作簿,并将其添加到集合中。 
    Open方法 打开工作簿。 
    Activate方法 激活工作簿,使指定工作簿变为活动工作簿,以便作为Active Workbook对象使用。 
    Save方法 按当前路径和名称保存现有工作簿(如是首次保存,则将其保存到缺省名称中,如BOOK1.XLS)。 
    SaveAs方法 首次保存工作簿或用另一名称保存工作簿。 
    Close方法 关闭工作簿。 
    PrintOut方法 打印工作簿,语法为:
    PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)
    可选参数:
     From:打印的起始页号。如省略将从起始位置开始打印。
     To:打印的终止页号。如省略将打印至最后一页。
     Copies:要打印的份数。如省略将只打印一份。
     Preview:如果为True则Excel打印指定对象之前进行打印预览。如果为False,或省略则立即打印该对象。
     Printer:设置活动打印机的名称。
     ToFile:如果为True则打印输出到文件。
     Collate:如果为True则逐份打印每份副本。  
    下面语句将活动工作簿的2到5页打印3份:
    ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 
    示例2:生成、保存、关闭工作簿
    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集合来访问、激活、增加、更名和删除工作表。一个Worksheet对象代表一个工作表。
    常用的属性、方法有:
    属性、方法 意义 
    Worksheets属性 返回Sheets集合。 
    Name属性 工作表更名。 
    Add方法 创建新工作表并将其添加到工作簿中。 
    Select方法 选择工作表。 
    Copy方法 复制工作表。 
    Move方法 将指定工作表移到工作簿的另一位置。 
    Delete方法 删除指定工作表。 
    PrintOut方法 打印工作表。 
    示例3:将C盘工作簿中的工作表复制到A盘工作簿中:
    Dim VBExcel As Excel.Application
    Set VBExcel=CreateObject("Excel.Application")
    With VBExcel
     .Workbooks.Open "C:\Temp\OUTPUT.XLS"
     .Workbooks.Open"A:\OUTPUT1.XLS"
     .Workbooks("OUTPUT.XLS").Sheets ("Sales").Copy
     .Workbooks("OUTPUT1.XLS)
     .Workbooks("OUTPUT1.XLS").Save
     .Workbooks("OUTPUT.XLS").Close
     .Workbooks("OUTPUTI.XLS").Close
     .Quit
    End With 
    3、使用单元范围
    Range对象代表工作表的某一单元格、某一行、某一列、某一选定区域或者某一三维区域。
    常用的属性、方法有:
    属性、方法 意义 
    Range属性 Range (arg)其中arg为A1--样式符号,表示单个单元格或单元格区域。 
    Cells属性 Cells (row, col )(其中row为行号,col为列号)表示单个单元格。 
    ColumnWidth属性 指定区域中所有列的列宽。 
    Rowl3eight属性 指定区域中所有行的行宽。 
    Value属性 指定区域中所有单元格的值(缺省属性)。 
    Formula属性 指定单元格的公式,由A1--样式引用。 
    Select方法 选择范围。 
    Copy方法 将范围的内容复制到剪贴板。 
    C1earContents方法 清除范围的内容。 
    Delete方法 删除指定单元范围。 
    4、使用图表
    Chart对象代表工作簿中的图表。该图表既可为嵌人式图表(包含于ChartObject对象中)也可为分立的图表工作表。
    常用方法有:
    方法 意义
     Add方法 新建图表工作表。返回Chart对象。 
    PrineOut方法 打印图表。 
    ChartWizard方法 修改给定图表的属性,其语法为:
     ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels,
    SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)
    其中:
    Source:包含新图表的源数据的区域。如省略,将修改活动图表工作表或活动工作表中处于选定状态的嵌人式图表。
    Gallery:图表类型。其值可为下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13DBar、x13DColumn, x13DLine, x13DPie、x13 DSurface、xlDoughnut或xlDefaultAutoFormat。
    Format:内置自动套用格式的编号。如省略,将选择默认值。
    P1otBy:指定系列中的数据是来自行(xlRows)还是列(xlColumns)。
    CategoryLabels:表示包含分类标志的源区域内行数或列数的整数。
    SeriesLabels:表示包含系列标志的源区域内行数或列数的整数。
    HasLegend:若指定True,则图表将具有图例。
    Title:图表标题文字。
    CategoryTitle:分类轴标题文字。
    ValueTitle:数值轴标题文字。
    ExtraTitle:三维图表的系列轴标题,或二维图表的第二数值轴标题。 
    可组合使用Add方法和ChartWizard方法,以创建包含工作表中数据的图表工作表。下例基于工作表“Sheetl”中单元格区域“A1:A20”中的数据生成新的折线图并打印。
    With Charts.Add
     .ChartWizard source:=Worksheets ("sheet1").Range ("a1:a20"),gallery:=xlLine, title:=“折线图表”
     .Printout
    End With 
    5、使用Excel工作表函数
    在VB语句中可使用大部分的Excel工作表函数,可通过WorksheetFunction对象调用Excel工作表函数。下面的Sub过程用Min工作表函数求出指定区域中单元格的最小值,并通过消息框显示结果值。
    Sub UseFunction()
    Dim myRange As Range
    Set myRange=Worksheets ("Sheet1").Range("B2:F10")
    answer=Application.WorksheetFunction.Min(myRange)
    MsgBox answer
    End Sub 
    如果使用以区域引用为参数的工作表函数,必须指定一个Range对象。如可用Match工作表函数对A1:A10区域的所有单元格进行搜索。
    Sub FindFirst()
    my Var=Application.WorksheetFunction.Match (9, Worksheets( 1).Range("A1:A10"),0)
    MsgBox myVar
    End Sub 
    要在单元格中插人工作表函数,可将该函数指定为对应于Range对象的Formula属性值。在以下示例中,将当前工作簿Sheetl内A1:B3区域的Formula属性指定为RAND工作表函数(此函数产生二个随机数)。
    Sub InsertFormula()
    Worksheets ("Sheet1" ).Range("A1:B3").Formula="RAND()"
    End Sub 
    以上简要介绍了Excel对象模型中部分对象及其属性和方法,更详细的信息可参阅Excel 2000帮助中的“Microsoft Excel Visual Basic参考”一节的内容。实际上,Microsoft Office家族的Word,PowerPoint, Access和Project等应用程序都可以在VB应用程序中调用,其原理和步骤完全相同,只是其对象模型有所不同而已。
    ---- VB程序中直接调用Excel的格式如下: 
    Private Sub menudy_Click(Index As Integer) 
    \这是一个打印菜单 
    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 编辑器编写我们需要的程序。步骤如下:进入Excel97后,用鼠标点击菜单栏中的“工具”按钮,选择“宏”,再选择“VB 编辑器”。 
    ----“VB编辑器”的编辑界面非常类似于“Visual Basic"的界面。我们可以从它的控件“工程资源管理器”中插入需要的“添加用户窗体、添加模块、添加类模块”,并且从“属性窗口”中加入属性。
    ----例如,我们可以制定一个打印窗体,通过程序来实现数据定位和循环调用打印过程。 
    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 数据表" 
    sql = sql + “ WHERE (((数据表.日期)= 
    #" + TextBox1.Text + “#))" 
    Setdb =OpenDatabase(Application.ThisWorkbook.Path 
    +“cngl.mdb") 
    Set rs = db.OpenRecordset(sql, dbOpenDynaset) 
    If rs.EOF Then 
    MsgBox (“此日期无数据") 
    Exit Sub 
    End If 
    daima1 = rs.Fields(“代码") 
    Sheet1.Range(“e5").Value = rs.Fields(“日期") 
    Sheet1.Range(“f7").Value = rs.Fields(“数据表记录") 
    Sheet1.Range(“d13").Value = rs.Fields(“整数100") 
    Sheet1.Range(“d15").Value = rs.Fields(“整数50") 
    Sheet1.Range(“d17").Value = rs.Fields(“整数10") 
    Sheet1.Range(“d19").Value = rs.Fields(“整数5") 
    Sheet1.Range(“d21").Value = rs.Fields(“整数2") 
    Sheet1.Range(“d23").Value = rs.Fields(“整数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"). 
    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 (“日期输入错误") 
    panduan = False 
    End Sub 
    Private Sub TextBox1_Change() 
    End Sub 
    Private Sub UserForm_Activate() 
    dyxjkc.Top = 30 
    dyxjkc.Left = 230 
    End Sub 
    ----具体的表格画线可以由Excel自动完成,因此简化了VB 编程的步骤,并且节约调试程序和画线定位的时间。 
    这两天编了一个程序,基本功能是从自动站B文件(ACCESS数据库文件)查询当月的日数据生成月简表,调出数据很好实现,程序的核心源码是把这些数据写入一个Excel模板中,这是我以前就想学会的一个功能,但没有好好去找资料,为编这个程序在网上查找了一些资料,只用一小段代码就实现了把数据写入Excel模板中的功能,下面是基本源码,后面附几篇用VB控制的文章,希望对大家有益。(如果大家感兴趣的话,我可以把那个从自动站中调用数据并形成日数据EXCEL文件的源码发上来)
    Dim exl As New Excel.Application 
    Dim book As New Excel.Workbook 
    Dim sheet As New Excel.Worksheet
    '先使用excel制作一个模板 
    Set book = exl.Workbooks.Open("你制作的excel的路径") 
    Set sheet = book.Worksheets(1)
    '在excel的格子中写入你想打印的内容 
    With sheet 
    .Cells(Row, col) = "" 
    End With 
    sheet.PrintOut
    book.Close 
    Set book = Nothing 
    exl.Quit 
    Set exl = Nothing
     
    Excel、Access、VB的结合应用 
    ---- 微软公司的Office系列办公软件相信已是众所周知,其中Excel强大的统计制表功能、Access功能完备的数据处理能力深受众多用户所喜爱。Visual Bsaic更是微软公司又一有力的产品,它简单易学,在Windows编程中的应用十分广泛。本文通过介绍数据处理及复杂表格的打印,来讨论VB与Excel及Access的结合运用。 
    ---- 由于笔者所在的公司员工众多,在进行职工养老保险缴费的计算工作时,若使用劳动局编制的软件(用Foxbase编写),无论是在管理或维护方面均显得力不从心。于是在公司领导的强烈要求下,决定由笔者构思重新编制。基本思路是:1.将所有员工资料输入Access进行处理,以便于维护。2.在Excel中预先制成有表头的空表(Access相对欠缺处理复杂表格的能力),对需要进行金额汇总或其他运算的单元格可直接输入公式。3.在VB中编写程序代码,从Access中提取数据填入Excel对应表格相应的单元格,并输出至打印机。 
    ---- 部分窗体及源程序代码如下: 
    ---- 1.程序主模块 
    ---- 定义Excel、Access对象变量,显示系统启动画面,进入系统主程序界面。强调一下,在编写程序之前须加入对Excel及Access库函数的引用,具体操作是:选择菜单栏'工程'\'引用…',将'可使用的引用'列表框内'Microsoft Access 8.0 Object Library'和 'Microsoft Excel 8.0 Object Library'两项前的复选框标为选中,按"确定"返回。 
    mdsMain.bas 
    '定义数据库记录集及Excel对象变量 
    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 '报表选项 
    [Opt为frmSelreport.frm返回值] 
    Public isYN As Boolean 
    Sub Main() 
    Load frmSplash 
    frmSplash.Show 
    frmSplash.Label2.Caption = 
    " 系统正在加载Access数据库..." 
    Set mydatabase = OpenDatabase("c:\sbda\sbda.mdb") 
    Set myrecordset1 = mydatabase.OpenRecordset 
    ("报表打印(一)") 
    [此处对记录集赋值] 
    …… 
    …… 
    frmSplash.Label2.Caption = 
    " 系统正在加载Excel电子表格..." 
    Set ex = CreateObject("excel.application") 
    Set exwbook = ex.Workbooks.Open("c:\sbda\sbda.xls") 
    Load FrmInput  '将数据输入窗体加载到内存中 
    Unload frmSplash 
    Load FrmMain'将主程序界面加载到内存中 
    End Sub
    ---- 2.报表打印模块 
    ---- 其中ExcelDoForVB1()是一子程序,由prnProess()调用,作用是从Access中提取所需数据资料,填入Excel对应工作表(Worksheet)的相应单元格(Cells)中,然后打印已填入数据的表格;prnProess()则负责实现对VB通用对话框(Commom Dialog)中打印功能的控制。 
    mdlPrint.bas 
    Option Explicit 
    '定义循环计数变量 
    Public nRow As Integer, nCol As 
    Integer, nBtoE As Integer 
    '定义变量接收打印对话框返回值 
    Public BeginPage, EndPage, NumCopies 
    '程序运行时需进行判断的各种标志 
    Public nflag, Flag, ifNum 
    '数据记录集中指针移动数 
    Public PageN As Integer, n As Integer 
    'bar1为进度条 
    Public bar1 As Object
    Sub prnProess() 
    '控制通用对话框打印功能 
    Set bar1 = FrmPrint.PgsBar1 '进度条 
    On Error GoTo errhandle: 
    If Flag = 0 Then '当打印对话框中选"全部"时 
    Select Case Opt'选择需要打印的表格 
    Case 1 
    nflag = 1 
    myrecordset1.MoveFirst 
    myrecordset1.MovePrevious 
    PageN = 1 
    Do While nflag = 1 
    Call ExcelDoForVB1  
    '数据填入Excel单元格打印 
    PageN = PageN + 1 
    Loop 
    Case 2 
    …… 
    …… 
    End Select 
    Else 
    If Flag = 2 Then' 
    当打印对话框中选"页"时 
    If EndPage - BeginPage = 0 Then 
    ifNum = 0 
    Else 
    If EndPage - BeginPage > 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 = (BeginPage - 1) * 
    (49 - 4 + 1) - 1 
    myrecordset1.Move n 
    PageN = BeginPage 
    Call ExcelDoForVB1 
     '数据填入Excel单元格并打印 
    Case 2 
    …… 
    …… 
    End Select 
     Case 1 
    Select Case Opt  
    '选择需要打印的表格 
    Case 1 
    myrecordset1.MoveFirst 
    n = (BeginPage - 1) * 
    (49 - 4 + 1) - 1 
    myrecordset1.Move n 
    PageN = BeginPage 
    For nBtoE = BeginPage To EndPage 
    Call ExcelDoForVB1  
    '填入Excel单元格并打印 
    PageN = PageN + 1 
    Next nBtoE 
    Case 2 
    …… 
    …… 
    End Select 
    End Select 
    End If 
    End If 
    FrmMain.Visible = True 
    Exit Sub 
    errhandle: 
    FrmPrint.Visible = False 
    FrmMain.Visible = True 
    End Sub
    ---- 注意,下段仅通过ExcelDoForVB1()对"报表(一)"的处理,来说明数据填入Excel并打印的整个过程。 
    Sub ExcelDoForVB1()  '打印报表(一) 
    FrmPrint.Visible = True 
    Set exsheet = exwbook.Worksheets("sheet1") 
    ex.Sheets("Sheet1").Select 
    ex.Range("A4:U49").Select 
    ex.Selection.ClearContents 
    ex.Range("A4").Select 
    bar1.Min = 0 
    bar1.Max = 45  
    For nRow = 4 To 49 
    bar1.Value = nRow - 4 '进度显示栏进程 
    myrecordset1.MoveNext 
    If myrecordset1.EOF Then 
    nflag = 0 
    Exit For 
    End If 
    For nCol = 1 To 21 
    exsheet.Cells(nRow, nCol) = 
    myrecordset1.Fields(nCol - 1) 
    Next nCol 
    Next nRow 
    exsheet.Cells(52, 21) = "第 " + CStr(PageN) + " 页" 
    FrmPrint.Visible = False 
    bar1.Value = 0 
    ActiveWindow.SelectedSheets.PrintOut Copies:=NumCopies 
    End Sub
    ---- 虽然本文针对的是大多数已熟练掌握数据库技术,且精通编程之道的朋友们。但笔者认为仍有必要提一提将数据输入Access的过程,因为编出来的软件更多是面向各类普通用户,对他们来说最要紧的是好用,而其间的一系列关联并不想深究。所以设计一个好的输入界面十分有必要,在设计时可以运用VB提供的Data控件,当然若是考虑性能的话还可以用代码直接操纵数据。关于如何使用Data控件访问数据库,在Visual Basic的联机手册(Online book)中有很详细的说明,此处不再赘述。 
    ---- 文中的所有程序在Visual Bsaic5.0中文专业版及Office97中文版中调试通过。 
    ---- 例如合并A2~A5这4个单元格,你录制的宏代码会是这样: 
    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 就可以解决问题。 
    ---- 表头形式定了,再就是表头的内容。如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会“越境”进入右边那个空白单元格,很不美观。这个问题可以通过在程序中设置列宽加以解决。 
    ---- Columns(14).columnwidth=12 ‘设置第14列列宽为12(缺省列宽为8.38) 
    ---- 如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行 
    ---- Columns(“a:i”).autofit ‘a到i列自动调整列宽 
    ---- 让Excel随机应变吧。 
    ---- 但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。要是能保持默认列宽,让文本自动换行就好了。没问题,Excel包你满意。 
    ---- Rows(3).WrapText=True ‘让第三行各单元格中的文本自动换行 
    ---- 不过你最好再加一句 Rows(3) .VerticalAlignment = xlTop 让表头自动向上对齐,这样比较符合习惯。 
    ---- 你还可以给表头打上底色,让你的读者不至于看了打哈欠。 
    ---- Rows(2). Interior .ColorIndex = 5 '设置第2行底色为蓝色 
    ---- 再给表格的标题上色,这样更醒目一点。 
    ---- Rows(1).Font.ColorIndex=4 
    ---- 表头完成后该填数据了,一个一个地填实在是太慢了,如果你的数据是存放在一个二维数组中,那问题就简单多了。 
    Dim Data(3,4)
    ………… ‘数据处理
    Range(“a2:d4”).Value=Data
    ---- 这样可以一次填入一个表的所有数据,够快了吧!不过提醒一句,Range对象大小最好与数组匹配,小了无法显示所有数据,大了则会在空白单元格只填入“N/A”表示没有取 
    用EXCEL来打印报表并生成折线图
    Private Sub PrintFunc() 
    on error goto PrintFunc_Err 
    Dim Ct As Object 
    Set ex = CreateObject("Excel.Application") 
    '增加工作表 
    ex.Workbooks.Add 
    '输出数据 
    ex.Range("A1").Value = "系列1" 
    ex.Range("A2").Value = 8 
    ex.Range("A3").Value = 16 
    ex.Range("A4").Value = 7 
    ex.Range("A5").Value = 22 
    ex.Range("A6").Value = 13 
    ex.Range("A7").Value = 15 
    ex.Range("A8").Value = 11 
    ex.Range("B1").Value = "系列2" 
    ex.Range("B2").Value = 5 
    ex.Range("B3").Value = 6 
    ex.Range("B4").Value = 17 
    ex.Range("B5").Value = 10 
    ex.Range("B6").Value = 3 
    ex.Range("B7").Value = 9 
    ex.Range("B8").Value = 16 
    '设定表格样式 
    ex.Range("A1", "B8").Borders.LineStyle = xlContinuous 
    ex.Cells(, 1).ColumnWidth = 25 
    ex.Cells(, 2).ColumnWidth = 25 
    ’插入折线图 
    Set Ct = ex.Worksheets("sheet1").ChartObjects.Add(0, 130, 350, 250) 
    Ct.Chart.ChartWizard Source:=ex.Worksheets("sheet1").Range("A2:B8"), _ 
    gallery:=xlLine, Title:="New Chart" 
    ex.Visible = True 
    '打印预揽 
    ex.ActiveWindow.SelectedSheets.PrintPreview 
    '关闭EXCEL 
    ex.Visible = False 
    ex.Worksheets("sheet1").ChartObjects.Delete 
    ex.ActiveWorkbook.Close savechanges:=False 
    PrintFunc_Err: 
    Set ex = Nothing 
    Set Ct = Nothing 
    end Sub
     
    在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外部交流。在VisualBasic中制作报表,通常是用数据环境设计器(Data
    EnvironmentDesigner)与数据报表设计器(DataReportDesigner),或者使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
    由于Excel具有自己的对象库,在VisualBasic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。这样实现了VisualBasi应用程序对Excel的控制。本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。
    1)创建Excel对象
    Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用得最多的五个对象。
    (1)Application对象
    Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
    (2)Workbook对象
    Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
    (3)Worksheet对象
    Worksheet对象包含于Workbook对象,表示一个Excel工作表。
    (4)Range对象
    Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
    (5)Cells对象
    Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:
    DimzsbexcelAsExcel.Application
    Setzsbexcel=NewExcel.Application
    zsbexcel.Visible=True
    如要Excel不可见,可使zsbexcel.Visible=False
    zsbexcel.SheetsInNewWorkbook=1
    Setzsbworkbook=zsbexcel.Workbooks.Add
    2)设置单元格和区域值
    要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells属性。
    Withzsbexcel.ActiveSheet
    .Cells(1,2).Value="100"
    .Cells(2,2).Value="200"
    .Cells(3,2).Value="=SUM(B1:B2)"
    .Range("A3:A9")="中国人民解放军"
    EndWith
    要设置单元格或区域的字体、边框,可以利用Range对象或Cells对象的Borders属性和Font属性:
    Withobjexcel.ActiveSheet.Range("A2:K9").Borders'边框设置
    .LineStyle=xlBorderLineStyleContinuous
    .Weight=xlThin
    .ColorIndex=1
    EndWith
    Withobjexcel.ActiveSheet.Range("A3:K9").Font'字体设置
    .Size=14
    .Bold=True
    .Italic=True
    .ColorIndex=3
    EndWith
    通过对Excel单元格和区域值的各种设置的深入了解,可以创建各种复杂、美观、满足需要的、具有自己特点的报表。
    3)预览及打印
    生成所需要的工作表后,就可以对EXCEL发出预览、打印指令了。
    zsbexcel.ActiveSheet.PageSetup.Orientation=xlPortrait'
    设置打印方向
    zsbexcel.ActiveSheet.PageSetup.PaperSize=xlPaperA4'
    设置打印纸的打下
    zsbexcel.Caption="打印预览"'设置预览窗口的
    标题
    zsbexcel.ActiveSheet.PrintPreview'打印预览
    zsbexcel.ActiveSheet.PrintOut'打印输出
    通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,最终进行打印输出。
    为了在退出应用程序后EXCEL不提示用户是否保存已修改的文件,需使用如下语句:
    zsbexcel.DisplayAlerts=False
    zsbexcel.Quit'退出EXCEL
    zsbexcel.DisplayAlerts=True
    如此设计的报表打印是通过EXCEL程序来后台实现的。对于使用者来说,根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。
    4)具体实例
    下面给出一个具体实例,它在window98、VisualBasic6.0、
    MicrosoftOffice97的环境下调试通过。
    在VB中启动一个新的StandardEXE工程,在“工程”菜单的“引用”选项下引用ExcelObjectLibrary然后在Form中添加一个命令按钮cmdExcel最后在窗体中输入如下代码:
    DimzsbexcelAsExcel.Application
    PrivateSubcmdExcel_Click()
    Setzsbexcel=NewExcel.Application
    zsbexcel.Visible=True
    zsbexcel.SheetsInNewWorkbook=1
    Setzsbworkbook=zsbexcel.Workbooks.Add
    Withzsbexcel.ActiveSheet.Range("A2:C9").Borders'边框设置
    .LineStyle=xlBorderLineStyleContinuous
    .Weight=xlThin
    .ColorIndex=1
    EndWith
    Withzsbexcel.ActiveSheet.Range("A3:C9").Font'字体设置
    .Size=14
    .Bold=True
    .Italic=True
    .ColorIndex=3
    EndWith
    zsbexcel.ActiveSheet.Rows.HorizontalAlignment=
    xlVAlignCenter'水平居中
    zsbexcel.ActiveSheet.Rows.VerticalAlignment=
    xlVAlignCenter'垂直居中
    Withzsbexcel.ActiveSheet
    .Cells(1,2).Value="100"
    .Cells(2,2).Value="200"
    .Cells(3,2).Value="=SUM(B1:B2)"
    .Cells(1,3).Value="中国人民解放军"
    .Range("A3:A9")="50"
    EndWith
    zsbexcel.ActiveSheet.PageSetup.Orientation=xlPortrait'
    xlLandscape
    zsbexcel.ActiveSheet.PageSetup.PaperSize=xlPaperA4
    zsbexcel.ActiveSheet.PrintOut
    zsbexcel.DisplayAlerts=False
    zsbexcel.Quit
    zsbexcel.DisplayAlerts=True
    Setzsbexcel=Nothing 
     
     
    Excel表格生成和公式设置十分强大便利,是一个强有力的信息分析与处理工具。Visual Basic是一套可视化、面向对象、事件驱动方式的结构化高级程序设计语言,正成为高效率的Windows应用程序开发工具。 由于微软的努力,Visual Basic应用程序版可作为一种通用宏语言被所有微软可编程应用软件共享。 
     Excel面始之初带有表格处理类软件中功能最强的宏语言,通过单击“工具”菜单中的“宏”,选择宏名来调用宏过程。随后发展至Visual Basic for Application专用版,可制作按钮、复选框、单选钮等控件,赋控件以宏名,单击控件运行宏,事件驱动方式就Click(单击)一种。新近推出的Office97套件中的Excel97,在“工具”菜单中选择“宏”后,就会发现增加了“Visual Basic编辑器”功能。运用这个新增功能,就完全与Visual Basic编程无异了。在菜单栏上单击鼠标右键,选择弹出式菜单中的“控件工具箱”,在“控件工具箱”工具条上,单击待添加的控件按钮,在工作表中将控件拖曳到所需位置和大小,单击鼠标右键选中“属性”设置控件属性后,双击控件就会出现Visual Basic编辑器。选择该控件的一个事件如Click或Change,编写程序。在工作表中操作该控件,如鼠标单击、键入字符等,则触发相应事件,执行相应程序。 
     笔者在Excel97平台,采用Visual Basic应用程序版开发了一套“通用报表分析系统”。该系统用于拥有众多子公司的母公司的每月财务报表合并汇总。所有子公司的统计报表如资产负债表、损益表是由FoxBase编制的财务软件生成的dbf文件,取名为ATV001xx.dbf----xx月份资产负债表,ATV002xx.dbf----xx月份损益表等。一个子公司的所有dbf文件放在一个单独的目录中,如C:\T\palm1,C:\T\palm2等。母公司每月份生成的汇总报表为TTTyymm.xls(yy----年份,mm----月份),它有“资产负债表”、“损益表”等若干工作表组成。每张工作表是由所有子公司相应的dbf文件的相应项目的数据相加而成。只要将dbf文件逐一转化到TTTyymm.xls中去,很容易利用Excel的公式设置功能生成母公司的每张汇总报表。 
    这套系统的关键在于如何将所有dbf文件转换到同一个Excel工作簿中。直接通过“文件”菜单中的“打开”项, 选择文件类型为dBase文件(*.dbf), 可将dbf文件转换到Excel工作簿中,但这工作簿只存转换而来的一张工作表,其他表都自动关闭了。另外,通过“工具”菜单中的“向导”,选择“文件转换”后, 只是将一系列dbf文件转换为一系列xls文件而已。于是采用建立ODBC数据源获取外部数据的办法, 将dbf文件逐一转换到一个Excel工作簿内, 且用Visual Basic for Application将转换过程自动化。只要按一下图1中的“生成报表”按钮, 就能完成所有dbf 文件的转换, 且利用Excel公式自动计算功能完成所有报表的汇总计算。按“显示报表”按钮,选择表名,可以浏览报表数据。 
    具体的方法是: 
    一、 建立ODBC数据源 
    (1) 打开“数据”菜单, 选择“获取外部数据”, 然后单击“新建查询”; 
    (2) 在“选择数据源”对话框中, 双击“<新数据源>”; 
    (3) 出现“创建新数据源”对话框,输入数据源名称, 选择驱动程序如Microsoft dBase Driver(*.dbf), 单击“连接”; 
    (4) 在“ODBC dBase安装”对话框中, 单击“使用当前工作目录”前的复选框, 去掉缺省( , 单击“选定目录(s)”, 选择子公司存放dbf文件的目录如C:\T\palm1, 连按“确定”; 
    (5) 当出现Microsoft Quary对话框时, 单击“关闭”, 退出。不要理会出现的警示信息,因为此时只需建立数据源, 并不需要用Microsoft Query查询数据; 
    (6) 重复上述步骤, 在(4)中改换另一家子公司的目录, 就为另一家子公司建立一个数据源。必须建立所有子公司的数据源。 
    二、手动获取外部数据 
    (1) 单击“数据”,选取“获取外部数据”,单击“新建查询”; 
    (2) 出现“选取数据源”对话框,点中“使用查询向导创建/ 编辑查询”前的复选框,然后双击数据源名,如palm1; 
    (3) 在“查询向导——选择列”对话框中选择一个查询表名,单击 > 键,“查询中用到的列”框内会出现表中所有列名,单击“下一步”; 
    (4) 出现“查询向导——过滤数据”,单击“下一步”; 
    (5) 出现“查询向导——排序顺序”,单击“下一步”; 
    (6) 出现“查询向导——完成”,点中“将数据返回Microsoft Excel”前的单选钮,单击“完成”; 
    (7) 出现“将外部数据返回到Excel”对话框,选中“新建工作表”,按“确定”; 
    (8) 在建立查询的工作簿内新建工作表,并放入转换好的数据。这样就将一个 dbf 文件转换好了。 
    (9)重复上述过程,所有子公司的dbf文件转换到同一个工作簿中。 
    三、 使用VB实现Excel自动获取外部数据 
    (1) 进行手动获取外部数据(1)步骤前,单击“工具”菜单中的“宏”,选择“录制新宏”,在“宏名”的编辑框中键入宏名dbftoxls,按“确定”键; 
    (2) 完成手动获取外部数据(1)-(8)步骤; 
    (3) 单击“工具”菜单中的“宏”,选择“停止录制”。这样就将获取外部数据的过程记录为宏。 
    (4) 编辑dbftoxls宏,加以修改,使它作为Visual Basic模块表中的一个子程序,并设置调用参数。 
    提供的程序如下: 
    `设置初值 
    Const apppath = "c:\my documents\palmxls\" 
    Const modulefile = apppath + "module.xls" 
    Const staticspre = "TTT" 
    Const dbfpre = "ATV00" 
    `调用dbftoxls的模块 
    Private Sub Cmdgeneratetable_Click() 
    Dim staticsfile As String 
    Dim s1 As String 
    Dim s2 As String 
    Dim s3 As String 
    Dim idyes As Integer 
    Dim dbfstring As String 
    On Error GoTo errhandler1 
    idyes = 6 
    s1 = txtyear.Text 
    s1 = Mid(s1, 3, 2) 
    s2 = txtmonth.Text 
    If Len(s2) = 1 Then 
    s2 = "0" + s2 
    End If 
    staticsfile = apppath + staticspre + s1 + s2 + ".xls" 
    If FileLen(staticsfile) > 0 Then 
    choice = MsgBox("该年月报表已存在,是否重新生成?", vbYesNo + vbExclamation + vbDefaultButton1, "") 
    If choice = idyes Then 
    Workbooks.Open FileName:=staticsfile 
    For i = 0 To companynum - 1 
    For j = 0 To tablenum - 1 
    dbfstring = dbfpre + Trim(Str$(j + 1)) + s2 
    sqlstring = sqlstringfunc(dbfstring, fieldlist(), tablefieldnum(j)) 
    Call dbftoxls(s(i, j), sqlstring) 
    Next j 
    Next i 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
    End If 
    End If 
    Exit Sub 
    errhandler1: 
    Select Case Err 
    Case 53 
    Workbooks.Open FileName:=modulefile 
    s3 = s1 + "年" + s2 + "月" 
    Sheets("资产负债表").Range("e4").FormulaR1C1 = "'" + s3 
    ActiveWorkbook.SaveAs FileName:=staticsfile, FileFormat _ 
    :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ 
    False, CreateBackup:=False 
    For i = 0 To companynum - 1 
    For j = 0 To tablenum - 1 
    dbfstring = dbfpre + Trim(Str$(j + 1)) + s2 
    sqlstring = sqlstringfunc(dbfstring, fieldlist(), tablefieldnum(j)) 
    Call dbftoxls(s(i, j), sqlstring) 
    Next j 
    Next i 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
    End Select 
    End Sub 
    `dbftoxls子程序 
    Sub dbftoxls(activesheetname, sqlstring) 
    Sheets(activesheetname).Activate 
    Cells.Select 
    Selection.Clear 
    Range("a1").Select 
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ 
    "ODBC;CollatingSequence=ASCII;DBQ=C:\T\palm1;DefaultDir=C:\T 
    \palm1;Deleted=1;Driver={Microsoft dBase Driver (*.dbf)};DriverId=533;FIL" 
    ), Array( _ 
    "=dBase III;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows= 
    8;PageTimeout=600;SafeTransactions=0;Statistics=0;Threads=3;Use" _ 
    ), Array("rCommitSync=Yes;")), Destination:=Range("A1")) 
    .Sql = Array( sqlstring) 
    .FieldNames = True 
    .RefreshStyle = xlInsertDeleteCells 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .RefreshOnFileOpen = False 
    .HasAutoFormat = True 
    .BackgroundQuery = True 
    .TablesOnlyFromHTML = True 
    .Refresh BackgroundQuery:=False 
    .SavePassword = True 
    .SaveData = True 
    End With 
    End Sub


    vb 判断 已打开的EXCEL表格 是否被关闭
     悬赏分:15 - 提问时间2009-2-12 10:09 问题为何被关闭 
    一个FORM中  有按钮及TEXT若干 
    其中一个按钮可以调用EXCEL
    要求 VB能自动判断  
    1、当EXCEL被打开后  该FORM上 所有控件的Endabled=False
    2、当EXCEL被各种原因关闭后  该FORM上 所有控件的Endabled=True 
    提问者: awpawpak47 - 魔法学徒 一级 
    答复    共 1 条
    检举
    你可以在打开Excel后加入代码,让控件Endabled=False ,再操作完后,释放Excel后再将控件Endabled=True
    比如:
    Dim objExcel As Excel.Application
    Dim objWorkBook As Excel.Workbook

    Set objExcel = CreateObject("Excel.Application")
    Set objWorkBook = objExcel.Workbooks.Open("d:\1.xls") 
    objExcel.Visible = False

    '设置活动工作表
    Dim objSheet As Excel.Worksheet
    Set objSheet = objExcel.Worksheets("sheet1")

    Command2.Endabled=False '等等
    objSheet.Cells(2, 1) = "mather"  '中间操作

    objWorkBook.Save
    objWorkBook.Close

    展开全文
    hljqfl 2019-01-07 17:39:12
  • VB全面控制Excel方法大汇总,共300个: 首先创建 Excel 对象,使用ComObj: Dim ExcelID as Excel.Application Set ExcelID as new Excel.Application 1) 显示当前窗口:ExcelID.Visible := True; 2) 更改 Excel ...

    VB全面控制Excel方法大汇总,共300个:

    首先创建 Excel 对象,使用ComObj:
    Dim ExcelID as Excel.Application
    Set ExcelID as new Excel.Application

    1) 显示当前窗口:ExcelID.Visible := True;

    2) 更改 Excel 标题栏:ExcelID.Caption := '应用程序调用 Microsoft Excel';

    3) 添加新工作簿:ExcelID.WorkBooks.Add;

    4) 打开已存在的工作簿:ExcelID.WorkBooks.Open( 'C:\Excel\Demo.xls' );

    5) 设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate; 
    或 ExcelID.WorkSheets[ 'Sheet2' ].Activate;

    6) 给单元格赋值:ExcelID.Cells[1,4].Value := '第一行第四列';

    7) 设置指定列的宽度(单位:字符个数),以第一列为例:
            ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;

    8) 设置指定行的高度(单位:磅)(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) 设置第一行字体属性:
           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) 进行页面设置:
           a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader := '报表演示';
           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.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;

    15) 拷贝操作:
           a.拷贝整个工作表:ExcelID.ActiveSheet.Used.Range.Copy;
           b.拷贝指定区域: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) 打印预览工作表:
             ExcelID.ActiveSheet.PrintPreview;

    19) 打印输出工作表:
             ExcelID.ActiveSheet.PrintOut;

    20) 工作表保存:
          If not ExcelID.ActiveWorkBook.Saved then
              ExcelID.ActiveSheet.PrintPreview
         End if

    21) 工作表另存为:
             ExcelID.ActiveWorkbook.SaveAs FileName:="C:\Excel\Demo1.xls"

    22) 放弃存盘:
            ExcelID.ActiveWorkBook.Saved := True;

    23) 关闭工作簿:
            ExcelID.WorkBooks.Close;

    24) 退出 Excel:ExcelID.Quit;

    25) 设置工作表密码:
         ExcelID.ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True

    26)  EXCEL的显示方式为最大化
         ExcelID.Application.WindowState = xlMaximized   

    27) 工作薄显示方式为最大化
         ExcelID.ActiveWindow.WindowState = xlMaximized 

    28) 设置打开默认工作薄数量
         ExcelID.SheetsInNewWorkbook = 3

    29) '关闭时是否提示保存(true 保存;false 不保存)
         ExcelID.DisplayAlerts = False 

    30) 设置拆分窗口,及固定行位置
         ExcelID.ActiveWindow.SplitRow = 1
         ExcelID.ActiveWindow.FreezePanes = True

    31) 设置打印时固定打印内容
         ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" 

    32) 设置打印标题
         ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""  

    33) 设置显示方式(分页方式显示)
         ExcelID.ActiveWindow.View = xlPageBreakPreview 

    34) 设置显示比例
         ExcelID.ActiveWindow.Zoom = 100


         Excel 语句集300

    定制模块行为
    (1) Option Explicit '强制对模块内所有变量进行声明
         Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
        Option Compare Text '字符串不区分大小写
        Option Base 1 '指定数组的第一个下标为1
    (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
    (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置
    (4) On Error GoTo 0 '恢复正常的错误提示
    (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示
    (6) Application.ScreenUpdating=False '关闭屏幕刷新
           Application.ScreenUpdating=True '打开屏幕刷新
    (7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能

    工作簿
    (8) Workbooks.Add() '创建一个新的工作簿
    (9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿
    (10) ThisWorkbook.Save '保存工作簿
    (11) ThisWorkbook.close '关闭当前工作簿
    (12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
    (13) ActiveWorkbook.name '返回活动工作薄的名称
    (14) ThisWorkbook.Name ‘返回当前工作簿名称
      ThisWorkbook.FullName ‘返回当前工作簿路径和名称
    (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小
    (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列
    (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化

    工作表
    (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数
    (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性)
    (20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum
    (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前
    (22) ActiveSheet.Move After:=ActiveWorkbook. _
    Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后
    (23) Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2
    (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表1
    (25) ActiveWorkbook.Sheets(i).Name '获取工作表i的名称
    (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines '切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮
    (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示
    (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式
    (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接
    (30) ActiveSheet.PageSetup.Orientation=xlLandscape
    或ActiveSheet.PageSetup.Orientation=2 '将页面设置更改为横向
    (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径
    ActiveSheet.PageSetup.LeftFooter=Application.UserName ‘将用户名放置在活动工作表的页脚

    单元格/单元格区域
    (32) ActiveCell.CurrentRegion.Select
    或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
    '选择当前活动单元格所包含的范围,上下左右无空行
    (33) Cells.Select ‘选定当前工作表的所有单元格
    (34) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的内容
    Selection.ClearContents '清除选定区域内容
    Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式
    (35) Cells.Clear '清除工作表中所有单元格的内容
    (36) ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列
    (37) Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
    Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行
    (38) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中
    Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中
    Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中
    Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中
    注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列
    (39) ActiveWindow.RangeSelection.Value=XX '将值XX输入到所选单元格区域中
    (40) ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数
    (41) Selection.Count '当前选中区域的单元格数
    (42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,””) ‘返回单元格中超级链接的地址并赋值
    (43) TextColor=Range(“A1”).Font.ColorIndex ‘检查单元格A1的文本颜色并返回颜色索引
    Range(“A1”).Interior.ColorIndex ‘获取单元格A1背景色
    (44) cells.count ‘返回当前工作表的单元格数
    (45) Selection.Range(“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格
    (46) Cells.Item(5,”C”) ‘引单元格C5
      Cells.Item(5,3) ‘引单元格C5
    (47) Range(“A1”).Offset(RowOffset:=4,ColumnOffset:=5)
    或 Range(“A1”).Offset(4,5) ‘指定单元格F5
    (48) Range(“B3”).Resize(RowSize:=11,ColumnSize:=3)
    Rnage(“B3”).Resize(11,3) ‘创建B3:D13区域
    (49) Range(“Data”).Resize(,2) ‘将Data区域扩充2列
    (50) Union(Range(“Data1”),Range(“Data2”)) ‘将Data1和Data2区域连接
    (51) Intersect(Range(“Data1”),Range(“Data2”)) ‘返回Data1和Data2区域的交叉区域
    (52) Range(“Data”).Count ‘单元格区域Data中的单元格数
      Range(“Data”). Columns.Count ‘单元格区域Data中的列数
      Range(“Data”). Rows.Count ‘单元格区域Data中的行数
    (53) Selection.Columns.Count ‘当前选中的单元格区域中的列数
    Selection.Rows.Count ‘当前选中的单元格区域中的行数
    (54) Selection.Areas.Count ‘选中的单元格区域所包含的区域数
    (55) ActiveSheet.UsedRange.Row ‘获取单元格区域中使用的第一行的行号
    (56) Rng.Column ‘获取单元格区域Rng左上角单元格所在列编号
    (57) ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions) ‘在活动工作表中返回所有符合条件格式设置的区域
    (58) Range(“A1”).AutoFilter Field:=3,VisibleDropDown:=False ‘关闭由于执行自动筛选命令产生的第3个字段的下拉列表

    名称
    (59) Range(“A1:C3”).Name=“computer” ‘命名A1:C3区域为computer
    或Range(“D1:E6”).Name=“Sheet1!book” ‘命名局部变量,即Sheet1上区域D1:E6为book
    或 Names(“computer”).Name=“robot” ‘将区域computer重命名为robot
    (60) Names(“book”).Delete ‘删除名称
    (61) Names.Add Name:=“ContentList”,_
    RefersTo:=“=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2!$A:$A))” ‘动态命名列
    (62) Names.Add Name:=“Company”,RefersTo:=“CompanyCar” ‘命名字符串CompanyCar
    (63) Names.Add Name:=“Total”,RefersTo:=123456 ‘将数字123456命名为Total。注意数字不能加引号,否则就是命名字符串了。
    (64) Names.Add Name:=“MyArray”,RefersTo:=ArrayNum ‘将数组ArrayNum命名为MyArray。
    (65) Names.Add Name:=“ProduceNum”,RefersTo:=“=$B$1”,Visible:=False ‘将名称隐藏
    (66) ActiveWorkbook.Names(“Com”).Name ‘返回名称字符串

    公式与函数
    (67) Application.WorksheetFunction.IsNumber(“A1”) '使用工作表函数检查A1单元格中的数据是否为数字
    (68) Range(“A:A”).Find(Application.WorksheetFunction.Max(Range(“A:A”))).Activate
    '激活单元格区域A列中最大值的单元格
    (69) Cells(8,8).FormulaArray=“=SUM(R2C[-1]:R[-1]C[-1]*R2C:R[-1]C)” ‘在单元格中输入数组公式。注意必须使用R1C1样式的表达式

    图表
    (70) ActiveSheet.ChartObjects.Count '获取当前工作表中图表的个数
    (71) ActiveSheet.ChartObjects(“Chart1”).Select ‘选中当前工作表中图表Chart1
    (72) ActiveSheet.ChartObjects(“Chart1”).Activate
      ActiveChart.ChartArea.Select ‘选中当前图表区域
    (73) WorkSheets(“Sheet1”).ChartObjects(“Chart2”).Chart. _
    ChartArea.Interior.ColorIndex=2 ‘更改工作表中图表的图表区的颜色
    (74) Sheets(“Chart2”).ChartArea.Interior.ColorIndex=2 ‘更改图表工作表中图表区的颜色
    (75) Charts.Add ‘添加新的图表工作表
    (76) ActiveChart.SetSourceData Source:=Sheets(“Sheet1”).Range(“A1:D5”), _
    PlotBy:=xlColumns ‘指定图表数据源并按列排列
    (77) ActiveChart.Location Where:=xlLocationAsNewSheet ‘新图表作为新图表工作表
    (78) ActiveChart.PlotArea.Interior.ColorIndex=xlNone ‘将绘图区颜色变为白色
    (79) WorkSheets(“Sheet1”).ChartObjects(1).Chart. _
    Export FileName:=“C:MyChart.gif”,FilterName:=“GIF” ‘将图表1导出到C盘上并命名为MyChart.gif

    窗体
    (80) MsgBox “Hello!” '消息框中显示消息Hello
    (81) Ans=MsgBox(“Continue?”,vbYesNo) '在消息框中点击“是”按钮,则Ans值为vbYes;点击“否”按钮,则Ans值为vbNo。
    If MsgBox(“Continue?”,vbYesNo)<>vbYes Then Exit Sub '返回值不为“是”,则退出
    (82) Config=vbYesNo+vbQuestion+vbDefaultButton2 '使用常量的组合,赋值组Config变量,并设置第二个按钮为缺省按钮
    (83) MsgBox “This is the first line.” & vbNewLine & “Second line.” '在消息框中强制换行,可用vbCrLf代替vbNewLine。
    (84) MsgBox "the average is :"&Format(Application.WorksheetFunction.Average(Selection),"#,##0.00"),vbInformation, "selection count average" & Chr(13) '应用工作表函数返回所选区域的平均值并按指定格式显示
    (85) Userform1.Show ‘显示用户窗体
    (86) Load Userform1 ‘加载一个用户窗体,但该窗体处于隐藏状态
    (87) Userform1.Hide ‘隐藏用户窗体
    (88) Unload Userform1 或 Unload Me ‘卸载用户窗体
    (89) (图像控件).Picture=LoadPicture(“图像路径”) ‘在用户窗体中显示图形
    (90) UserForm1.Show 0 或 UserForm1.Show vbModeless ‘将窗体设置为无模式状态
    (91) Me.Height=Int(0.88*ActiveWindow.Height) ‘窗体高度为当前活动窗口高度的0.88
      Me.Width=Int(0.88*ActiveWindow.Width) ‘窗体宽度为当前活动窗口高度的0.88
    事件
    (92) Application.EnableEvents=False '禁用所有事件
        Application.EnableEvents=True '启用所有事件
      注:不适用于用户窗体控件触发的事件

    对象
    (93) Set ExcelSheet = CreateObject("Excel.Sheet") ‘创建一个Excel工作表对象
    ExcelSheet.Application.Visible = True '设置 Application 对象使 Excel 可见
    ExcelSheet.Application.Cells(1, 1).Value = "Data" '在表格的第一个单元中输入文本
    ExcelSheet.SaveAs "C:\TEST.XLS" '将该表格保存到C:\test.xls 目录
    ExcelSheet.Application.Quit '关闭 Excel
    Set ExcelSheet = Nothing '释放该对象变量
    (94) ‘声明并创建一个Excel对象引用
    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)
    (95) ‘创建并传递一个 Excel.Application 对象的引用
    Call MySub (CreateObject("Excel.Application"))
    (96) Set d = CreateObject(Scripting.Dictionary) ‘创建一个 Dictionary 对象变量
    (97) d.Add "a", "Athens" '为对象变量添加关键字和条目

    其他
    (98) Application.OnKey “^I”,”macro” '设置Ctrl+I键为macro过程的快捷键
    (99) Application.CutCopyMode=False ‘退出剪切/复制模式
    (100) Application.Volatile True '无论何时工作表中任意单元格重新计算,都会强制计算该函数
    Application.Volatile False '只有在该函数的一个或多个参数发生改变时,才会重新计算该函数

    定制模块行为
    (101) Err.Clear ‘清除程序运行过程中所有的错误
    *******************************************************
    工作簿
    (102) ThisWorkbook.BuiltinDocumentProperties(“Last Save Time”)
    或Application.Caller.Parent.Parent.BuiltinDocumentProperties(“Last Save Time”) ‘返回上次保存工作簿的日期和时间
    (103) ThisWorkbook.BuiltinDocumentProperties("Last Print Date")
    或Application.Caller.Parent.Parent.BuiltinDocumentProperties(“Last Print Date”) ‘返回上次打印或预览工作簿的日期和时间
    (104) Workbooks.Close ‘关闭所有打开的工作簿
    (105) ActiveWorkbook.LinkSources(xlExcelLinks)(1) ‘返回当前工作簿中的第一条链接
    (106) ActiveWorkbook.CodeName
    ThisWorkbook.CodeName ‘返回工作簿代码的名称
    (107) ActiveWorkbook.FileFormat
    ThisWorkbook.FileFormat ‘返回当前工作簿文件格式代码
    (108) ThisWorkbook.Path
    ActiveWorkbook.Path ‘返回当前工作簿的路径(注:若工作簿未保存,则为空)
    (109) ThisWorkbook.ReadOnly
      ActiveWorkbook.ReadOnly ‘返回当前工作簿的读/写值(为False)
    (110) ThisWorkbook.Saved
    ActiveWorkbook.Saved ‘返回工作簿的存储值(若已保存则为False)
    (111) Application.Visible = False ‘隐藏工作簿
      Application.Visible = True ‘显示工作簿
      注:可与用户窗体配合使用,即在打开工作簿时将工作簿隐藏,只显示用户窗体.可设置控制按钮控制工作簿可见
    *******************************************************
    工作表
    (112) ActiveSheet.Columns("B").Insert ‘在A列右侧插入列,即插入B列
    ActiveSheet.Columns("E").Cut
    ActiveSheet.Columns("B").Insert ‘以上两句将E列数据移至B列,原B列及以后的数据相应后移
    ActiveSheet.Columns("B").Cut
    ActiveSheet.Columns("E").Insert ‘以上两句将B列数据移至D列,原C列和D列数据相应左移一列
    (113) ActiveSheet.Calculate ‘计算当前工作表
    (114) ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetHidden ‘正常隐藏工作表,同在Excel菜单中选择“格式——工作表——隐藏”操作一样
    ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVeryHidden ‘隐藏工作表,不能通过在Excel菜单中选择“格式——工作表——取消隐藏”来重新显示工作表
    ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVisible ‘显示被隐藏的工作表
    (115) ThisWorkbook.Sheets(1).ProtectContents ‘检查工作表是否受到保护
    (116) ThisWorkbook.Worksheets.Add Count:=2, _
    Before:=ThisWorkbook.Worksheets(2)
    或 ThisWorkbook.Workshees.Add ThisWorkbook.Worksheets(2), , 2 ‘在第二个工作表之前添加两个新的工作表
    (117) ThisWorkbook.Worksheets(3).Copy ‘复制一个工作表到新的工作簿
    (118) ThisWorkbook.Worksheets(3).Copy ThisWorkbook.Worksheets(2) ‘复制第三个工作表到第二个工作表之前
    (119) ThisWorkbook.ActiveSheet.Columns.ColumnWidth = 20 ‘改变工作表的列宽为20
    ThisWorkbook.ActiveSheet.Columns.ColumnWidth = _
    ThisWorkbook.ActiveSheet.StandardWidth ‘将工作表的列宽恢复为标准值
    ThisWorkbook.ActiveSheet.Columns(1).ColumnWidth = 20 ‘改变工作表列1的宽度为20
    (120) ThisWorkbook.ActiveSheet.Rows.RowHeight = 10 ‘改变工作表的行高为10
    ThisWorkbook.ActiveSheet.Rows.RowHeight = _
    ThisWorkbook.ActiveSheet.StandardHeight ‘将工作表的行高恢复为标准值
    ThisWorkbook.ActiveSheet.Rows(1).RowHeight = 10 ‘改变工作表的行1的高度值设置为10
    (121) ThisWorkbook.Worksheets(1).Activate ‘当前工作簿中的第一个工作表被激活
    (122) ThisWorkbook.Worksheets("Sheet1").Rows(1).Font.Bold = True ‘设置工作表Sheet1中的行1数据为粗体
    (123) ThisWorkbook.Worksheets("Sheet1").Rows(1).Hidden = True ‘将工作表Sheet1中的行1隐藏
    ActiveCell.EntireRow.Hidden = True ‘将当前工作表中活动单元格所在的行隐藏
    注:同样可用于列。
    (124) ActiveSheet.Range(“A:A”).EntireColumn.AutoFit ‘自动调整当前工作表A列列宽
    (125) ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) ‘选中当前工作表中常量和文本单元格
    ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) ‘选中当前工作表中常量和文本及错误值单元格
    *******************************************************
    公式与函数
    (126) Application.MacroOptions Macro:=”SumPro”,Category:=4 ‘将自定义的SumPro函数指定给Excel中的“统计函数”类别
    (127) Application.MacroOptions Macro:=”SumPro”, _
    Description:=”First Sum,then Product” ‘为自定义函数SumPro进行了功能说明
    (128) Application.WorksheetFunction.CountA(Range(“A:A”))+1 ‘获取A列的下一个空单元格
    (129) WorksheetFunction.CountA(Cell.EntireColumn) ‘返回该单元格所在列非空单元格的数量
    WorksheetFunction.CountA(Cell.EntireRow) ‘返回该单元格所在行非空单元格的数量
    (130) WorksheetFunction.CountA(Cells) ‘返回工作表中非空单元格数量
    (131) ActiveSheet.Range(“A20:D20”).Formula=“=Sum(R[-19]C:R[-1]C”’对A列至D列前19个数值求和
    *******************************************************
    图表
    (132) ActiveWindow.Visible=False
    或 ActiveChart.Deselect ‘使图表处于非活动状态
    (133) TypeName(Selection)=”Chart” ‘若选中的为图表,则该语句为真,否则为假
    (134) ActiveSheet.ChartObjects.Delete ‘删除工作表上所有的ChartObject对象
    ActiveWorkbook.Charts.Delete ‘删除当前工作簿中所有的图表工作表
    *******************************************************
    窗体和控件
    (135) UserForms.Add(MyForm).Show ‘添加用户窗体MyForm并显示
    (136)TextName.SetFocus ‘设置文本框获取输入焦点
    (137) SpinButton1.Value=0 ‘将数值调节钮控件的值改为0
    (138) TextBox1.Text=SpinButton1.Value ‘将数值调节钮控件的值赋值给文本框控件
      SpinButton1.Value=Val(TextBox1.Text) ‘将文本框控件值赋给数值调节钮控件
      CStr(SpinButton1.Value)=TextBox1.Text ‘数值调节钮控件和文本框控件相比较
    (139) UserForm1.Controls.Count ‘显示窗体UserForm1上的控件数目
    (140) ListBox1.AddItem “Command1” ‘在列表框中添加Command1
    (141) ListBox1.ListIndex ‘返回列表框中条目的值,若为-1,则表明未选中任何列表框中的条目
    (142) RefEdit1.Text ‘返回代表单元格区域地址的文本字符串
      RefEdit1.Text=ActiveWindow.RangeSelection.Address ‘初始化RefEdit控件显示当前所选单元格区域
      Set FirstCell=Range(RefEdit1.Text).Range(“A1”) ‘设置某单元格区域左上角单元格
    (143) Application.OnTime Now + TimeValue("00:00:15"), "myProcedure" ‘等待15秒后运行myProcedure过程
    (144) ActiveWindow.ScrollColumn=ScrollBarColumns.Value ‘将滚动条控件的值赋值给ActiveWindow对象的ScrollColumn属性
    ActiveWindow.ScrollRow=ScrollBarRows.Value ‘将滚动条控件的值赋值给ActiveWindow对象的ScrollRow属性
    (145) UserForm1.ListBox1.AddItem Sheets(“Sheet1”).Cells(1,1) ‘将单元格A1中的数据添加到列表框中
    ListBox1.List=Product ‘将一个名为Product数组的值添加到ListBox1中
    ListBox1.RowSource=”Sheet2!SumP” ‘使用工作表Sheet2中的SumP区域的值填充列表框
    (146) ListBox1.Selected(0) ‘选中列表框中的第一个条目(注:当列表框允许一次选中多个条目时,必须使用Selected属性)
    (147) ListBox1.RemoveItem ListBox1.ListIndex ‘移除列表框中选中的条目
    *******************************************************
    对象
    Application对象
    (148) Application.UserName ‘返回应用程序的用户名
    (149) Application.Caller ‘返回代表调用函数的单元格
    (150) Application.Caller.Parent.Parent ‘返回调用函数的工作簿名称
    (151) Application.StatusBar=”请等待……” ‘将文本写到状态栏
    Application.StatusBar=”请等待……” & Percent & “% Completed” ‘更新状态栏文本,以变量Percent代表完成的百分比
    Application.StatusBar=False ‘将状态栏重新设置成正常状态
    (152) Application.Goto Reference:=Range(“A1:D4”) ‘指定单元格区域A1至D4,等同于选择“编辑——定位”,指定单元格区域为A1至D4,不会出现“定位”对话框
    (153) Application.Dialogs(xlDialogFormulaGoto).Show ‘显示“定位”对话框,但定位条件按钮无效
    (154) Application.Dialogs(xlDialogSelectSpecial).Show ‘显示“定位条件”对话框
    (155) Application.Dialogs(xlDialogFormatNumber).show ‘显示“单元格格式”中的“数字”选项卡
    Application.Dialogs(xlDialogAlignment).show ‘显示“单元格格式”中的“对齐”选项卡
    Application.Dialogs(xlDialogFontProperties).show ‘显示“单元格格式”中的“字体”选项卡
    Application.Dialogs(xlDialogBorder).show ‘显示“单元格格式”中的“边框”选项卡
    Application.Dialogs(xlDialogPatterns).show ‘显示“单元格格式”中的“图案”选项卡
    Application.Dialogs(xlDialogCellProtection).show ‘显示“单元格格式”中的“保护”选项卡
    注:无法一次显示带选项卡的“单元格格式”对话框,只能一次显示一个选项卡。
    (156) Application.Dialogs(xlDialogFormulaGoto).show Range("b2"), True ‘显示“引用位置”的默认单元格区域并显示引用使其出现在窗口左上角(注:内置对话框参数的使用)
    (157) Application.CommandBars(1).Controls(2).Controls(16).Execute ‘执行“定位”话框,相当于选择菜单“编辑——定位”命令
    (158) Application.Transpose(Array(“Sun”,”Mon”,”Tur”,”Wed”,”Thu”,”Fri”,”Sat”)) ‘返回一个垂直的数组
    (159) Application.Version ‘返回使用的Excel版本号
    (160) Application.Cursor = xlNorthwestArrow ‘设置光标形状为北西向箭头
    Application.Cursor = xlIBeam ‘设置光标形状为Ⅰ字形
    Application.Cursor = xlWait ‘设置光标形状为沙漏(等待)形
    Application.Cursor = xlDefault ‘恢复光标的默认设置
    (161) Application.WindowState ‘返回窗口当前的状态
      Application.WindowState = xlMinimized ‘窗口最小化
    Application.WindowState = xlMaximized ‘窗口最大化
    Application.WindowState = xlNormal ‘窗口正常状态
    (162) Application.UsableHeight ‘获取当前窗口的高度
    Application.UsableWidth ‘获取当前窗口的宽度
    (163) Application.ActiveCell.Address ‘返回活动单元格的地址(注:返回的是绝对地址)
    (164) Application.ActivePrinter ‘返回当前打印机的名称
    (165) Application.ActiveSheet.Name ‘返回活动工作表的名称
    (166) Application.ActiveWindow.Caption ‘返回活动窗口的标题
    (167) Application.ActiveWorkbook.Name ‘返回活动工作簿的名称
    (168) Application.Selection.Address ‘返回所选区域的地址
    (169) Application.ThisWorkbook.Name ‘返回当前工作簿的名称
    (170) Application.CalculationVersion ‘返回Excel计算引擎版本(右边四位数字)及Excel版本(左边两位数字)
    (171) Application.MemoryFree ‘以字节为单位返回Excel允许使用的内存数(不包括已经使用的内存)
    (172) Application.MemoryUsed ‘以字节为单位返回Excel当前使用的内存数
    (173) Application.MemoryTotal ‘以字节为单位返回Excel可以使用的内存数(包括已使用的内存,是MemoryFree和MemoryUsed的总和)
    (174) Application.OperatingSystem ‘返回所使用的操作系统的名称和版本
    (175) Application.OrganizationName ‘返回Excel产品登记使用的组织机构的名称
    (176) Application.FindFormat ‘查找的格式种类
      Application.ReplaceFormat ‘替换查找到的内容的格式种类
    ActiveSheet.Cells.Replace What:=” “, _
    Replacement:=” “,SearchFormat:=True,ReplaceFormat:=True ‘替换查找到的格式
    (177) Application.Interactive=False ‘忽略键盘或鼠标的输入
    (178) Application.Evaluate("Rate") ‘若在工作表中定义了常量0.06的名称为”Rate”,则本语句将返回值0.06
    (179) Application.OnUndo “Undo Option”,“Undo Procedure” ‘选择UndoOption后,将执行Undo Procedure过程
    *******************************************************
    Range对象
    (180) Range(A1:A10).Value=Application.WorksheetFunction.Transpose(MyArray) ‘将一个含有10个元素的数组转置成垂直方向的工作表单元格区域(A1至A10)
    注:因为当把一维数组的内容传递给某个单元格区域时,该单元格区域中的单元格必须是水平方向的,即含有多列的一行。若必须使用垂直方向的单元格区域,则必须先将数组进行转置,成为垂直的。
    (181) Range(“A65536”).End(xlUp).Row+1 ‘返回A列最后一行的下一行
    (182) rng.Range(“A1”) ‘返回区域左上角的单元格
    (183) cell.Parent.Parent.Worksheets ‘访问当前单元格所在的工作簿
    (184) Selection.Font.Bold=Not Selection.Font.Bold ‘切换所选单元格是否加粗
    (185) ActiveSheet.Range("A:B").Sort Key1:=Columns("B"), Key2:=Columns("A"), _
    Header:=xlYes ‘两个关键字排序,相邻两列,B列为主关键字,A列为次关键字,升序排列
    (186) cell.Range(“A1”).NumberFormat ‘显示单元格或单元格区域中的第一个单元格的数字格式
    (187) cell.Range(“A1”).HasFormula ‘检查单元格或单元格区域中的第一个单元格是否含有公式
    或cell.HasFormula ‘工作表中单元格是否含有公式
    (188) Cell.EntireColumn ‘单元格所在的整列
      Cell.EntireRow ‘单元格所在的整行
    (189) rng.Name.Name ‘显示rng区域的名称
    (190) rng.Address ‘返回rng区域的地址
    (191) cell.Range(“A1”).Formula ‘返回包含在rng区域中左上角单元格中的公式。
    注:若在一个由多个单元格组成的范围内使用Formula属性,会得到错误;若单元格中没有公式,会得到一个字符串,在公式栏中显示该单元格的值。
    (192) Range(“D5:D10”).Cells(1,1) ‘返回单元格区域D5:D10中左上角单元格
    (193) ActiveCell.Row ‘活动单元格所在的行数
      ActiveCell.Column ‘活动单元格所在的列数
    (194) Range("A1:B1").HorizontalAlignment = xlLeft ‘当前工作表中的单元格区域数据设置为左对齐
    (195) ActiveSheet.Range(“A2:A10”).NumberFormat=”#,##0” ‘设置单元格区域A2至A10中数值格式
    (196) rng.Replace “ “,”0” ‘用0替换单元格区域中的空单元格
    *******************************************************
    Collection与object
    (197) Dim colMySheets As New Collection
    Public colMySheets As New Collection ‘声明新的集合变量
    (198) Set MyRange=Range(“A1:A5”) ‘创建一个名为MyRange的对象变量
    (199) <object>.Add Cell.Value CStr(Cell.Value) ‘向集合中添加惟一的条目(即将重复的条目忽略)
    *******************************************************
    Windows API
    (200) Declare Function GetWindowsDirectoryA Lib “kernel32” _
    (ByVal lpBuffer As String,ByVal nSize As Long) As Long ‘API函数声明。返回安装Windows所在的目录名称,调用该函数后,安装Windows的目录名称将在第一个参数lpBuffer中,该目录名称的字符串长度包含在第二个参数nSize中


    (201) Set objExcel = CreateObject("Excel.Application")

    objExcel.Workbooks.Add ‘创建Excel工作簿

    (202) Application.ActivateMicrosoftApp xlMicrosoftWord '开启Word应用程序

    (203) Application.TemplatesPath ‘获取工作簿模板的位置

    (204) Application.Calculation = xlCalculationManual ‘设置工作簿手动计算

       Application.Calculation = xlCalculationAutomatic ‘工作簿自动计算

    (205) Worksheets(1).EnableCalculation = False ‘不对第一张工作表自动进行重算

    (206) Application.CalculateFull '重新计算所有打开的工作簿中的数据

    (207) Application.RecentFiles.Maximum = 5 '将最近使用的文档列表数设为5

    (208) Application.RecentFiles(4).Open '打开最近打开的文档中的第4个文档

    (209) Application.OnTime DateSerial(2006,6,6)+TimeValue(“16:16:16”),“BaoPo” ‘在2006年6月6日的16:16:16开始运行BaoPo过程

    (210) Application.Speech.Speak ("Hello" & Application.UserName) ‘播放声音,并使用用户的姓名问候用户

    (211) MsgBox Application.PathSeparator '获取"\"号

    (212) MsgBox Application.International(xlCountrySetting) '返回应用程序当前所在国家的设置信息

    (213) Application.AutoCorrect.AddReplacement "葛洲坝", "三峡" '自动将在工作表中进行输入的"葛洲坝"更正为"三峡"

    (214) Beep '让计算机发出声音

    (215) Err.Number ‘返回错误代码

    (216) MsgBox IMEStatus '获取输入法状态

    (217) Date = #6/6/2006#

    Time = #6:16:16 AM# '将系统时间更改为2006年6月6日上午6时16分16秒

    (218) Application.RollZoom = Not Application.RollZoom '切换是否能利用鼠标中间的滑轮放大/缩小工作表

    (219) Application.ShowWindowsInTaskba = True ‘显示任务栏中的窗口,即各工作簿占用各自的窗口

    (220) Application.DisplayScrollBars = True ‘显示窗口上的滚动条

    (221) Application.DisplayFormulaBar = Not Application.DisplayFormulaBar '切换是否显示编辑栏

    (222) Application.Dialogs(xlDialogPrint).Show ‘显示打印内容对话框

    (223) Application.MoveAfterReturnDirection = xlToRight '设置按Enter键后单元格的移动方向向右

    (224) Application.FindFile '显示打开对话框

    (225) ThisWorkbook.FollowHyperlink http://fanjy.blog.excelhome.net ‘打开超链接文档

    (226) ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly '将当前工作簿设置为只读

    (227) ActiveWorkbook.AddToFavorites '将当前工作簿添加到收藏夹文件夹中

    (228) ActiveSheet.CheckSpelling '在当前工作表中执行"拼写检查"

    (229) ActiveSheet.Protect userinterfaceonly:=True ‘保护当前工作表

    (230) ActiveSheet.PageSetup.LeftHeader = ThisWorkbook.FullName ‘在当前工作表的左侧页眉处打印出工作簿的完整路径和文件名

    (231) Worksheets("Sheet1").Range("A1:G37").Locked = False

    Worksheets("Sheet1").Protect

    '解除对工作表Sheet1中A1:G37区域单元格的锁定

    '以便当该工作表受保护时也可对这些单元格进行修改

    (232) Worksheets("Sheet1").PrintPreview '显示工作表sheet1的打印预览窗口

    (233) ActiveSheet.PrintPreview Enablechanges:=False ‘禁用显示在Excel的“打印预览”窗口中的“设置”和“页边距”按钮

    (234) ActiveSheet.PageSetup.PrintGridlines = True '在打印预览中显示网格线

    ActiveSheet.PageSetup.PrintHeadings = True '在打印预览中显示行列编号

    (235) ActiveSheet.ShowDataForm '开启数据记录单

    (236) Worksheets("Sheet1").Columns("A").Replace _

    What:="SIN", Replacement:="COS", _

    SearchOrder:=xlByColumns, MatchCase:=True '将工作表sheet1中A列的SIN替换为COS

    (237) Rows(2).Delete '删除当前工作表中的第2行

    Columns(2).Delete '删除当前工作表中的第2列

    (238) ActiveWindow.SelectedSheets.VPageBreaks.Add before:=ActiveCell '在当前单元格左侧插入一条垂直分页符

    ActiveWindow.SelectedSheets.HPageBreaks.Add before:=ActiveCell '在当前单元格上方插入一条垂直分页符

    (239) ActiveWindow.ScrollRow = 14 '将当前工作表窗口滚动到第14行

    ActiveWindow.ScrollColumn = 13 '将当前工作表窗口滚动到第13列

    (240) ActiveWindow.Close '关闭当前窗口

    (241) ActiveWindow.Panes.Count '获取当前窗口中的窗格数

    (242) Worksheets("sheet1").Range("A1:D2").CreateNames Top:=True '将A2至D2的单元格名称设定为A1到D1单元格的内容

    (243) Application.AddCustomList listarray:=Range("A1:A8") '自定义当前工作表中单元格A1至A8中的内容为自动填充序列

    (244) Worksheets("sheet1").Range("A1:B2").CopyPicture xlScreen, xlBitmap '将单元格A1至B2的内容复制成屏幕快照

    (245) Selection.Hyperlinks.Delete ‘删除所选区域的所有链接

    Columns(1).Hyperlinks.Delete ‘删除第1列中所有的链接

    Rows(1).Hyperlinks.Delete  ‘删除第1行中所有的链接

    Range("A1:Z30").Hyperlinks.Delete ‘删除指定范围所有的链接

    (246) ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, _

    Address:="C:\Windows\System32\Calc.exe", ScreenTip:="按下我,就会开启Windows计算器", TextToDisplay:="Windows计算器" '在活动单元格中设置开启Windows计算器链接

    (247) ActiveCell.Value = Shell("C:\Windows\System32\Calc.exe", vbNormalFocus) '开启Windows计算器

    (248) ActiveSheet.Rows(1).AutoFilter ‘打开自动筛选。若再运行一次,则关闭自动筛选

    (249) Selection.Autofilter ‘开启/关闭所选区域的自动筛选

    (250) ActiveSheet.ShowAllData ‘关闭自动筛选

    (251) ActiveSheet.AutoFilterMode ‘检查自动筛选是否开启,若开启则该语句返回True

    (252) ActiveSheet.Columns("A").ColumnDifferences(Comparison:=ActiveSheet. _

    Range("A2")).Delete '在A列中找出与单元格A2内容不同的单元格并删除

    (253) ActiveSheet.Range("A6").ClearNotes '删除单元格A6中的批注,包括声音批注和文字批注

    (254) ActiveSheet.Range("B8").ClearComments '删除单元格B8中的批注文字

    (255) ActiveSheet.Range("A1:D10").ClearFormats '清除单元格区域A1至D10中的格式

    (256) ActiveSheet.Range("B2:D2").BorderAround ColorIndex:=5, _

    Weight:=xlMedium, LineStyle:=xlDouble '将单元格B2至D2区域设置为蓝色双线

    (257) Range("A1:B2").Item(2, 3)或Range("A1:B2")(2, 3) ‘引用单元格C2的数据

    Range("A1:B2")(3)  ‘引用单元格A2

    (258) ActiveSheet.Cells(1, 1).Font.Bold = TRUE ‘设置字体加粗

    ActiveSheet.Cells(1, 1).Font.Size = 24 ‘设置字体大小为24磅

    ActiveSheet.Cells(1, 1).Font.ColorIndex = 3 ‘设置字体颜色为红色

    ActiveSheet.Cells(1, 1).Font.Italic = TRUE ‘设置字体为斜体

    ActiveSheet.Cells(1, 1).Font.Name = "Times New Roman" ‘设置字体类型

    ActiveSheet.Cells(1, 1).Interior.ColorIndex = 3 ‘将单元格的背景色设置为红色

    (259) ActiveSheet.Range("C2:E6").AutoFormat Format:=xlRangeAutoFormatColor3 '将当前工作表中单元格区域C2至E6格式自动调整为彩色3格式

    (260) Cells.SpecialCells(xlCellTypeLastCell) ‘选中当前工作表中的最后一个单元格

    (261) ActiveCell.CurrentArray.Select '选定包含活动单元格的整个数组单元格区域.假定该单元格在数据单元格区域中

    (262) ActiveCell.NumberFormatLocal = "0.000; [红色] 0.000" '将当前单元格数字格式设置为带3位小数,若为负数则显示为红色

    (263) IsEmpty (ActiveCell.Value) '判断活动单元格中是否有值

    (264) ActiveCell.Value = LTrim(ActiveCell.Value) '删除字符串前面的空白字符

    (265) Len(ActiveCell.Value) '获取活动单元格中字符串的个数

    (266) ActiveCell.Value = UCase(ActiveCell.Value) '将当前单元格中的字符转换成大写

    (267) ActiveCell.Value = StrConv(ActiveCell.Value, vbLowerCase) '将活动单元格中的字符串转换成小写

    (268) ActiveSheet.Range("C1").AddComment '在当前工作表的单元格C1中添加批注

    (269) Weekday(Date) '获取今天的星期,以数值表示,1-7分别对应星期日至星期六

    (270) ActiveSheet.Range("A1").AutoFill Range(Cells(1, 1), Cells(10, 1)) '将单元格A1的数值填充到单元格A1至A10区域中

    (271) DatePart("y", Date) '获取今天在全年中的天数

    (272) ActiveCell.Value = DateAdd("yyyy", 2, Date) '获取两年后的今天的日期

    (273) MsgBox WeekdayName(Weekday(Date)) '获取今天的星期数

    (274) ActiveCell.Value = Year(Date) '在当前单元格中输入今年的年份数

    ActiveCell.Value = Month(Date) '在当前单元格中输入今天所在的月份数

    ActiveCell.Value = Day(Date) '在当前单元格中输入今天的日期数

    (275) ActiveCell.Value = MonthName(1) '在当前单元格中显示月份的名称,本句为显示"一月"

    (276) ActiveCell.Value = Hour(Time) '在当前单元格中显示现在时间的小时数

    ActiveCell.Value = Minute(Time) '在当前单元格中显示现在时间的分钟数

    ActiveCell.Value = Second(Time) '在当前单元格中显示现在时间的秒数

    (277) ActiveSheet.Shapes(1).Delete '删除当前工作表中的第一个形状

    (278) ActiveSheet.Shapes.Count '获取当前工作表中形状的数量

    (279) ActiveSheet.Shapes(1).TextEffect.ToggleVerticalText '改变当前工作表中第一个艺术字的方向

    (280) ActiveSheet.Shapes(1).TextEffect.FontItalic = True '将当前工作表中第一个艺术字的字体设置为斜体

    (281) ActiveSheet.Shapes.AddTextEffect(msoTextEffect21, "三峡",  _

    "Arial Black", 22#, msoFalse, msoFalse, 66#, 80).Select '在当前工作表中创建一个名为"三峡"的艺术字并对其进行格式设置和选中

    (282) ActiveSheet.Shapes.AddLine(BeginX:=10, BeginY:=10, EndX:=250, _

    EndY:=100).Select '在当前工作表中以(10,10)为起点(250,100)为终点画一条直线并选中

    (283) ActiveSheet.Shapes.AddShape(Type:=msoShapeRightTriangle, _

    Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个左上角在(70,40),宽为130高为72的三角形并选中

    (284) ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, _

    Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个以点(70,40)为起点,宽130高72的矩形并选中

    (285) ActiveSheet.Shapes.AddShape(Type:=msoShapeOval, _

    Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个左上角在(70,40),宽为130高为72的椭圆

    (286) ActiveSheet.Shapes(1).Line.ForeColor.RGB = RGB(0, 0, 255) '将当前工作表中第一个形状的线条颜色变为蓝色

    (287) ActiveSheet.Shapes(2).Fill.ForeColor.RGB = RGB(255, 0, 0) '将当前工作表中第2个形状的前景色设置为红色

    (288) ActiveSheet.Shapes(1).Rotation = 20 '将当前工作表中的第1个形状旋转20度

    (289) Selection.ShapeRange.Flip msoFlipHorizontal '将当前选中的形状水平翻转

    Selection.ShapeRange.Flip msoFlipVertical '将当前选中的形状垂直翻转

    (290) Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD1 '将所选取的形状设置为第1种立体样式

    (291) ActiveSheet.Shapes(1).ThreeD.Depth = 20 '将当前工作表中第一个立体形状的深度设置为20

    (292) ActiveSheet.Shapes(1).ThreeD.ExtrusionColor.RGB = RGB(0, 0, 255) '将当前工作表中第1个立体形状的进深部分的颜色设为蓝色

    (293) ActiveSheet.Shapes(1).ThreeD.RotationX = 60 '将当前工作表中的第1个立体形状沿X轴旋转60度

    ActiveSheet.Shapes(1).ThreeD.RotationY = 60 '将当前工作表中的第1个立体形状沿Y轴旋转60度

    (294) Selection.ShapeRange.ThreeD.Visible = msoFalse '将所选择的立体形状转换为平面形状

    (295) Selection.ShapeRange.ConnectorFormat.BeginDisconnect '在形状中让指定的连接符起点脱离原来所连接的形状

    (296) ActiveSheet.Shapes(1).PickUp '复制当前工作表中形状1的格式

    (297) ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 260, 160, 180, 30). TextFrame.Characters.Text = "fanjy.blog.excelhome.net" '在工作簿中新建一个文本框并输入内容

    (298) ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, 20, 80, 100, 200). TextFrame.Characters.Text = "fanjy.blog.excelhome.net" '在当前工作表中建立一个水平文本框并输入内容

    (299) ActiveSheet.Shapes.AddPicture "d:\sx.jpg", True, True, 60, 20, 400, 300 '在当前工作表中插入一张d盘中名为sx的图片

    (300) ActiveChart.ApplyCustomType xl3DArea '将当前图表类型改为三维面积图

    本文转自:http://www.360doc.com/content/12/0904/18/10262458_234285378.shtml

    展开全文
    weixin_43136586 2019-07-16 11:27:28
  • wg547308195 2015-11-10 06:55:24
  • 4星
    26KB jllydffq 2011-11-03 13:31:19
  • 24KB suweijin1 2010-05-25 23:24:55
  • 5星
    1.28MB fengyunxiu1213 2008-09-18 10:46:56
  • VB操作Excel详解 一、 VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1、在工程中引用MicrosoftExcel 类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel ...

    用VB操作Excel详解

    一、 VB读写EXCEL表:

    VB本身提自动化功能可以读写EXCEL表,其方法如下:

    1、在工程中引用MicrosoftExcel 类型库:

    从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确

    定"。表示在工程中要引用

    EXCEL类型库。

    2、在通用对象的声明过程中定义EXCEL对象:

    Set xlApp =CreateObject("Excel.Application") '创建EXCEL对象
    
    Set xlBook =xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件
    
    xlApp.Visible = True '设置EXCEL对象可见(或不可见)
    
    Set xlSheet =xlBook.Worksheets("表名") '设置活动工作表
    
    xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值
    
    xlSheet.PrintOut '打印工作表
    
    xlBook.Close (True) '关闭工作簿
    
    xlApp.Quit '结束EXCEL对象
    
    Set xlApp = Nothing '释放xlApp对象
    
    xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏
    
    xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
    Dim xlApp As Excel.Application
    
    Dim xlBook As Excel.WorkBook
    
    Dim xlSheet As Excel.Worksheet

    3、在程序中操作EXCEL表常用命令:

    在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。

    二、EXCEL的宏功能:

    EXCEL提供一个VisualBasic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动

    宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过下面命令来运行启动宏和关闭宏。

    xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 

     

    三、VB与EXCEL的相互勾通:

    充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:

    在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。

    四、举例:

    1、在VB中,建立一个FORM,在其上放置两个命令按钮,将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:\temp\excel.bz")= "" Then '判断EXCEL是否打开
    
    Set xlApp =CreateObject("Excel.Application") '创建EXCEL应用类
    
    xlApp.Visible = True '设置EXCEL可见
    
    Set xlBook =xlApp.Workbooks.Open("D:\temp\bb.xls") '打开EXCEL工作簿
    
    Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
    
    xlsheet.Activate '激活工作表
    
    xlsheet.Cells(1, 1) = "abc"'给单元格1行驶列赋值
    
    xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL中的启动宏
    
    Else
    
    MsgBox ("EXCEL已打开")
    
    End If
    
    End Sub
    
    Private Sub Command2_Click()
    
    If Dir("D:\temp\excel.bz")<> "" Then '由VB关闭EXCEL
    
    xlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏
    
    xlBook.Close (True) '关闭EXCEL工作簿
    
    xlApp.Quit '关闭EXCEL
    
    End If
    
    Set xlApp = Nothing '释放EXCEL对象
    
    End
    
    End Sub

    2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。

    3、在"bb.xls"中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入已下程序存盘:

    Sub auto_open()
    
    Open "d:\temp\excel.bz" ForOutput As #1 '写标志文件
    
    Close #1
    
    End Sub
    
    Sub auto_close()
    
    Kill "d:\temp\excel.bz" '删除标志文件
    
    End Sub

    4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。

    首先创建Excel 对象,使用ComObj:

    Dim ExcelID as Excel.Application
    
    Set ExcelID as new Excel.Application

    1)显示当前窗口:

    EelID.Visible:=True;xc

    2)更改Excel标题栏:

    ExcelID.Caption:='应用程序调用MicrosoftExcel';

    3)添加新工作簿:

    ExcelID.WorkBooks.Add;

    4)打开已存在的工作簿:

    ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');

    5)设置第2个工作表为活动工作表:

    ExcelID.WorkSheets[2].Activate;

    或ExcelID.WorkSheets['Sheet2'].Activate;

    6)给单元格赋值:

    ExcelID.Cells[1,4].Value:='第一行第四列';

    7)设置指定列的宽度(单位:字符个数),以第一列为例:

    ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;

    8)设置指定行的高度(单位:磅)(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;

    WithxlBook.ActiveSheet.Range("B2:L" + Trim(Str(i + 1))).Borders

    1-左2-右3-顶4-底5-斜(\) 6-斜(/)

    12)清除第一行第四列单元格公式:

    ExcelID.ActiveSheet.Cells[1,4].ClearContents;

    13)设置第一行字体属性:

    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)进行页面设置:

    a.页眉:

    ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示';

    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.打印单元格网线:

    ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;

    15)拷贝操作:

    a.拷贝整个工作表:

    ExcelID.ActiveSheet.Used.Range.Copy;

    b.拷贝指定区域:

    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)打印预览工作表:

    ExcelID.ActiveSheet.PrintPreview;

    19)打印输出工作表:

    ExcelID.ActiveSheet.PrintOut;

    20)工作表保存:

    IfnotExcelID.ActiveWorkBook.Savedthen

    ExcelID.ActiveSheet.PrintPreview

    Endif

    21)工作表另存为:

    ExcelID.SaveAs('C:\Excel\Demo1.xls');

    22)放弃存盘:

    ExcelID.ActiveWorkBook.Saved:=True;

    23)关闭工作簿:

    ExcelID.WorkBooks.Close;

    24)退出Excel:

    ExcelID.Quit;

    25)设置工作表密码:

    ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Contents:=True,Scenarios:=True

    26)EXCEL的显示方式为最大化

    ExcelID.Application.WindowState=xlMaximized

    27)工作薄显示方式为最大化

    ExcelID.ActiveWindow.WindowState=xlMaximized

    28)设置打开默认工作薄数量

    ExcelID.SheetsInNewWorkbook=3

    29)'关闭时是否提示保存(true保存;false不保存)

    ExcelID.DisplayAlerts=False

    30)设置拆分窗口,及固定行位置

    ExcelID.ActiveWindow.SplitRow=1

    ExcelID.ActiveWindow.FreezePanes=True

    31)设置打印时固定打印内容

    ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"

    32)设置打印标题

    ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""

    33)设置显示方式(分页方式显示)

    ExcelID.ActiveWindow.View=xlPageBreakPreview

    34)设置显示比例

    ExcelID.ActiveWindow.Zoom=100

    35)让Excel响应DDE请求

    Ex.Application.IgnoreRemoteRequests=False

    用VB操作EXCEL示例代码

    Private Sub Command3_Click()

    On Error GoTo err1

    Dim i As Long

    Dim j As Long

    Dim objExl As Excel.Application '声明对象变量

    Me.MousePointer=11 '改变鼠标样式

    Set objExl=New Excel.Application'初始化对象变量

    objExl.SheetsInNewWorkbook=1 '将新建的工作薄数量设为1

    objExl.Workbooks.Add'增加一个工作薄

    objExl.Sheets(objExl.Sheets.Count).Name="book1"'修改工作薄名称

    objExl.Sheets.Add,objExl.Sheets("book1")‘增加第二个工作薄在第一个之后

    objExl.Sheets(objExl.Sheets.Count).Name="book2"

    objExl.Sheets.Add,objExl.Sheets("book2")‘增加第三个工作薄在第二个之后

    objExl.Sheets(objExl.Sheets.Count).Name="book3"

    objExl.Sheets("book1").Select'选中工作薄<book1>

    For i=1 To 50'循环写入数据

    For j=1 To 5

    If i=1 Then

    objExl.Selection.NumberFormatLocal="@"'设置格式为文本

    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 '设为粗体

    objExl.Selection.Font.Size=24 '设置字体大小

    objExl.Cells.EntireColumn.AutoFit '自动调整列宽

    objExl.ActiveWindow.SplitRow=1 '拆分第一行

    objExl.ActiveWindow.SplitColumn=0 '拆分列

    objExl.ActiveWindow.FreezePanes=True'固定拆分

    objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"'设置打印固定行

    objExl.ActiveSheet.PageSetup.PrintTitleColumns=""'打印标题

    objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_

    Format(Now,"yyyy年mm月dd日hh:MM:ss")

    objExl.ActiveWindow.View=xlPageBreakPreview'设置显示方式

    objExl.ActiveWindow.Zoom=100 '设置显示大小

    '给工作表加密码

    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 '将默认新工作薄数量改回3个

    Set objExl=Nothing'清除对象

    Me.MousePointer=0 '修改鼠标

    ExitSub

    err1:

    objExl.SheetsInNewWorkbook=3

    objExl.DisplayAlerts=False '关闭时不提示保存

    objExl.Quit'关闭EXCEL

    objExl.DisplayAlerts=True '关闭时提示保存

    Set objExl=Nothing

    Me.MousePointer=0

    End Sub

    本人最近在做个程序,由于以前没涉及过此类编程,且手头没有相关技术资料,于是遂在网上淘金。可不

    幸的是网上搜到的此方面的代码大都是抄袭而来,错误太多,几乎无法使用和参考。为此,本人结合网上

    的资料和自己的研究分析,做了很多测试。以下代码为本人初次用VB6控制并读写EXCEL时,测试的部

    分代码,基本都通过了测试。在这里特意把更正且通过测试的代码做了笔记,便于自己需要时直接参考。

    测试环境:VB6.0sp6企业版、Office2003、WinXP

    真确的引用:“工程(P)”—“引用(N)”—引用项目

    Excel 2000中:

    Microsoft Excel 9.0 Object Library

    Microsoft Office 9.0 Object Library

    Excel 2003中:

    Microsoft Excel 11.0 Object Library

    Microsoft Office 11.0 Object Library

    Private Sub Test_Click()

    '--------------------------------

    ' 功能:读RESULT.TXT到EXCEL中去

    ' 用法:主程序自动调用处理

    '--------------------------------

    '打开最终结果文件resulr.txt

    Dim i, j, iLen As Integer

    Dim s() As String

    Dim sStr As String

    If iOutNum <> 0 Then

    Close iOutNum '先关闭

    End If

    fOutFile = Trim(App.Path) &"\Result.txt" '最终格式化结果

    iOutNum = FreeFile()

    Open fOutFile For Input As #iOutNum

    '控制EXCEL代码

    Dim xlApp As Object'Excel.Application

    Dim xlBook As Object 'Excel.Workbook

    Dim xlSheet As Object'Excel.Worksheet

    Screen.MousePointer = vbHourglass '改变鼠标样式

    'On Error GoTo Err_Proc

    Set xlApp =CreateObject("Excel.Application") '创建新的EXCEL文件

    Set xlBook = xlApp.WorkBooks.Add

    Set xlSheet = xlBook.WorkSheets(1)

    'Begin to fill data to sheet

    'Set xlBook =xlApp.Workbooks.Open("c:\1.xls") '打开已存在的某EXCEL文件

    Set xlSheet = xlBook.Sheets(1) '设置活动工作表(1)

    '***********************************************************

    '试验代码部分

    xlSheet.Cells(1, 1) = "A" '把第一行第一列改成A

    xlSheet.Cells(1, 2) = "B" '把第一行第二列改成B

    xlSheet.Cells(2, 1) = "C" '把第二行第一列改成C

    xlSheet.Cells(3, 2) = "D" '把第3行第二列改成D

    '**********************************************************

    '显示当前窗口

    xlApp.Visible = True '设置EXCEL对象可见(或不可见)

    '更改Excel标题栏

    xlApp.Caption = "CDMA基站告警后台分析系统报表"

    '修改单元格颜色

    With xlBook.Sheets(1) '第1张工作表'或者With xlBook.ActiveSheet

    .Range("A1","F10").Font.Color = RGB(112, 220, 21)

    End With

    '修改单元格边框

    WithxlBook.ActiveSheet.Range("A2:K9").Borders '边框设置

    .LineStyle = 1'xlBorderLineStyleContinuous

    .Weight = 1 'xlThin

    .ColorIndex = 1

    End With

    '单元格字体设置

    WithxlBook.ActiveSheet.Range("A3:K9").Font '字体设置

    .Size = 9

    .Bold = True

    .Italic = True

    .ColorIndex = 1

    End With

    '设置单元格格式为文本格式

    'xlBook.Sheets(1).Selection.NumberFormatLocal= "@" '设置格式为文本,没有通过

    '准备修改EXCEL单元格内容

    i = 0

    While Not EOF(iOutNum)

    Line Input #iOutNum, sStr '顺序按行读取

    sStr = Trim(sStr) '压缩空格

    If Len(Trim(sStr)) > 0 Then

    s() = Split(sStr, ",") '空格分隔符

    iLen = UBound(s())

    '写EXCEL单元格

    i = i + 1 '记录号+1

    For j = 0 To iLen

    xlSheet.Cells(i + 1, j + 2) =Trim(s(j))

    Next j

    End If

    Wend

    '其它设置

    xlSheet.Rows("2:2").Select'选中第一行

    xlApp.Columns("A:E").Select'选中A~E列

    xlApp.Selection.Font.Bold = True '设为粗体

    xlApp.Selection.Font.Size = 10 '设置字体大小

    xlApp.Cells.EntireColumn.AutoFit '自动调整列宽

    xlBook.Sheets(1).Cells.EntireColumn.AutoFit'自动调整列宽

    '拆分

    xlApp.ActiveWindow.SplitRow = 1 '拆分第一行

    xlApp.ActiveWindow.SplitColumn = 2 '拆分第2列

    '

    '设置指定列宽、或行高:(单位:字符个数)

    'xlBook.Sheets(1).Columns(1).ColumnsWidth= 5

    xlBook.Sheets(1).Rows(2).RowHeight =5 / 0.035 '//1厘米

    '激活某个工作表为活动工作表

    xlApp.WorkSheets(2).Activate

    Set xlSheet = xlBook.Sheets(3)

    '

    '边框设置,测试通过

    WithxlBook.ActiveSheet.Range("A2:K9").Borders '边框设置

    .LineStyle = 1'xlBorderLineStyleContinuous'细黑实线

    .Weight = 2 'xlThin

    .ColorIndex = 1

    End With

    '进行页面设置:代码真TMD灵活

    '页眉:

    xlBook.ActiveSheet.PageSetup.CenterHeader= "XXXXC网基站掉站后台分析报表"

    '页脚:

    xlApp.WorkSheets(2).PageSetup.CenterFooter= "第&P页"

    '页眉到顶端边距2cm:

    xlApp.WorkSheets(2).PageSetup.HeaderMargin= 2 / 0.035

    '页脚到底端边距3cm:

    xlBook.Sheets(1).PageSetup.HeaderMargin= 3 / 0.035

    '顶边距2cm:

    xlApp.WorkSheets(2).PageSetup.TopMargin= 2 / 0.035

    '底边距2cm:

    xlApp.WorkSheets(2).PageSetup.BottomMargin= 2 / 0.035

    '左边距2cm:

    xlApp.WorkSheets(2).PageSetup.LeftMargin= 2 / 0.035

    '右边距2cm:

    xlApp.WorkSheets(2).PageSetup.RightMargin= 2 / 0.035

    '页面水平居中:

    xlApp.WorkSheets(2).PageSetup.CenterHorizontally= 2 / 0.035

    '页面垂直居中:

    xlApp.WorkSheets(2).PageSetup.CenterVertically= 2 / 0.035

    '打印单元格网线:

    xlApp.WorkSheets(2).PageSetup.PrintGridLines= True

    '

    '拷贝操作:

    '拷贝整个工作表:

    xlApp.ActiveSheet.Used.Range.Copy'有问题!

    '拷贝指定区域:

    xlApp.WorkSheets(1).Range("A1:E2").Copy

    '从A1位置开始粘贴:

    xlApp.WorkSheets(2).Range("A1:E2").PasteSpecial

    'ExcelID.ActiveSheet.Range.["A1"].PasteSpecial

    '从文件尾部开始粘贴:

    ExcelID.ActiveSheet.Range.PasteSpecial

    '打印预览工作表:

    xlApp.ActiveSheet.PrintPreview

    '打印输出工作表

    xlApp.ActiveSheet.PrintOut

    '工作表保存,预览

    If Not xlApp.ActiveWorkBook.SavedThen

    xlApp.ActiveSheet.PrintPreview

    End If

    '增加新工作簿、表

    xlApp.WorkBooks.Add '增加一个工作薄

    xlApp.WorkSheets.Add '增加一个工作表

    '工作表另存为:

    xlBook.SaveAs("C:\Demo1.xls") '测试通过

    '设置工作表的名称

    xlApp.Worksheets(2).Name = "测试工作表"

    '放弃存盘:

    xlApp.ActiveWorkBook.Saved = True '测试通过

    '关闭工作簿:

    xlApp.WorkBooks.Close

    '退出Excel:

    xlApp.Quit

    '保存设置

    xlApp.DisplayAlerts = False '关闭时不提示保存

    xlApp.DisplayAlerts = True '关闭时提示保存

    xlApp.Quit '关闭EXCEL

    '释放资源

    Set xlApp = Nothing '释放xlApp对象

    Set xlBook = Nothing

    Set xlSheet = Nothing

    Screen.MousePointer = vbDefault

    Close iOutNum

    End Sub

    唯一不足的是,像.LineStyle =xlBorderLineStyleContinuous这类代码,"="右边的常量

    xlBorderLineStyleContinuous,类似的在网上几乎搜不到完整的定义,,相当郁闷~~~

    最终成品(关键)代码,用于自动生成EXCEL报表:

    Private Sub 生成报表()

    Dim i, j, iLen As Integer

    Dim s() As String

    Dim sStr As String

    If iOutNum <> 0 Then

    Close iOutNum '先关闭

    End If

    fOutFile = Trim(App.Path) &"\Result.txt" '最终格式化结果

    iOutNum = FreeFile()

    Open fOutFile For Input As #iOutNum

    '控制EXCEL代码,前期准备

    Dim xlApp As Object'Excel.Application

    Dim xlBook As Object 'Excel.Workbook

    Dim xlSheet As Object'Excel.Worksheet

    Screen.MousePointer = vbHourglass

    'On Error GoTo Err_Proc

    Set xlApp =CreateObject("Excel.Application")

    Set xlBook = xlApp.WorkBooks.Add

    '指定第1个工作表sheets(1)

    Set xlSheet = xlBook.Sheets(1)

    '激活某个工作表为活动工作表

    'xlApp.Worksheets(1).Activate

    '显示当前窗口

    xlApp.Visible = True

    '更改Excel标题栏

    xlApp.Caption = "淮北(Cdma)基站告警报表"

    '设置工作表的名称

    xlApp.WorkSheets(1).Name =CDate(Date)

    '单元格颜色设置

    With xlBook.Sheets(1)

    .Range("C2:C3").Font.Color= vbRed

    .Range("I2:L3").Font.Color= vbRed

    '.Range(xlSheet.Cells(2, 9),xlSheet.Cells(2, 12)).Font.Color = vbRed'效率低下

    End With

    '单元格合并

    With xlSheet

    .Range("B2:B3").MergeCells= True '合并

    .Range("C2:C3").MergeCells= True

    .Range("D2:D3").MergeCells= True

    .Range("E2:E3").MergeCells= True

    .Range("G2:G3").MergeCells= True

    .Range("H2:H3").MergeCells= True

    .Range("I2:I3").MergeCells= True

    .Range("J2:J3").MergeCells= True

    .Range("K2:K3").MergeCells= True

    .Range("L2:L3").MergeCells= True

    End With

    '单元格设置

    xlSheet.Columns("A:L").Select

    xlApp.Selection.Font.Name = "宋体" '设置字体类型

    xlApp.Selection.Font.Size = 10 '设置字体大小

    '修改数据前,设置G/H列单元格格式为“自定义”格式

    xlBook.Sheets(1).Range("G:H").NumberFormatLocal= "yyyy-mm-dd hh:mm:ss" '自定义格式

    '或修改成文本格式也行:xlBook.Sheets(1).Cells.NumberFormatLocal= "@" '文本格式

    '

    '准备修改EXCEL单元格内容

    With xlBook.ActiveSheet

    i = 0

    While Not EOF(iOutNum)

    Line Input #iOutNum, sStr '顺序按行读取

    sStr = Trim(sStr) '压缩空格

    If Len(Trim(sStr)) > 0 Then

    s() = Split(sStr, ",") '空格分隔符

    iLen = UBound(s())

    '写EXCEL单元格

    i = i + 1 '记录号+1

    For j = 0 To iLen

    .Cells(i + 1, j + 2) = Trim(s(j))

    If j >= 5 And j <= 6 AndInStr(Trim(s(j)), ":") > 0 Then

    xlSheet.Cells(i + 1, j + 2) =Trim(s(j))

    If Right(Trim(s(j)), 8) >="00:00:00" And Right(Trim(s(j)), 8) <= "06:00:00" Then

    .Cells(i + 1, j +2).Interior.ColorIndex = 37 '设置特殊颜色,00~06时段不考核

    End If

    End If

    Next j

    End If

    Wend

    End With

    '数据修改完毕后,建议设置自动合适列宽

    With xlBook.ActiveSheet

    .Columns("A:H").Select

    .Columns.AutoFit

    End With

    '或:xlBook.Sheets(1).Cells.EntireColumn.AutoFit'自动调整列宽

    '

    '个别单元格需要设定自动换行

    WithxlBook.ActiveSheet.Range("I2:I3")

    .WrapText = True

    .Columns("I:I").Select

    .ColumnWidth = 7.1

    End With

    '边框设置为“细黑实线”

    WithxlBook.ActiveSheet.Range("B2:L" + Trim(Str(i + 1))).Borders '边框设置

    .LineStyle = 1'xlBorderLineStyleContinuous'细黑实线

    .Weight = 2 'xlThin

    .ColorIndex = 1

    End With

    '

    With xlBook.ActiveSheet '或xlApp.WorkSheets (1)

    '数据区域:全部设置居左

    .Range("B2:L" + Trim(Str(i+ 1))).HorizontalAlignment = 2 '1:xlLeft/2:xlRight

    '

    '进行页面设置:代码真TMD灵活

    With .PageSetup

    '顶端标题行

    .PrintTitleRows = "$2:$3"

    '页眉:

    .CenterHeader = "淮北电信C网基站掉站报表"

    '页脚:

    .CenterFooter ="&""楷体_GB2312,常规""&8淮北电信无线中心" & Chr(10)& "第&P页/&N页"

    'A4纸、横向

    .Orientation = 2 ':xlPortrait 横向/1:xlLandscape 纵向

    End With

    End With

    '冻结窗口

    xlSheet.Range("F4").Select

    xlApp.ActiveWindow.FreezePanes = True

    '

    '保存设置

    'xlApp.DisplayAlerts = False '关闭时不提示保存

    '工作表另存为:

    'xlBook.SaveAs("C:\Demo1.xls") '测试通过

    'xlApp.WorkBooks.Close '关闭工作簿

    'xlApp.Quit '退出Excel:

    'xlApp.WorkBooks.Add '增加一个工作薄

    'xlApp.WorkSheets.Add '增加一个工作表

    '释放资源

    Set xlApp = Nothing

    Set xlBook = Nothing

    Set xlSheet = Nothing

    Screen.MousePointer = vbDefault

    Close iOutNum

    End Sub

    参考源码空间:

    枕善居http://www.mndsoft.com/blog/(dx05611240)

    人人为我http://www.winvb.com/Default.asp?page=2

    搜珍网http://www.dssz.com/search.php?keyword=telnet

    开源http://www.vscodes.com/

    笔记2:

    C:\>shutdown ?

    用法: shutdown [-i | -l | -s| -r | -a] [-f] [-m \\computername] [-t xx] [-c "co

    mment"] [-d up:xx:yy]

    没有参数显示此消息(与? 相同)

    -i 显示GUI界面,必须是第一个选项

    -l 注销(不能与选项-m 一起使用)

    -s 关闭此计算机

    -r 关闭并重启动此计算机

    -a 放弃系统关机

    -m \\computername 远程计算机关机/重启动/放弃

    -t xx 设置关闭的超时为xx秒

    -c "comment" 关闭注释(最大127 个字符)

    -f 强制运行的应用程序关闭而没有警告

    -d [p]:xx:yy 关闭原因代码

    u 是用户代码

    p 是一个计划的关闭代码

    xx 是一个主要原因代码(小于256 的正整数)

    yy 是一个次要原因代码(小于65536 的正整数)

    Qzone

    vb6.0 操作excel(3)

    .Range("L2:L3").MergeCells= True

    EndWith

    '单元格设置

    xlSheet.Columns("A:L").Select

    xlApp.Selection.Font.Name = "宋体" '设置字体类型

    xlApp.Selection.Font.Size = 10 '设置字体大小

    '修改数据前,设置G/H列单元格格式为"自定义"格式

    xlBook.Sheets(1).Range("G:H").NumberFormatLocal= "yyyy-mm-dd hh:mm:ss" '自定义格式

    '或修改成文本格式也行:xlBook.Sheets(1).Cells.NumberFormatLocal= "@" '文本格式

    '

    '准备修改EXCEL单元格内容

    With xlBook.ActiveSheet

    i = 0

    While Not EOF(iOutNum)

    Line Input #iOutNum, sStr '顺序按行读取

    sStr = Trim(sStr) '压缩空格

    If Len(Trim(sStr)) > 0 Then

    s() = Split(sStr, ",") '空格分隔符

    iLen = UBound(s())

    '写EXCEL单元格

    i = i + 1 '记录号+1

    For j = 0 To iLen

    .Cells(i + 1, j + 2) = Trim(s(j))

    If j >= 5 And j <= 6 AndInStr(Trim(s(j)), ":") > 0 Then

    xlSheet.Cells(i + 1, j + 2) =Trim(s(j))

    If Right(Trim(s(j)), 8) >="00:00:00" And Right(Trim(s(j)), 8) <= "06:00:00" Then

    .Cells(i + 1, j +2).Interior.ColorIndex = 37 '设置特殊颜色,00~06时段不考核

    End If

    End If

    Next j

    End If

    Wend

    EndWith

    '数据修改完毕后,建议设置自动合适列宽

    With xlBook.ActiveSheet

    .Columns("A:H").Select

    .Columns.AutoFit

    EndWith

    '或:xlBook.Sheets(1).Cells.EntireColumn.AutoFit'自动调整列宽

    '

    '个别单元格需要设定自动换行

    WithxlBook.ActiveSheet.Range("I2:I3")

    .WrapText = True

    .Columns("I:I").Select

    .ColumnWidth = 7.1

    EndWith

    '边框设置为"细黑实线"

    WithxlBook.ActiveSheet.Range("B2:L" + Trim(Str(i + 1))).Borders '边框设置

    .LineStyle = 1'xlBorderLineStyleContinuous'细黑实线

    .Weight = 2 'xlThin

    .ColorIndex = 1

    EndWith

    '

    With xlBook.ActiveSheet '或xlApp.WorkSheets (1)

    '数据区域:全部设置居左

    .Range("B2:L" + Trim(Str(i+ 1))).HorizontalAlignment = 2 '1:xlLeft/2:xlRight

    '

    '进行页面设置:代码真TMD灵活

    With .PageSetup

    '顶端标题行

    .PrintTitleRows = "$2:$3"

    '页眉:

    .CenterHeader = "淮北电信C网基站掉站报表"

    '页脚:

    .CenterFooter ="&""楷体_GB2312,常规""&8淮北电信无线中心" & Chr(10)& "第&P页/****&N页"

    'A4纸、横向

    .Orientation = 2 ':xlPortrait 横向/1:xlLandscape 纵向

    EndWith

    EndWith

    '冻结窗口

    xlSheet.Range("F4").Select

    xlApp.ActiveWindow.FreezePanes = True

    '

    '保存设置

    'xlApp.DisplayAlerts = False '关闭时不提示保存

    '工作表另存为:

    'xlBook.SaveAs("C:\Demo1.xls") '测试通过

    'xlApp.WorkBooks.Close '关闭工作簿

    'xlApp.Quit '退出Excel:

    'xlApp.WorkBooks.Add '增加一个工作薄

    'xlApp.WorkSheets.Add '增加一个工作表

    '释放资源

    Set xlApp = Nothing

    Set xlBook = Nothing

    Set xlSheet = Nothing

    Screen.MousePointer = vbDefault

    Close iOutNum

    End Sub

    展开全文
    liushengyulsy 2019-02-13 09:50:17
  • 整体代码量不高 大部分操作可以通过EXCEL的宏操作录制然后去复制 部分操作需要通过直接写代码去执行 这里涉及到一开始接触VB有代码基础的人观看 涉及VB中的基本常用操作 首先是碰到的问题 VB程序在导入数据的过程中...

    前提:一个偶然的机会要对一个已经开发比较完全的VB项目进行维护工作
    整体代码量不高 大部分操作可以通过EXCEL的宏操作录制然后去复制
    部分操作需要通过直接写代码去执行

    这里涉及到一开始接触VB有代码基础的人观看 涉及VB中的基本常用操作

    首先是碰到的问题
    VB程序在导入数据的过程中出现数据丢失的情况
    这里VB系统可以通过断点 F5 运行 F8逐步调试去试验代码流程
    在这里插入图片描述
    1、表格的选择
    Workbooks(“X.xlsm”).Activate X的表格当前置顶(设为活动表格)
    2、sheet表格的选择
    Sheets(“总表”).Select 配合第一条可以打开EXCEL后选择该表中的某条数据
    3、单元格的选择
    Cells(1, Y) 可以通过变量的方式选择单元格,变量和大写字母可能会混淆
    此时可以通过1-24表示A-Z或者用
    Cells(1, “Y”) 表示Y这一行
    4、列的选择
    Rows(“1,1”).select 列A选择
    5、行的选择
    columns(“1,1”).select 行A选择
    6、新建SHEET表格

     Workbooks("X_update.xlsm").Activate
           Sheets("Y").Select
          Worksheets.Add().Name = "临时文件"
    

    此3行代码可以解释为在X_update这个EXCEL表格的Ysheet表前生成一个叫做临时文件的sheet
    这里就可以避免直接生成的sheet被放到了第一个位置
    在这里插入图片描述
    否则直接使用Worksheets.Add().Name = "临时文件"
    会在图示位置的第一个位置生成一个SHEET
    这样如果代码中有Sheets(1).Select 则可能会发生冲突

    7、删除sheet

    Worksheets("临时文件").Delete
    

    同样搭配以上的选择表格使用

    8、复制粘贴

    Workbooks("X_update.xlsm").Activate
        Sheets("临时文件").Select
        Range(Columns(1), Columns(2)).Select
        Selection.Cut
        Sheets("总表").Select
        Range(Columns(1), Columns(2)).Select
        ActiveSheet.Paste
    

    打开表格 选择临时文件 复制1-2列 打开总表 在1-2列中粘贴

    Range(Columns(YXT_XM_L), Columns(YXT_XM_L)).Select
    

    此代码的意思是选中第YXT_XM_L列
    这个是防止用cells时出现变量无法选中的替代方法

    9、使用筛选功能

      Selection.AutoFilter
    

    10、升序排列

    Range("A1:HH6000").Sort Key1:=Range("J1"), Order1:=xlAscending, Header:= _
        xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal
    

    选定A1-HH6000范围 并以J1列进行升序排序

    11、不为空方法

    If Not C Is Nothing Then '如果找到了
          XXXX
          End If
    

    如果C条件存在 则执行X方法

    12、

    If Not C Is Nothing Then '如果找到了
          XXXX
          ELSE
          YYYY
          END IF 
    

    如果C存在则执行X方法 如果没有则执行Y方法
    13、 For方法

    For I = 1 To YXT
           XXXX
        Next I
    

    这个是典型的For方法
    执行I从1-YXT这个变量
    如果符合则执行X方法
    这里和JAVA不同 方法内没有自加程序
    这里默认执行1-yxt整数增加

    14、

    GoTo  L1
    L1:
    
    XXXX
    

    在IF中举中嵌套GOTO方法
    然后在下面位置编写对应的方法
    完成方法的调用功能

    15、方法定义

    DIM x as Integer
    Dim y as string
    
    展开全文
    suntao1995 2021-07-22 14:05:03
  • 3星
    7KB mokton 2009-04-11 15:03:21
  • 3星
    49KB chen016 2014-01-23 16:51:38
  • 3星
    5KB chenxh 2003-09-08 00:00:00
  • txz2003 2007-01-23 15:42:00
  • 14KB huoe0917 2018-08-12 12:21:05
  • 5星
    114KB wdf126 2012-08-24 11:37:46
  • publicme 2013-04-28 10:42:12

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,621
精华内容 3,048
关键字:

vb控制excel