File Vba从文件夹中打开不带扩展名的文件,并另存为其他格式
我正在尝试编写一个宏来打开文件夹中的每个文件,然后另存为xlsx文件。我正在处理的文件没有文件扩展名,数据以制表符分隔,可以手动打开。我有这个代码来打开文件夹中的每个文件,但是我无法让它打开没有文件扩展名的文件File Vba从文件夹中打开不带扩展名的文件,并另存为其他格式,file,vba,excel,type-conversion,File,Vba,Excel,Type Conversion,我正在尝试编写一个宏来打开文件夹中的每个文件,然后另存为xlsx文件。我正在处理的文件没有文件扩展名,数据以制表符分隔,可以手动打开。我有这个代码来打开文件夹中的每个文件,但是我无法让它打开没有文件扩展名的文件 Sub Open_All_Files() Dim oWbk As Workbook Dim sFil As String Dim sPath As String sPath = "E:\Macro" 'location of files ChDir sPath sFil = Dir("
Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
sPath = "E:\Macro" 'location of files
ChDir sPath
sFil = Dir("*.xlsx") 'change or add formats
Do While sFil <> ""
Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file
'Code to save as different file extension would go here
oWbk.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub
子打开所有文件()
将oWbk设置为工作簿
将sFil设置为字符串
像细绳一样暗淡
sPath=“E:\Macro”'文件的位置
克迪尔斯帕斯
sFil=Dir(“*.xlsx”)”更改或添加格式
当sFil“”时执行
Set oWbk=Workbooks.Open(sPath&“\”&sFil)”打开文件
'保存为不同文件扩展名的代码将出现在此处
oWbk.Close True“关闭工作簿,保存更改”
sFil=Dir
循环的结束
端接头
我也不知道如何将每个文件保存为xlsx文件
我是vba的新手,因此非常感谢您的帮助。
谢谢您当前的代码只查找扩展名为.xlsx的文件。试试
Dir('*')
如果您只是重命名文件,那么我不会尝试打开它们。我会使用FileCopy
FileCopy source, destination
其中,源和目标都是字符串。例如,以下内容适用于我(在Windows XP上):
然后可以使用Kill
删除旧文件
Kill pathname
您当前的代码只查找扩展名为.xlsx的文件。试试
Dir('*')
如果您只是重命名文件,那么我不会尝试打开它们。我会使用FileCopy
FileCopy source, destination
其中,源和目标都是字符串。例如,以下内容适用于我(在Windows XP上):
然后可以使用Kill
删除旧文件
Kill pathname
我知道这是您正在寻找的代码:
Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
sPath = "E:\Macro" 'location of files
ChDrive "E" '-> if E is different than the current drive (if you didn't change it before, it is the drive where Office is installed)
ChDir sPath
sFil = Dir("*.*") 'change or add formats
Do While (sFil <> "" And InStr(sFil, ".") = 0)
NewFileName = sPath & "\" & sFil & ".xlsx"
On Error Resume Next
Name sFil As NewFileName 'Add extension to file
Set oWbk = Workbooks.Open(NewFileName) 'Open file as XLSX
'Do anything with the workbook
oWbk.Close True 'close the workbook, saving changes
sFil = Dir("*.*")
Loop ' End of LOOP
End Sub
子打开所有文件()
将oWbk设置为工作簿
将sFil设置为字符串
像细绳一样暗淡
sPath=“E:\Macro”'文件的位置
ChDrive“E”->如果E与当前驱动器不同(如果您以前没有更改它,则它是安装Office的驱动器)
克迪尔斯帕斯
sFil=Dir(“*.”)更改或添加格式
执行时(sFil“”和仪表(sFil“”)=0)
NewFileName=sPath&“\”&sFil&“.xlsx”
出错时继续下一步
将sFil命名为NewFileName“将扩展名添加到文件”
设置oWbk=Workbooks.Open(NewFileName)'将文件打开为XLSX
'对工作簿执行任何操作
oWbk.Close True“关闭工作簿,保存更改”
sFil=Dir(“***”)
循环的结束
端接头
我知道这是您正在寻找的代码:
Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
sPath = "E:\Macro" 'location of files
ChDrive "E" '-> if E is different than the current drive (if you didn't change it before, it is the drive where Office is installed)
ChDir sPath
sFil = Dir("*.*") 'change or add formats
Do While (sFil <> "" And InStr(sFil, ".") = 0)
NewFileName = sPath & "\" & sFil & ".xlsx"
On Error Resume Next
Name sFil As NewFileName 'Add extension to file
Set oWbk = Workbooks.Open(NewFileName) 'Open file as XLSX
'Do anything with the workbook
oWbk.Close True 'close the workbook, saving changes
sFil = Dir("*.*")
Loop ' End of LOOP
End Sub
子打开所有文件()
将oWbk设置为工作簿
将sFil设置为字符串
像细绳一样暗淡
sPath=“E:\Macro”'文件的位置
ChDrive“E”->如果E与当前驱动器不同(如果您以前没有更改它,则它是安装Office的驱动器)
克迪尔斯帕斯
sFil=Dir(“*.”)更改或添加格式
执行时(sFil“”和仪表(sFil“”)=0)
NewFileName=sPath&“\”&sFil&“.xlsx”
出错时继续下一步
将sFil命名为NewFileName“将扩展名添加到文件”
设置oWbk=Workbooks.Open(NewFileName)'将文件打开为XLSX
'对工作簿执行任何操作
oWbk.Close True“关闭工作簿,保存更改”
sFil=Dir(“***”)
循环的结束
端接头
这确实会创建一个具有正确名称的新文件,但excel会抛出错误“excel无法打开该文件,因为文件格式或文件扩展名无效”。我想这可能是因为当我手动打开文件时,我必须通过几个对话框告诉excel数据是如何分隔的。也许我需要打开每个文件才能将其保存为新格式?这确实会创建一个具有正确名称的新文件,但excel会抛出错误“excel无法打开文件,因为文件格式或文件扩展名无效”。我想这可能是因为当我手动打开文件时,我必须通过几个对话框告诉excel数据是如何分隔的。也许我需要打开每个文件才能将它们保存为新格式?我已经尝试过了,但不起作用。当我尝试使用它将.xlsx文件更改为.xls时,它不起作用,所以我不认为这只是没有扩展名的文件的问题。你说的“不起作用”是什么意思?这个代码应该很好。你能告诉我你得到了什么错误或者你是如何准确地使用它的吗?我知道所有没有扩展名的文件都在文件夹“E:\Macro”中。请您一步一步地执行,查看每个变量的值,并告诉我这些值是什么?请记住,它不查找xls文件,只查找没有扩展名的文件。如果要查找xls文件,应将Dir(“.”)转换为Dir(*.xls),并删除and InStr(sFil,“.”)=0位。让我们一步一步来避免任何误解。上面的代码查找文件夹“E:\Macro”中所有没有扩展名的文件;对于它们中的每一个,它都会添加扩展名(xlsx)并打开它们。如果这正是您想要的,请在您的过程中更加详细,因为这段代码很好,您应该做错事。如果这不完全是你想要的,请告诉我它是什么,我会相应地修改代码。当我运行宏时,什么都没有发生,没有扩展名的文件没有更改,也没有错误消息。谢谢你的帮助。我试过了,但不起作用。当我尝试使用它将.xlsx文件更改为.xls时,它不起作用,所以我不认为这只是没有扩展名的文件的问题。你说的“不起作用”是什么意思?这个代码应该很好。你能告诉我你得到了什么错误或者你是如何准确地使用它的吗?我知道所有没有扩展名的文件都在文件夹“E:\Macro”中。你能一步一步地执行吗,看看e所取的值