使用 VBA 打开 Microsoft Project 文件
Opening a Microsoft Project file with VBA
我正在尝试通过 VBA 打开 Microsoft Project 文件,然后将一些范围复制到 excel 工作簿。但是我的代码出现错误:
Run-time error '13': Type mismatch
在该命令上:Set mpp = myMPP.Application.FileOpen(FilenameMPP)
Sub project2xCell()
Set myMPP = CreateObject("Msproject.Application")
Set myXLS = CreateObject("Excel.application")
FilenameMPP = OpenFileDialogMPP() 'Function to browse to a Microsoft Project file
FilenameExcel = OpenFileDialogXLS() 'Function to browse to a Excel Workbook
myMPP.Visible = True
Set mpp = myMPP.Application.FileOpen(FilenameMPP)
Set wb = Workbooks.Open(FilenameExcel)
End Sub
您收到错误是因为 documentation for the open call 指出函数的 return 值为 Boolean
。您正试图将一个布尔值分配给一个对象。因此类型不匹配。
我强烈建议你enable Option Explicit
。这将有助于避免您的变量出现一些错误。
此外,您应该考虑使用 early binding(至少在开发的设计和调试阶段)来包含 MS Project 库参考。
Option Explicit
Sub project2xCell()
Dim myMPP As MSProject.Application
Set myMPP = CreateObject("Msproject.Application")
myMPP.Visible = True
Dim filenameMPP As String
filenameMPP = OpenFileDialogMPP() 'Function to browse to a Microsoft Project file
myMPP.FileOpenEx Name:=filenameMPP, ReadOnly:=True
Set mpp = myMPP.ActiveProject
'--- now you can work with your project
myMPP.Quit
End Sub
我正在尝试通过 VBA 打开 Microsoft Project 文件,然后将一些范围复制到 excel 工作簿。但是我的代码出现错误:
Run-time error '13': Type mismatch
在该命令上:Set mpp = myMPP.Application.FileOpen(FilenameMPP)
Sub project2xCell()
Set myMPP = CreateObject("Msproject.Application")
Set myXLS = CreateObject("Excel.application")
FilenameMPP = OpenFileDialogMPP() 'Function to browse to a Microsoft Project file
FilenameExcel = OpenFileDialogXLS() 'Function to browse to a Excel Workbook
myMPP.Visible = True
Set mpp = myMPP.Application.FileOpen(FilenameMPP)
Set wb = Workbooks.Open(FilenameExcel)
End Sub
您收到错误是因为 documentation for the open call 指出函数的 return 值为 Boolean
。您正试图将一个布尔值分配给一个对象。因此类型不匹配。
我强烈建议你enable Option Explicit
。这将有助于避免您的变量出现一些错误。
此外,您应该考虑使用 early binding(至少在开发的设计和调试阶段)来包含 MS Project 库参考。
Option Explicit
Sub project2xCell()
Dim myMPP As MSProject.Application
Set myMPP = CreateObject("Msproject.Application")
myMPP.Visible = True
Dim filenameMPP As String
filenameMPP = OpenFileDialogMPP() 'Function to browse to a Microsoft Project file
myMPP.FileOpenEx Name:=filenameMPP, ReadOnly:=True
Set mpp = myMPP.ActiveProject
'--- now you can work with your project
myMPP.Quit
End Sub