Открытие файла Microsoft Project с помощью VBA

Я пытаюсь открыть файл Microsoft Project через VBA, а затем скопировать некоторые диапазоны в книгу 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

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
1 229
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете сообщение об ошибке, потому что документация для открытого конкурса указывает, что возвращаемое значение функции равно Boolean. Вы пытаетесь присвоить логическое значение объекту. Таким образом, несоответствие типов.

Очень советую включить Option Explicit. Это поможет избежать некоторых ошибок с вашими переменными.

Кроме того, вам следует рассмотреть возможность использования раннее связывание (по крайней мере, на этапе проектирования и отладки вашей разработки), чтобы включить ссылку на библиотеку 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

Другие вопросы по теме