excel vba打开文件 并且获得文件名 保存

Sub Macro1()
Dim f As String, folder As String, N As String
folder = "C:\Users\Administrator\Desktop\4kW\"
f = Dir(folder & "*.txt")

Do Until Len(f) = 0
Workbooks.OpenText folder & f
N = ActiveWorkbook.Name
ActiveWorkbook.SaveAs "C:\Users\Administrator\Desktop\4kW\1\" & N & ".xlsx", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close Savechanges:=True
myfile = Dir
Loop
End Sub
以上代码目的:依次打开txt文件,获得该txt文件的文件名,保存为同名的excel文件。

运行结果,只能保存第一个,第二个文件开始不能更名,导致保存覆盖
请问哪儿出错了,应该怎么修改

1.首先,来看如何使用VBA打开Office中的软件程序(以Word为例)。

2.在Excel文件中创建一个新的宏。

3.方法是:

点击宏录制按钮。


4.或者点击“开发工具”选项卡中的“录制宏”

5.重命名一下宏名称"一键运行软件",然后点击确定。

6.然后点击“停止录制”

7.或者点击左下角的停止按钮。

8.然后点击“开发工具”中的“插入”

9.点击按钮图标

10.然后在Excel空白单元格处画出按钮图标。

11.鼠标选中“一键运行软件”,然后点击“编辑”

12.在VBA代码处,输入代码

Application.ActivateMicrosoftApp xlMicrosoftWord

  

13.然后保存关闭VBE代码编辑器。


14.然后回到Excel中,右击按钮图标,点击“编辑文字”


15.到这里,一键功能即完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-02
f = Dir(folder & "*.txt")
myfile = Dir
f 和 myfile 两个变量混淆了本回答被提问者采纳
第2个回答  2015-04-02
把Do Until Len(f) = 0改成Do Until f=""试试追问

不行的 我那个写法和你这个是一个意思 不是我需要解决的问题

追答Sub Macro1()
    Dim f As String, folder As String, AK As Workbook
    folder = "E:\test\"
    f = Dir(folder & "*.txt")
    
    Do While f <> ""
        Set AK = Workbooks.Open(Filename:=folder & f)
        AK.SaveAs folder & Left(f, Len(f) - 4) & ".xlsx", _
                FileFormat:=xlOpenXMLWorkbook
        ActiveWorkbook.Close Savechanges:=True
        f = Dir
    Loop
End Sub

本回答被网友采纳
第3个回答  2015-04-02
抱歉,看错了。
myfile=dir 改为 f=dir