1 Function MyOutPut(ByVal FileName As String, ByVal col As Integer, ByVal Row As Long, ByVal sheet As Worksheet) 2 '/********************************************/ 3 '参数1 文件名 4 '参数2 结束列号 5 '参数3 起始行号 6 '参数4 工作表指针 7 '/********************************************/ 8 ' 9 '输出整理好的表格 10 Application.ScreenUpdating = False '关闭表格公式的自动刷新 11 'StartTime = Timer '记录开始运行时间 12 Dim endline As Long 13 Dim name As String 14 Dim myCol As Integer 15 Dim myRow As Long 16 Dim mySheet As Worksheet 17 name = FileName '获取传进来的文件名 18 myCol = col '获取传进来的结束列号 19 myRow = Row '获取传进来的起始行号 20 Set mySheet = sheet '获取传进来的工作表指针 21 endline = mySheet.Range("$A$1000000").End(xlUp).Row '如果工作表行数大于一百万,请修改这里的数值 22 MyPath = ThisWorkbook.Path '获取本文件目录 23 24 '创建新的工作簿 25 Set wb = Workbooks.Add 26 wb.Sheets(1).Range(Cells(1, 1), Cells(endline, myCol)).NumberFormatLocal = "@" 27 mySheet.Range(mySheet.Cells(myRow, 1), mySheet.Cells(endline, myCol)).Copy 28 wb.Sheets(1).Range(Cells(1, 1), Cells(endline, myCol)).PasteSpecial Paste:=xlPasteValues 29
30 '准备输出 31 MyFullName = MyPath & "\" & name & ".xlsx" '自动生成文件名称 32 ActiveWorkbook.SaveAs FileName:=MyFullName, FileFormat:=xlWorkbookDefault, CreateBackup:=False '保存,FileFormat 为下面列表中的指定格式,这里默认为xlsx 33 ActiveWorkbook.Close '关闭新生成的工作簿 34 End Function
(2022-02-08更新)
最近忙于整理数据并输出,特此将常用的核心代码分享出来,供有需要的人调用。
以上为我自己封装的Excel表格输出函数,直接放到自己的工作簿或者模块里就可以调用了,
以下是一个调用示例:
Private Sub CommandButton1_Click() Dim name As String, Col As Integer, Row As Long, sheet As Worksheet Col = 5 Row = 1 Set sheet = Sheet1 '设定工作表指针,这里直接使用工作表的名称指定 Call MyOutPut("表格导出测试", Col, Row, sheet) End Sub
这样就会在当前excel文件的目录下导出一个 表格导出测试.xlsx 的Excel文件
Q&A
Q1: 为什么我运行的时候提示“应用程序定义或对象定义错误 ” ?
A1:这有可能是因为你在调用函数的时候,传入的sheet变量没有提前定义,注意需要提前执行 Dim sheet As Worksheet ,工作表指针必须提前定义,不能直接使用 set赋值
Q2: 我按照Q1的写好代码了,为什么我运行的时候还是提示“应用程序定义或对象定义错误 ” ?
A2:这有可能是因为你没有开启vba信任,开启方法如下: 点击“文件”-》“选项”-》信任中心-》宏设置,勾选下面的“信任对VBA工程对象模型的访问”。如果还不行,勾选上面蓝色框里的“启用VBA宏”
————————————————————————————————————————————————————————
(2019.10.14更新)
FileFormat:=xlExcel8 这里是指定导出的格式,常见格式如下:
xlAddIn 18 Microsoft Office Excel 加载项
xlAddIn8 18 Excel 2007 加载项
xlCSV 6 CSV
xlCSVMac 22 Macintosh CSV
xlCSVMSDOS 24 MSDOS CSV
xlCSVWindows 23 Windows CSV
xlCurrentPlatformText -4158 当前平台文本
xlDBF2 7 DBF2
xlDBF3 8 DBF3
xlDBF4 11 DBF4
xlDIF 9 DIF
xlExcel12 50 Excel 12
xlExcel2 16 Excel 2
xlExcel2FarEast 27 Excel2 FarEast
xlExcel3 29 Excel3
xlExcel4 33 Excel4
xlExcel4Workbook 35 Excel4 工作簿
xlExcel5 39 Excel5
xlExcel7 39 Excel7
xlExcel8 56 Excel8
xlExcel9795 43 Excel9795
xlHtml 44 HTML 格式
xlIntlAddIn 26 国际加载项
xlIntlMacro 25 国际宏
xlOpenXMLAddIn 55 打开 XML 加载项
xlOpenXMLTemplate 54 打开 XML 模板
xlOpenXMLTemplateMacroEnabled 53 打开启用的 XML 模板宏
xlOpenXMLWorkbook 51 打开 XML 工作簿
xlOpenXMLWorkbookMacroEnabled 52 打开启用的 XML 工作簿宏
xlSYLK 2 SYLK
xlTemplate 17 模板
xlTemplate8 17 模板 8
xlTextMac 19 Macintosh 文本
xlTextMSDOS 21 MSDOS 文本
xlTextPrinter 36 打印机文本
xlTextWindows 20 Windows 文本
xlUnicodeText 42 Unicode 文本
xlWebArchive 45 Web 档案
xlWJ2WD1 14 WJ2WD1
xlWJ3 40 WJ3
xlWJ3FJ3 41 WJ3FJ3
xlWK1 5 WK1
xlWK1ALL 31 WK1ALL
xlWK1FMT 30 WK1FMT
xlWK3 15 WK3
xlWK3FM3 32 WK3FM3
xlWK4 38 WK4
xlWKS 4 工作表
xlWorkbookDefault 51 默认工作簿
xlWorkbookNormal -4143 常规工作簿
xlWorks2FarEast 28 Works2 FarEast
xlWQ1 34 WQ1
xlXMLSpreadsheet 46 XML 电子表格