男生打电话叫女生起床:怎样使用Excel编程

来源:百度文库 编辑:高考问答 时间:2024/05/01 23:02:36
我是新人,Excel一点不懂,有那位好人能帮帮我啊!谢谢
最好讲的详细一点。
我要的是怎样运用方程式进行预算,填写表格用的。

我用VB连过。
下面是我当时写的一个函数,从SQLServer2000中导出查询结果的。调用就可以了。记得在工程--》引用 中添加Excel的引用 Microsoft Excel 11.0 Object Library
(可能是不同的版本)
另外把连接字符串改一下。
如果你要用到其他方面,可以加我285512334
Public Function ExporToExcel(strOpen As String, str_name As String)
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
'& 功能:导出数据到EXCEL
'& 用法:ExporToExcel(sql查询字符串,导出表的名称)
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Dim adoRs As New ADODB.Recordset
Dim Irowcount As Integer
Dim Icolcount As Integer

Dim xlapp As New Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim xlQuery As Excel.QueryTable

Dim strcn_out As String

strcn_out = "Provider=SQLOLEDB.1;PeRs_tongjiist Security Info=False;User ID=sa;pwd=sa;Initial Catalog=st_info;Data Source=(local)"
With adoRs
If .State = 1 Then
.Close
End If
.ActiveConnection = strcn_out
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Source = strOpen
.Open
End With
With adoRs
If .RecordCount < 1 Then
MsgboxName = MsgBox("没有记录!", vbOKOnly, "信息提示")
Exit Function
End If
Irowcount = .RecordCount '记录总数
Icolcount = .Fields.Count '字段总数
End With

Set xlapp = CreateObject("Excel.Application")
Set xlbook = Nothing
Set xlsheet = Nothing
xlapp.Caption = str_name

Set xlbook = xlapp.Workbooks().Add
Set xlsheet = xlbook.Worksheets("sheet1")
xlapp.Visible = True
Set xlQuery = xlsheet.QueryTables.Add(adoRs, xlsheet.Range("a1")) '添加查询语句,导入EXCEL数据
With xlQuery
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With

xlQuery.FieldNames = True '显示字段名
xlQuery.Refresh

With xlsheet
With .Range(.Cells(1, 1), .Cells(1, Icolcount))

.Font.Name = "宋体" '设标题为黑体字
.Font.Bold = True '标题字体加粗
'.Interior.Color = &HC0FFC0 '设定第一行颜色
.ColumnWidth = 18
End With

With .Range(.Cells(1, 2), .Cells(1, 2)) '设定列宽度
.ColumnWidth = 10
End With
With .Range(.Cells(1, 3), .Cells(1, 3))
.ColumnWidth = 20
End With
With .Range(.Cells(1, 5), .Cells(1, 5))
.ColumnWidth = 10
End With
With .Range(.Cells(1, 6), .Cells(1, 6))
.ColumnWidth = 6
End With

With .Range(.Cells(2, 1), .Cells(Irowcount + 1, 1))
.Font.Name = "楷体"
'.Interior.Color = &H80FFFF '第一列颜色
End With
End With
On Error GoTo yes
'第一种方法:调用保存函数xlApp.SaveWorkspace
'第二种方法,后台saveas,指定目录
Position = App.Path & "\统计数据存档\" & str_name & ".xls"
xlbook.SaveAs Position
'第三种方法,用户关闭时,自己保存
xlapp.Application.Visible = True
yes:
Set xlapp = Nothing '交还控制给Excel
Set xlbook = Nothing
Set xlsheet = Nothing
End Function

1 在工作本菜单上的工具栏上右键选中“Visual Basic”,把安全改为“中”或“低”,如果这里不首先修改,可能无法运行任何VBA程序。

2 Excel编程使用的是VBA编程,VBA是VB子集合,所以语法上和VB是一样的,关键字也一样,只是设计到Excel的那部分对象的时候,要先明白Excel的对象结构。

3 Excel的对象并不复杂:简单的说就是如下:

每个Excel(我指的是从windows的快捷方式打开后)便已经有一个application对象。application.workbooks就是对应同一个excel的application对象所打开的不同的工作本集合,application.workbooks.workbook就是工作本集合里的一个实例,而application.workbooks.workbook.worksheets就是同一个工作本以内的工作表集合,同样道理,application.workbooks.workbook.worksheets.worksheet就是指具体到某一个工作表。

对象的层次结构大概如下:excel程序(application)->工作本集合(workbooks)->工作本(workbook)->工作表集合(worksheets)->工作表(worksheet)

在worksheet对象里面,包含了range(),cells()等方法访问具体的单元格或者单元范围,一切的编程从两个range(),cells()开始的。

由于限制这里的表达方式问题,其实有两个很简单的方法可以学习excel的一切。

a. 使用录入宏,然后打开宏的代码。(这些动作在Visual Basic附加工具条上可以找到)

b. 完全安装excel之后,在帮助菜单上有很完整的介绍,包括编程的,对象模型的,这些都要了解后才可能编程。

Excel早已超越了一般的表格软件了,建议从帮助开始看,慢慢了解,如果你愿意的话。我平时都用这个来工作,从dbf文件,access,sql server里面导入导出数据进行报表输出的。在excel里编程,却是有在传统的VB Form里面编程所不能体验的乐趣。