vba生成excel文件

vba生成excel文件,第1张

使用vba生成一个excel 文件,可以使用以下方法:

1 Workbooks.Add 方法

1.1 语法

新建一个工作表。新工作表将成为活动工作表。

语法

表达式.Add(Template)

表达式 一个代表 Workbooks 对象的变量。

参数

名称 必选/可选 数据类型 说明

Template 可选 Variant 确定如何创建新工作簿。如果此参数为指定现有 Microsoft Excel 文件名的字符串,那么创建新工作簿将以该指定的文件作为模板。如果此参数为常量,新工作簿将包含一个指定类型的工作表。可为以下 XlWBATemplate 常量之一:xlWBATChart、xlWBATExcel4IntlMacroSheet、xlWBATExcel4MacroSheet 或 xlWBATWorksheet。如果省略此参数,Microsoft Excel 将创建包含一定数目空白工作表的新工作簿(该数目由 SheetsInNewWorkbook 属性设置)。

返回值

一个代表新工作簿的 Workbook 对象。

说明

如果 Template 参数指定的是文件,则该文件名可包含路径。

1.2 workbooks.add 会自动打开一个“工作簿1”这类的wb文件,并activate之

workbooks.add 会自动生成一个 " 工作簿N" 的WB文件,且active

workbooks.add 在add后,会打开一个“工作簿1”这类的wb文件

并且最后add的 wb文件 成为新的 activeworkbook

Sub test98()

Workbooks.Add

End Sub

1.3 workbooks.add(template)

template Variant 类型,可选

1.3.1 template如果指定为 EXCEL内置的常量

可为以下 XlWBATemplate 常量之一

xlWBATChart

xlWBATExcel4IntlMacroSheet

xlWBATExcel4MacroSheet

xlWBATWorksheet

Sub test91()

Workbooks.Add (xlWBATChart)

Workbooks.Add (xlWBATWorksheet)

Workbooks.Add (xlWBATExcel4MacroSheet)

Workbooks.Add (xlWBATExcel4IntlMacroSheet)

End Sub

1.3.2 若 template指定为文本,文本是一个文件路径,文件必须先存在

(暂时没发现有什么用处)

template 如果本参数为指定一现有 Microsoft Excel 文件名的字符串,那么创建新工作簿将以该指定的文件作为模板

如果template指定为文件,文件必须先存在,否则报错。

那么template为一个路径

如果是完整的绝对路径,则需要带path

如果只是相对路径,那么 excel 2010版本会去这儿找这个文件:D\用户目录/我的文档下面 ,默认目录?

好像指定过后会把新的路径当默认路径

Sub test96()

Workbooks.Add (ThisWorkbook.Path &"\" &ActiveSheet.Name &".xlsx")

End Sub

Sub test97()

Workbooks.Add (ActiveSheet.Name &".xlsx")

End Sub

2、thisworkbook.sheets(1).copy

这个是将当前代码所在工作簿的左侧第一张表拷贝生成新的工作簿文件。新文件包含一张表格。具体对应的文件跟表格可以根据需求调整

你的代码中,生成文件的语句是下面这行:

.SaveAs ThisWorkbook.Path &"\新文件.txt", FileFormat:=xlText

如果需要生成自己的名字,可以把这行修改为:

.SaveAs ThisWorkbook.Path &"\" &InputBox("输入文件名","确定文件名","新文件") &".txt", FileFormat:=xlText

答:end()里面的数字是简写的,这样很不好辨认。强烈建议使用命名参数。

1、2、3、4代表xlToLeft、xlToRight、xlUp、xlDown。也就是点一个单元格,然后按“Ctrl+箭头”后指向的单元格。

我修改了这段代码,已验证了能正确导出。

Private Sub export()

    Application.ScreenUpdating = False

    Path = "E:\export"

    Dim nro&, nco&

    nco = Cells(1, Columns.Count).End(xlToLeft).Column

    For i = 1 To nco

        nro = Cells(Rows.Count, i).End(xlUp).Row

        Open Path & "\file" & i & ".txt" For Output As #1

        For Each cell In Range(Cells(1, i), Cells(nro, i))

            Print #1, cell

        Next

        Close #1

    Next

    Application.ScreenUpdating = True

    MsgBox "导出完成"

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11847266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存