2017-07-25 128 views
0

我想創建一個將Microsoft Project文件導出到Excel文件的宏。通過使用宏記錄,我得到了一行代碼,使用導出嚮導完成此操作,但我希望文件路徑和文件名是動態的,以便我可以在不同的項目中使用此宏。我一直在尋找許多其他線程和微軟網站,但沒有運氣。這可能嗎?VBA動態另存爲,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

除非你在談論['FileDialog'](https://stackoverflow.com/a/25176411/4717755),那麼你想要的是'Dim filePath as String''filePath =「C:\ Users \ xxx \ ...「'和'Dim fileName as String''fileName = myProject.xlsx」'。Then'FileSaveAs Name:= filePath&fileName'。 – PeterT

+0

如果我可以將fileName設置爲動態的,可以識別當前打開的文件的名稱。 – Peel

回答

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資源管理器配置爲隱藏文件擴展名,那麼這些變量也會阻止擴展名;如果Explorer配置爲顯示它們,則它們在變量中提供。確保你的代碼對兩種情況都是健壯的,或者確保你可以控制代碼運行的環境。