2010-04-02 18 views
0

这里的诀窍。总得转换“回合300个文件从XLS到CSV,写了一些简单的宏做到这一点,下面的代码:大规模节省xls作为csv

Dim wb As Workbook 

For Each wb In Application.Workbooks 
wb.Activate 

    Rows("1:1").Select 
    Selection.Delete Shift:=xlUp 
    ActiveWorkbook.SaveAs Filename:= _ 
     "C:\samplepath\CBM Cennik " & ActiveWorkbook.Name & " 2010-04-02.csv" _ 
     , FileFormat:=xlCSV, CreateBackup:=False 
Next wb 

,但它不这样做正是我想要的 - 保存文件‘example.xls’“example.xls 2010-04-02.csv”,我需要的是“例如2010-04-02.csv”

需要支持的家伙;)

回答

2

你可以尝试删除在你的文件名中的扩展名。

而不是ActiveWorkbook.Name使用

Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) 

在文件名的最后一个.后删除一切(包括.)。

+0

非常感谢! :)你已经保存了一天。 – mcmajkel 2010-04-02 07:45:10

+0

还有一个问题 - 它将列与“,”分开,但我需要“;”作为列分隔符。快速解决方案?我会很乐意。 – mcmajkel 2010-04-02 07:47:51

+0

您可以尝试'local:= true'或'local:= false'作为您对'SaveAs'的调用的参数。如果这没有帮助,请在StackOverflow上提出另一个问题 - 这就是它的工作原理。一个问题,一个答案:)你可以/应该接受解决你的问题的答案。 – 2010-04-02 07:53:26

1

一个快速和肮脏的方法是

Replace(ActiveWorkbook.Name, ".xls", "") 
+0

不再适用于'xslx',不过:) – 2010-04-02 07:42:18

0

local := true - 接过值从控制面板区域设置,因此得到了该变量作为一个分隔符,而不是“”(逗号)。太棒了