VBA动态另存为,Microsoft Project到Excel

时间:2017-07-25 19:49:22

标签: vba excel-vba ms-project excel

我正在尝试创建一个将Microsoft Project文件导出到excel文件的宏。通过使用宏录制我有一行代码使用导出向导完成此操作,但我希望文件路径和文件名是动态的,所以我可以在不同的项目上使用此宏。我一直在寻找许多其他线程和微软网站没有运气。这可能吗?

这就是我所拥有的:

   sub formatAndSave ()

   FileSaveAs Name:="C:\Users\XXXXXX\SharePoint\Projects\ProjectType\HxH\myProject.xlsx",_
              FormatID:="MSProject.ACE", map:="myMap"

   end sub

我尝试过的一个想法是:

   Active.Workbook.SaveAs FileName:=Title

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

为简单起见,我们假设您项目下面的所有答案都位于c:\projects\myProj.mpp

我认为你是在字符串替换功能之后。类似的东西:

Dim excelFilePath As String
excelFilePath = Replace(ActiveProject.FullName, ".mpp", ".xlsx")
Debug.Print excelFilePath
'the output would be c:\projects\myProj.xlsx

如果您不熟悉VB / VBA中的字符串操作,只需在Web上搜索“VBA字符串操作”。微软在这里有一篇不错的文章:https://msdn.microsoft.com/en-us/library/aa903372(v=vs.71).aspx

其他一些可能对你有用的东西是这些变量:

ActiveProject.FullName 'shows full path & name, so you'd get "c:\projects\myProj.mpp"
ActiveProject.Path     'shows just the path, so you'd get "c:\projects\"
ActiveProject.Name     'shows just the file name, so you'd get "myProj.mpp"

最后,我看到的一个警告是,ActiveProject.FullNameActiveProject.Name变量可能会也可能不会提供文件扩展名,具体取决于您的本地Windows环境设置。我观察到,如果Windows资源管理器配置为隐藏文件扩展名,那么这些变量也会保留扩展名;如果资源管理器配置为显示它们,则它们将在变量中提供。确保您的代码对两种情况都很健壮,或者确保您可以控制代码运行的环境。