【问题标题】:VBA Dynamic Save As, Microsoft Project to ExcelVBA 动态另存为,Microsoft Project 到 Excel
【发布时间】:2017-08-25 22:21:33
【问题描述】:

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

这是我所拥有的:

   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

任何帮助将不胜感激!

【问题讨论】:

  • 除非你在谈论FileDialog,否则你想要的是Dim filePath as String filePath = "C:\Users\xxx\..."Dim fileName as String fileName = myProject.xlsx"。然后FileSaveAs Name:=filePath & fileName.
  • 如果我可以将 fileName 设置为动态的,可以识别当前打开的文件的名称,这可能会起作用。

标签: vba excel ms-project


【解决方案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 中的字符串操作,只需在网上搜索“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 资源管理器被配置为隐藏文件扩展名,那么这些变量也会保留扩展名;如果资源管理器配置为显示它们,则它们在变量中提供。确保您的代码对这两种情况都具有健壮性,或者确保您可以控制代码运行的环境。

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 2021-01-23
    • 1970-01-01
    • 2019-11-21
    • 2020-10-09
    • 2014-04-16
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多