|
发表于 2024-3-8 18:22
来自手机
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
这段代码是一个Excel VBA程序,用于从一个应用程序中导出数据到一个Excel文件。下面是对代码的详细解释和备注:
```vba
' 当点击导出按钮时执行的操作
Private Sub cmdExport_Click()
' 定义变量
Dim strTemplateFile As String ' 模板文件路径
Dim strFileName As String ' 导出文件路径
Dim FSO As New FileSystemObject ' 文件系统对象,用于文件操作
Dim excelApp As Excel.Application ' Excel应用程序
Dim excelBook As Excel.Workbook ' Excel工作簿
Dim excelSheet As Excel.Worksheet ' Excel工作表
Dim lngLineNo As Long ' 用于记录当前写入的行号
Dim i As Long ' 循环变量
' 错误处理标签
On Error GoTo ErrHandle
' 指定模板文件路径
strTemplateFile = gStrXlt & "\模板文件名.xls"
' 检查模板文件是否存在
If Not FSO.FileExists(strTemplateFile) Then
MsgBox "模板文件不存在", vbCritical, Me.Caption
Exit Sub
End If
' 设置导出文件的路径和名称
strFileName = gStrOther & "\新文件名" & Format(Date, "YYYYMMDD") & ".xls"
' 如果导出文件已存在,则删除
If FSO.FileExists(strFileName) Then
FSO.DeleteFile strFileName
End If
' 创建Excel应用程序实例
Set excelApp = CreateObject("Excel.Application")
' 打开模板文件
Set excelBook = excelApp.Workbooks.Open(strTemplateFile)
' 获取第一个工作表
Set excelSheet = excelBook.Worksheets(1)
' 设置Excel不可见,防止干扰用户
excelApp.Visible = False
' 禁止Excel弹出提示
excelApp.DisplayAlerts = False
' 将A到L列的格式设置为文本,防止数据格式被自动更改
excelApp.Columns("A:L").NumberFormatLocal = "@"
' 初始化进度条
With prg
.Max = lvData.ListItems.Count
.Min = 0
.Value = 0
End With
lngLineNo = 4 ' 数据从第四行开始写入
' 遍历列表视图中的每一项,将数据写入Excel
For i = 1 To lvData.ListItems.Count
' 逐列写入数据
excelSheet.Cells(lngLineNo, 1) = lvData.ListItems(i).SubItems(1)
excelSheet.Cells(lngLineNo, 2) = lvData.ListItems(i).SubItems(2)
excelSheet.Cells(lngLineNo, 3) = lvData.ListItems(i).SubItems(3)
excelSheet.Cells(lngLineNo, 4) = lvData.ListItems(i).SubItems(4)
excelSheet.Cells(lngLineNo, 5) = lvData.ListItems(i).SubItems(5)
lngLineNo = lngLineNo + 1
' 更新进度条
If prg.Value < prg.Max Then
prg.Value = prg.Value + 1
End If
DoEvents
Next
prg.Value = prg.Max
' 设置工作表中数据区域的边框和字体大小
With excelSheet
.Range(.Cells(1, 1), Cells(lvData.ListItems.Count + 3, 5)).Borders.LineStyle = xlContinuous
.Range(.Cells(1, 1), Cells(lvData.ListItems.Count + 3, 5)).Font.Size = 9
End With
' 保存工作簿
excelBook.Saved = True
excelBook.SaveAs strFileName
' 关闭Excel进程
excelBook.Close
excelApp.Quit
' 清理对象
Set excelBook = Nothing
Set excelApp = Nothing
' 显示导出完毕消息
MsgBox "导出完毕!" & vbCrLf & "文件路径:" & strFileName, vbInformation, Me.Caption
' 错误处理结束
On Error GoTo 0
Exit Sub
' 错误处理
ErrHandle:
' 调用错误处理函数,记录错误信息
Call gErrList("frmFenQiQiShuRpt.cmdExport_Click", Err.Description, Err.Number, True)
End Sub
```
这段代码的功能是从一个应用程序中导出数据到一个Excel文件。它首先检查模板文件是否存在,然后创建或覆盖导出文件,并将应用程序中的数据逐行写入Excel工作表。最后,设置工作表的格式,并保存关闭Excel文件。整个过程中,还包括了基本的错误处理和进度条更新。 |
评分
-
1
查看全部评分
-
|