2012-02-07 94 views
2

我试图复制位于一个文件路径的整个未打开的工作簿,将其重命名并将其保存到一个新目录中......我遇到了重命名和保存问题,这里是我的代码迄今:在excel中复制和重命名未打开的工作簿

Private Sub new_file_Click() 
Dim ActBook As Workbook, NewFile As String 
Dim ToolFilePath As String, DestFilePath As String, NewToolName As String 
NewToolName = InputBox("Enter the Tool Name.") 

MsgBox (Tools_ListBox.Value) 
ToolFilePath = GetToolPath(Tools_ListBox.Value) 
ToolFilePath = GetPath & ToolFilePath 

DestFilePath = GetPath & GetDestPath(Tools_ListBox.Value) & NewToolName & ".xlsm" 

Set ActBook = Workbooks.Add(ToolFilePath) 
ActBook.SaveAs DestFilePath 
ActBook.Close True 

,我想复制坐落在ToolFilePath路径和位置我想它重新命名为是DestFilePath,其中包括Excel的.XLSM扩展名的文件。

我哪里错了?

感谢

+0

在SaveAs下,需要为Excel 2007及更高版本添加的文件类型。 – Jon49 2012-02-07 19:38:47

+0

文件路径,DestFilePath有一个.xlsm扩展名 – thebiglebowski11 2012-02-07 19:56:56

+0

你需要的是这样的'wkb.SaveAs sFileName,XlFileFormat.xlTemplate',当然你的将是一个不同的文件格式,但它应该会抛出一个错误,如果你不'没有指定XlFileFormat只是在Excel 2007及更高版本中添加文件格式是不够的。我正在使用的计算机仅适用于Excel 2003,否则我会为您提供正确的文件类型。 – Jon49 2012-02-07 20:07:58

回答

5

为什么不直接使用:

FileCopy(ToolFilePath,DestFilePath) 

无需打开它。

+0

好了,所以将这项工作,如果我有例如 ToolFilePath = d:\ mytool \ thetool.xlsm DestFilePath = d:\ copytool \ newcopy.xlsm 或做我需要做一个新的文件,并且路径只是一个文件夹位置? – thebiglebowski11 2012-02-07 20:32:43

+1

它需要两条完整路径 – 2012-02-07 20:57:47

+0

我已将它完全复制,并且正在观察我的两个目标变量......一切看起来都是正确的,但我收到的文件不存在错误。 – thebiglebowski11 2012-02-07 21:21:32

2

如果您不希望保留原始文件,也可以使用NAME方法。

Name ToolFilePath As DestFilePath 
+0

+1 - 如果原始文件是被保存 – brettdj 2012-02-08 09:22:46

相关问题