vb控制excel另存为,把文件名赋值到单元格A1中

其中的红字部分应该怎么填写呢?

第1个回答  推荐于2016-06-25
代码及注释如下:
Sub main()
f = Dir(ThisWorkbook.Path & "\*.xlsx")'搜索本文件下的所有xlsx格式文件(由于一般带VBA的文件不能保存为xlsx格式,故无需去判断,是否打开的是本文件)
Do While f <> ""
Workbooks.Open (ThisWorkbook.Path & "\" & f)'依次打开搜索到的文件
Workbooks(f).Sheets(1).Row(3).Copy Sheets(1).Range("A" & Range("A65536").End(3).Row + 1)'将打开的文件第3行复制到本文件最后一个非空行的下一行中
Workbooks(f).Close'关闭文件
f = Dir'赋值下一个文件名给f
Loop'继续循环
End Sub
第2个回答  2015-04-11
Cells(1,1) = Right(fileSaveName, Len(fileSaveName) - InStrRev(fileSaveName, "\"))

fileSaveName包含了路径,后面的函数是把“\”最后的字符提取出来,也就是文件名追问

使用后发现没有效果

追答

我去,公式写错了,跟着你写了,Cells(1,1).value=Right(fileSaveName, Len(fileSaveName) - InStrRev(fileSaveName, "\"))

.value才是单元格的值

追问

还是没有值

追答

我的这个可以,你看看,是不是你哪里写错了

追问

是对的,那怎么再把扩展名去掉么?

追答

多加一句吧

fn = Right(fileSaveName, Len(fileSaveName) - InStrRev(fileSaveName, "\"))
Sheets(1).Cells(1, 1).Value = Mid(fn, 1, InStrRev(fn, ".") - 1)

本回答被提问者采纳
第3个回答  2015-04-11
.cell(1,1)=MyFileName追问

这个试过,运行后的结果有路径和 扩展名

追答

当然会有啊,因为文件系统中,路径和扩展名是文件名的一部分。如果你想去除这些信息,恐怕先运行保存,然后用workbook的name属性来获得数据比较方便

追问

这样该如何操作呢?

追答

.SaveAs MyFileName
.Cells(1,1)=Application.WorkSheetFunction.Substitute(ActiveWorkBook.Name,".xls","")
.Save

追问

运行错误,要求对象

追答

我测试没错,注意Cells前面有个点,这段语句是替代你的下面两句话的,必须在With 和End With之间

追问

可以把你的测试的完整的程序发给我看看么

追答

我的环境和你的不一样,你出示的代码也只是一部分,所谓【要求对象】,说明你的代码中,【With 对象】的对象可能有问题,但是你没有出示代码,那我只能认为前面的都是正确的,你拿我的完整代码又有什么用呢?

本回答被网友采纳
相似回答