我正在尝试创建一个将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
非常感谢任何帮助!
答案 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.FullName
和ActiveProject.Name
变量可能会也可能不会提供文件扩展名,具体取决于您的本地Windows环境设置。我观察到,如果Windows资源管理器配置为隐藏文件扩展名,那么这些变量也会保留扩展名;如果资源管理器配置为显示它们,则它们将在变量中提供。确保您的代码对两种情况都很健壮,或者确保您可以控制代码运行的环境。