Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 简单VBA/Macro需要创建一个新的文本文件,其中包含活动工作表的内容,而无需更改文件名_Excel_Vba - Fatal编程技术网

Excel 简单VBA/Macro需要创建一个新的文本文件,其中包含活动工作表的内容,而无需更改文件名

Excel 简单VBA/Macro需要创建一个新的文本文件,其中包含活动工作表的内容,而无需更改文件名,excel,vba,Excel,Vba,我需要在不更改文件名的情况下将工作表中的数据导出到文本文件(即不执行“另存为”。如果文件名可以查看文件夹中以前类似的文件名并增加1位数(即:file_1.txt、file_2.txt等),那将是非常棒的 谢谢!!如果要避免更改excel文件的当前名称,只需保存当前工作表,而不是整个工作簿(与SaveAs函数相当的VBA是ActiveWorkbook.SaveAs,要仅保存当前工作表,请使用ActiveSheet.SaveAs) 可以使用以下宏: Sub Macro1() Applicat

我需要在不更改文件名的情况下将工作表中的数据导出到文本文件(即不执行“另存为”。如果文件名可以查看文件夹中以前类似的文件名并增加1位数(即:file_1.txt、file_2.txt等),那将是非常棒的


谢谢!!

如果要避免更改excel文件的当前名称,只需保存当前工作表,而不是整个工作簿(与SaveAs函数相当的VBA是
ActiveWorkbook.SaveAs
,要仅保存当前工作表,请使用
ActiveSheet.SaveAs

可以使用以下宏:

Sub Macro1()
    Application.DisplayAlerts = False
    ActiveSheet.SaveAs Filename:="NewFile.txt", FileFormat:=xlTextWindows
    Application.DisplayAlerts = True
End Sub
切换
DisplayAlerts
属性可避免在给定文件已存在时显示消息框


如果要保存多个工作表,需要遍历
ActiveWorkbook
对象的
Sheets
集合,并将每个工作表保存到单独的文件中。

如果要避免更改excel文件的当前名称,只需保存当前工作表,而不是整个工作簿(与SaveAs函数等价的VBA是
ActiveWorkbook.SaveAs
,要仅保存当前工作表,请使用
ActiveSheet.SaveAs

可以使用以下宏:

Sub Macro1()
    Application.DisplayAlerts = False
    ActiveSheet.SaveAs Filename:="NewFile.txt", FileFormat:=xlTextWindows
    Application.DisplayAlerts = True
End Sub
切换
DisplayAlerts
属性可避免在给定文件已存在时显示消息框


如果要保存多张工作表,您需要遍历
ActiveWorkbook
对象的
Sheets
集合,并将每张工作表保存到单独的文件中。

您可以获得一个新的文件名,如下图所示,其中包括一个日期。如果您想添加有关要导出的内容的详细信息,您可以获得更完整的回答

Function NewFileName(ExportPath)
Dim fs As Object    '' or As FileSytemObject if a reference to 
                    '' Windows Script Host is added, in which case
                    '' the late binding can be removed.
Dim a  As Boolean
Dim i  As Integer
Dim NewFileTemp As string

Set fs = CreateObject("Scripting.FileSystemObject")

NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & ".csv"

a = fs.FileExists(ExportPath & NewFileTemp)

i = 1
Do While a
    NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & "_" & i & ".csv"

    a = fs.FileExists(ExportPath & NewFileTemp)
    i = i + 1
    If i > 9 Then
        '' Nine seems enough times per day to be 
        '' exporting a table
        NewFileTemp = ""
        MsgBox "Too many attempts"
        Exit Do
    End If
Loop

NewFileName = NewFileTemp
End Function

您可以获得一个新的文件名,如下图所示,它包括一个日期。如果您想添加一些有关要导出的内容的详细信息,您可能会得到更完整的答案

Function NewFileName(ExportPath)
Dim fs As Object    '' or As FileSytemObject if a reference to 
                    '' Windows Script Host is added, in which case
                    '' the late binding can be removed.
Dim a  As Boolean
Dim i  As Integer
Dim NewFileTemp As string

Set fs = CreateObject("Scripting.FileSystemObject")

NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & ".csv"

a = fs.FileExists(ExportPath & NewFileTemp)

i = 1
Do While a
    NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & "_" & i & ".csv"

    a = fs.FileExists(ExportPath & NewFileTemp)
    i = i + 1
    If i > 9 Then
        '' Nine seems enough times per day to be 
        '' exporting a table
        NewFileTemp = ""
        MsgBox "Too many attempts"
        Exit Do
    End If
Loop

NewFileName = NewFileTemp
End Function

有可能,我做了类似的事情。你在哪里遇到问题?你需要导出整个工作表还是只导出部分数据?有可能,我做了类似的事情。你在哪里遇到问题?你需要导出整个工作表还是只导出部分数据?对于John的需要,NewFileTemp将是不适合添加ActiveSheet.Name-尽管这可能会生成无效的文件名。例如NewFileTemp=“CSV”和Format(Date(),“yyyymmdd”)&ActiveSheet.Name&“\ux”&i&“.CSV”我认为避免使用无效名称更安全,只有在添加了确保工作表名称安全的代码时,才应包含工作表名称,regex可能适合。对于John的需要,添加ActiveSheet.name会使NewFileTemp受益-尽管这可能会生成无效的文件名。例如,NewFileTemp=“CSV”&Format(Date(),“yyyymmdd”)&ActiveSheet.Name&“”&i&“.csv”我认为避免使用无效名称更安全,只有在添加了确保工作表名称安全的代码时,才应包含工作表名称,正则表达式可能适用。