怎样使用Excel编程

发布网友 发布时间:2022-04-22 01:11

我来回答

3个回答

热心网友 时间:2023-01-20 18:33

我用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

热心网友 时间:2023-01-20 19:51

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里面编程所不能体验的乐趣。

热心网友 时间:2023-01-20 21:25

付费内容限时免费查看回答你好亲亲 .打开excel文档,在开发工具中找到vba。要使用vba必须要通过vba工具栏进行操作,因此需要将vba工具栏调出。如果找不到vba的位置,在excel的选项中进行设置勾选。勾选之后点击确定返回主界面可以看到工具栏出现“开发工具”字样,说明vba工具栏已经调取成功。2.点击“插入”中的“模块”。3.然后输入 Sub 输入() Range("A1") = 360-----这个是今天展示的数字。 End Sub 可以执行的VBA代码(宏程序),结构是这样的: Sub 程序名(参数) 可以执行任务的代码 End Sub 点击“运行”图标。4.通过简单的编程操作,我们得到了最终的数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com