Mefisto...diabeĹ czy anioĹ?
Witam.
Mam następujący problem:
Posiadam makro, które otwiera pliki ms projecta i zaciąga z nich zadania wraz z czasem trwania itd (określone kolumny z projecta) i wkleja do excela. Problem polega na tym, że przy otwieraniu niektórych plików ms projecta pojawia się błąd:
Run-Time Error '91':
Object variable or With block variable not set.
Poniżej kod, oraz miejsce w którym wyskakuje błąd:
Private Sub update()
Dim i, n, max, b As Integer
Dim Proj As MSProject.Application
Dim ts As MSProject.Tasks
Dim t As MSProject.Task
Worksheets("Czynności Projektowe").Activate
Start = Cells(1, 2).Value
Koniec = Cells(2, 2).Value
i = 10000
max = Worksheets("Ustawienia").Cells(1, 14)
'--------------- projects
For n = 4 To max + 3
Set Proj = CreateObject("MSProject.Application")
Proj.Visible = False
Proj.FileOpen Name:=Worksheets("Ustawienia").Cells(n, 15), ReadOnly:=True
Set ts = ActiveProject.Tasks
'--------------- menu
Application.ScreenUpdating = False
Worksheets("Czynności Projektowe").Cells(i, 1) = "Project: " & Worksheets("Ustawienia").Cells(n, 14)
Worksheets("Czynności Projektowe").Cells(i, 1).Select
ActiveCell.Hyperlinks.Add ActiveCell, Worksheets("Ustawienia").Cells(n, 15)
Worksheets("Czynności Projektowe").Cells(i, 2) = "#outline"
Worksheets("Czynności Projektowe").Cells(i, 3) = "nazwa projektu"
Worksheets("Czynności Projektowe").Cells(i, 4) = "name"
Worksheets("Czynności Projektowe").Cells(i, 5) = "resources"
Worksheets("Czynności Projektowe").Cells(i, 6) = "start date"
Worksheets("Czynności Projektowe").Cells(i, 7) = "finish date"
Worksheets("Czynności Projektowe").Cells(i, 8) = "% Complete"
i = i + 1
'--------------- tasks
For Each t In ts
'If Not t.Summary Then
' MsgBox t.Start
'MsgBox Koniec
'If t.Finish = Start Or t.Start = Koniec Then
If Not (t.Finish < Start Or t.Start > Koniec) Then 'TU WYSKAKUJE BŁĄD
'If t.Start > Koniec Then
Worksheets("Czynności Projektowe").Cells(i, 3) = Worksheets("Ustawienia").Cells(n, 14)
Worksheets("Czynności Projektowe").Cells(i, 4) = t.Name
Worksheets("Czynności Projektowe").Cells(i, 5) = t.ResourceNames
Worksheets("Czynności Projektowe").Cells(i, 6) = t.Start
Worksheets("Czynności Projektowe").Cells(i, 7) = t.Finish
Worksheets("Czynności Projektowe").Cells(i, 8) = t.PercentComplete
i = i + 1
End If
' End If
Next t
Proj.FileClose pjDoNotSave
Next n
Range("A1").Select
End Sub
Pliki, które się otwierają i zgrywają poprawnie oraz te, które generują błąd są stworzone w takich samych wersjach, posiadają tak samo nazwane kolumny, jeśli chodzi o budowę są identyczne.
Próbowałem deklarować zmienne obiektowe t.Finish itd ale bez powodzenia.
Z góry dzięki za pomoc.
zanotowane.pl doc.pisz.pl pdf.pisz.pl katkaras.opx.pl
Mam następujący problem:
Posiadam makro, które otwiera pliki ms projecta i zaciąga z nich zadania wraz z czasem trwania itd (określone kolumny z projecta) i wkleja do excela. Problem polega na tym, że przy otwieraniu niektórych plików ms projecta pojawia się błąd:
Run-Time Error '91':
Object variable or With block variable not set.
Poniżej kod, oraz miejsce w którym wyskakuje błąd:
Private Sub update()
Dim i, n, max, b As Integer
Dim Proj As MSProject.Application
Dim ts As MSProject.Tasks
Dim t As MSProject.Task
Worksheets("Czynności Projektowe").Activate
Start = Cells(1, 2).Value
Koniec = Cells(2, 2).Value
i = 10000
max = Worksheets("Ustawienia").Cells(1, 14)
'--------------- projects
For n = 4 To max + 3
Set Proj = CreateObject("MSProject.Application")
Proj.Visible = False
Proj.FileOpen Name:=Worksheets("Ustawienia").Cells(n, 15), ReadOnly:=True
Set ts = ActiveProject.Tasks
'--------------- menu
Application.ScreenUpdating = False
Worksheets("Czynności Projektowe").Cells(i, 1) = "Project: " & Worksheets("Ustawienia").Cells(n, 14)
Worksheets("Czynności Projektowe").Cells(i, 1).Select
ActiveCell.Hyperlinks.Add ActiveCell, Worksheets("Ustawienia").Cells(n, 15)
Worksheets("Czynności Projektowe").Cells(i, 2) = "#outline"
Worksheets("Czynności Projektowe").Cells(i, 3) = "nazwa projektu"
Worksheets("Czynności Projektowe").Cells(i, 4) = "name"
Worksheets("Czynności Projektowe").Cells(i, 5) = "resources"
Worksheets("Czynności Projektowe").Cells(i, 6) = "start date"
Worksheets("Czynności Projektowe").Cells(i, 7) = "finish date"
Worksheets("Czynności Projektowe").Cells(i, 8) = "% Complete"
i = i + 1
'--------------- tasks
For Each t In ts
'If Not t.Summary Then
' MsgBox t.Start
'MsgBox Koniec
'If t.Finish = Start Or t.Start = Koniec Then
If Not (t.Finish < Start Or t.Start > Koniec) Then 'TU WYSKAKUJE BŁĄD
'If t.Start > Koniec Then
Worksheets("Czynności Projektowe").Cells(i, 3) = Worksheets("Ustawienia").Cells(n, 14)
Worksheets("Czynności Projektowe").Cells(i, 4) = t.Name
Worksheets("Czynności Projektowe").Cells(i, 5) = t.ResourceNames
Worksheets("Czynności Projektowe").Cells(i, 6) = t.Start
Worksheets("Czynności Projektowe").Cells(i, 7) = t.Finish
Worksheets("Czynności Projektowe").Cells(i, 8) = t.PercentComplete
i = i + 1
End If
' End If
Next t
Proj.FileClose pjDoNotSave
Next n
Range("A1").Select
End Sub
Pliki, które się otwierają i zgrywają poprawnie oraz te, które generują błąd są stworzone w takich samych wersjach, posiadają tak samo nazwane kolumny, jeśli chodzi o budowę są identyczne.
Próbowałem deklarować zmienne obiektowe t.Finish itd ale bez powodzenia.
Z góry dzięki za pomoc.