vb程程序,导出到EXCEL的有关问题
vb程程序,导出到EXCEL的问题
大家好,我想把datagrid中显示的记录的记录导出到excel
我在module模块中加入以下代码
Public ExcelApp As Excel.Application
Public ExcelBook As Excel.Workbook
Public ExcelSheet As Excel.Worksheet
Public IsOpen As Integer
'取值
Public Function GetExcelKey(r As Long, c As Long) As String
On Error GoTo SysErr
GetExcelKey = ExcelSheet.Cells(r, c)
Exit Function
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Function
'设置背景颜色
Public Sub SetExcelColor(r As Long, c As Long, Color As Long)
On Error GoTo SysErr
ExcelSheet.Cells(r, c).Interior.ColorIndex = Color
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'赋值
Public Sub SetExcelKey(r As Long, c As Long, str As String)
On Error GoTo SysErr
ExcelSheet.Cells(r, c) = str
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'打开一个excel文档
Public Function OpenExcel(Fn As String) As Integer
On Error GoTo SysErr
Set ExcelApp = CreateObject("excel.application")
ExcelApp.Visible = False
ExcelApp.SheetsInNewWorkbook = 1
If Dir(Fn, vbDirectory) <> "" Then
Set ExcelBook = ExcelApp.Workbooks.Open(Fn)
Else
Set ExcelBook = ExcelApp.Workbooks.Add
End If
Set ExcelSheet = ExcelBook.Worksheets(1)
IsOpen = 1
OpenExcel = 0
Exit Function
SysErr:
IsOpen = 0
OpenExcel = 1
MsgBox Error, vbInformation + vbOKOnly, "打开excel"
End Function
'保存当前文档
Public Sub SaveExcel()
On Error GoTo SysErr
If IsOpen = 0 Then Exit Sub
ExcelBook.Save
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'另存为当前文档
Public Sub SaveAsExcel(NewFn As String)
On Error GoTo SysErr
If IsOpen = 0 Then Exit Sub
ExcelBook.SaveAs NewFn
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'关闭excel 文档
Public Sub QuitExcel()
On Error GoTo SysErr
IsOpen = 0
ExcelBook.Close
ExcelApp.Quit
Set ExcelApp = Nothing
Set ExcelBook = Nothing
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
之后在窗体的按钮中加入以下调用代码
OpenExcel App.Path & "\发票表.xls" '打开模板如果没有找到模板会新建一个xls空文档
SetExcelKey rr, cc, "内容" ' rr行、cc列 写入内容'结束操作
SaveAsExcel App.Path
QuitExcel '关闭文档
在 SetExcelKey rr, cc, "内容" ' rr行、cc列 写入内容这里提示:ByRef argument type mismatch的错误,
应该怎么调用啊,谢谢
------解决方案--------------------
rr,cc没有定义,SetExcelKey 已经声明rr,cc应为Long,所以会报错,在SetExcelKey rr, cc, "内容" 前面加上:
Dim rr as Long,cc As Long
rr=...
cc=...
------解决方案--------------------
我一直使用的datagrid控件导出excel过程
大家好,我想把datagrid中显示的记录的记录导出到excel
我在module模块中加入以下代码
Public ExcelApp As Excel.Application
Public ExcelBook As Excel.Workbook
Public ExcelSheet As Excel.Worksheet
Public IsOpen As Integer
'取值
Public Function GetExcelKey(r As Long, c As Long) As String
On Error GoTo SysErr
GetExcelKey = ExcelSheet.Cells(r, c)
Exit Function
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Function
'设置背景颜色
Public Sub SetExcelColor(r As Long, c As Long, Color As Long)
On Error GoTo SysErr
ExcelSheet.Cells(r, c).Interior.ColorIndex = Color
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'赋值
Public Sub SetExcelKey(r As Long, c As Long, str As String)
On Error GoTo SysErr
ExcelSheet.Cells(r, c) = str
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'打开一个excel文档
Public Function OpenExcel(Fn As String) As Integer
On Error GoTo SysErr
Set ExcelApp = CreateObject("excel.application")
ExcelApp.Visible = False
ExcelApp.SheetsInNewWorkbook = 1
If Dir(Fn, vbDirectory) <> "" Then
Set ExcelBook = ExcelApp.Workbooks.Open(Fn)
Else
Set ExcelBook = ExcelApp.Workbooks.Add
End If
Set ExcelSheet = ExcelBook.Worksheets(1)
IsOpen = 1
OpenExcel = 0
Exit Function
SysErr:
IsOpen = 0
OpenExcel = 1
MsgBox Error, vbInformation + vbOKOnly, "打开excel"
End Function
'保存当前文档
Public Sub SaveExcel()
On Error GoTo SysErr
If IsOpen = 0 Then Exit Sub
ExcelBook.Save
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'另存为当前文档
Public Sub SaveAsExcel(NewFn As String)
On Error GoTo SysErr
If IsOpen = 0 Then Exit Sub
ExcelBook.SaveAs NewFn
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
'关闭excel 文档
Public Sub QuitExcel()
On Error GoTo SysErr
IsOpen = 0
ExcelBook.Close
ExcelApp.Quit
Set ExcelApp = Nothing
Set ExcelBook = Nothing
Exit Sub
SysErr:
MsgBox Error, vbInformation + vbOKOnly, ""
End Sub
之后在窗体的按钮中加入以下调用代码
OpenExcel App.Path & "\发票表.xls" '打开模板如果没有找到模板会新建一个xls空文档
SetExcelKey rr, cc, "内容" ' rr行、cc列 写入内容'结束操作
SaveAsExcel App.Path
QuitExcel '关闭文档
在 SetExcelKey rr, cc, "内容" ' rr行、cc列 写入内容这里提示:ByRef argument type mismatch的错误,
应该怎么调用啊,谢谢
------解决方案--------------------
rr,cc没有定义,SetExcelKey 已经声明rr,cc应为Long,所以会报错,在SetExcelKey rr, cc, "内容" 前面加上:
Dim rr as Long,cc As Long
rr=...
cc=...
------解决方案--------------------
我一直使用的datagrid控件导出excel过程
- VB code
'导出 Private Sub LoadExport() If picView.Visible = False Then LoadView Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlQuery As Excel.QueryTable Set xlBook = xlApp.Workbooks().Add Set xlSheet = xlBook.Worksheets("sheet1") Set xlQuery = xlSheet.QueryTables.Add(rsLoadAdd, xlSheet.Range("a1 ")) 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 cmdlg.Flags = 2 cmdlg.Filter = "EXCEL文档(*.xls)" cmdlg.ShowSave If cmdlg.FileName <> "" Then xlApp.DisplayAlerts = False xlBook.SaveAs FileName:=cmdlg.FileName If MsgBox("导出成功,是否打开查看?", vbOKCancel, "导出EXCEL") = vbOK Then xlApp.Workbooks().Open cmdlg.FileName xlApp.Visible = True Else xlApp.Quit End If End If If xlApp <> Null Then Set xlApp = Nothing End Sub