Страницы: 1
RSS
Помогите выделить из логов суть ошибки
 
Добрый день, помогите, пожалуйста, выделить из лога EXCEL то, с чем связана ошибка в конце выполнения всех макросов (выполнение заканчивается успехом, все поставленные задачи исполняются, кроме автосохраннения и закрытия)
Код
Сообщение об ошибке:

Could not find a PackageSession for the given sessionID.

Трассировка стека:

Microsoft.Mashup.Host.Document.Storage.InvalidPackageReferenceException: Could not find a PackageSession for the given sessionID.
   в Microsoft.Mashup.Host.Document.Storage.Local.LocalPackageSessionStorage.GetLocalPackageSessionIndex(LocalPackageSessions localPackageSessions, UserIdentity userIdentity, Int32 sessionID)
   в Microsoft.Mashup.Host.Document.Storage.Local.LocalPackageSessionStorage.GetSessionStorage(PackagePath packagePath, PackageSession packageSession)
   в Microsoft.Mashup.Host.Document.Storage.TracingPackageSessionStorage.GetSessionStorage(PackagePath packagePath, PackageSession packageSession)
   в Microsoft.Mashup.Host.Document.Storage.PackageStorageCache.Take(PackageReference packageReference)
   в Microsoft.Mashup.Host.Document.PackageEditorContext..ctor(PackageReference packageReference)
   в Microsoft.Mashup.Host.Document.Analysis.AnalysisManager.StartPackageAnalysis(AnalysisSession session, PackageReference packageReference, Int32 editVersion, Boolean refreshData, HashSet`1 formulaFilter, Action callback)
   в Microsoft.Mashup.Host.Document.Analysis.AnalysisManager.<>c__DisplayClass6.<StartSessionAnalysisCore>b__2(Object state)
   в Microsoft.Mashup.Host.Document.GlobalizedThreadPool.<>c__DisplayClass2.<>c__DisplayClass4.<WrapCallback>b__1()
   в Microsoft.Mashup.Host.Document.ExceptionHandlerExtensions.HandleExceptions(IExceptionHandler exceptionHandler, Action action)

Трассировка стека вызова:

   в Microsoft.Mashup.Host.Document.ExceptionExtensions.GetCurrentInvocationStackTrace()
   в Microsoft.Mashup.Client.ClientShared.UnexpectedExceptionHandler.HandleException(Exception e)
   в Microsoft.Mashup.Host.Document.ExceptionHandlerExtensions.HandleExceptions(IExceptionHandler exceptionHandler, Action action)
   в Microsoft.Mashup.Host.Document.GlobalizedThreadPool.<>c__DisplayClass2.<WrapCallback>b__0(Object state)
   в System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   в System.Threading.ThreadPoolWorkQueue.Dispatch()
   в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Улыбнись.
 
Цитата
кроме автосохраннения и закрытия
так может надо начинать не с анализа трассировки стеков, а с анализа кода макроса?
 
Код
Sub Создать_отчеты()
'
'
'
'
'
            ' ОТКЛЮЧИТЬ ОБНОВЛЕНИЕ ЭКРАНА
                   Application.ScreenUpdating = False
 
            ' ОБНОВИТЬ ВСЕ ЗАПРОСЫ
                  ActiveWorkbook.RefreshAll
         
            ' ОТКЛЮЧЕНИЕ ОКНА С ТЕКСТОМ О ПЕРСОНАЛЬНЫХ ДАННЫХ
            If ActiveWorkbook.RemovePersonalInformation Then
               ActiveWorkbook.RemovePersonalInformation = False
              End If
   
   
     
  ' СОЗДАНИЕ КОПИЙ 'Идеал.xlsm' и присвоение названий из списка в '1 База.xlsm'
   
        Путь = ThisWorkbook.Path & "\"
        Dim sPath
        sPath = CreatePath(Путь & "Газпром")
         SourceFile = Путь & "ИДЕАЛ.xlsm"
     With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
        oldCalc = .Calculation
        .Calculation = xlCalculationAutomatic
    End With
    For Each NewFile In Cells(5, 1).Resize(Cells(5, 1).End(xlDown).Row - 4)
        StrDistFileName = Путь & "\Газпром\" & NewFile & "." & "xlsm"
        FileCopy SourceFile, StrDistFileName
        Set DistWB = Application.Workbooks.Open(Filename:=StrDistFileName)
        With DistWB
            .Worksheets(1).Cells(30, 12).Value = NewFile.Value
            .Save
            .Close
        End With
    Next
    With Application
        .DisplayAlerts = True
        .ScreenUpdating = False
        .EnableEvents = True
        .Calculation = oldCalc
    End With
     
'========Начало копирования в созданную папку "Газпром" файлов "1 База.xlsm" и "ОтчетГПН.*"
                  Dim objFSO As Object, objFile As Object
     
                  Dim sFileName As String, sNewFileName As String, sFileName1 As String, sNewFileName1 As String ' переменные
                  Dim gazpr As String, file1 As String, file2 As String ' переменные
     
                  gazpr = "\Газпром" ' Папка, в которую копируем
                  file1 = "\" & "ОтчетГПН.xlsx" 'имя исходного файла №1
                  file2 = "\" & "1 База.xlsm"   'имя исходного файла №2
                  sFileName1 = ThisWorkbook.Path & file1  'ИТОГ (ПАПКА\ФАЙЛ)имя исходного файла1
                  sNewFileName1 = ThisWorkbook.Path & gazpr & file1     'имя файла1 для переименования
                  sFileName = ThisWorkbook.Path & file2 'ИТОГ (ПАПКА\ФАЙЛ)имя исходного файла2
                  sNewFileName = ThisWorkbook.Path & gazpr & file2    'имя файла2 для переименования
     
                  Set objFSO = CreateObject("Scripting.FileSystemObject")
                  Set objFile = objFSO.GetFile(sFileName)
                  Set objFile1 = objFSO.GetFile(sFileName1)
                  objFile.Copy sNewFileName
                  objFile1.Copy sNewFileName1
'========Конец КОПИРОВАНИЯ===============================
             
             
   
' СОХРАНИТЬ И ЗАКРЫТЬ
Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit
 
End Sub
 
 
 
 
 
 
 
 
 
 
'================Начало функции Создания папки
Function CreatePath(PathName) As Boolean
  ' Формирование папки с указанным именем.
  ' Имя папки должно быть полным и начинаться с имени драйвера (диска или сетевого сервера).
  ' Функция создает указанную папку с любым уровнем вложения папок _
    (в отличие от стандраного средтва объекта FileSystemObject, который создает только концевую папку).
  ' Возвращает True если папка уже существует или если она успешно создана.
Dim FSO, cDrive$, cFolder$, aFolders, nFolder, pSp
   Set FSO = CreateObject("Scripting.FileSystemObject")
   pSp = Application.PathSeparator
  If FSO.FolderExists(PathName) Then
    CreatePath = True
    Exit Function
  End If
  cDrive = FSO.GetDriveName(PathName)
  cFolder = Mid$(PathName, Len(cDrive) + 2)
  If Right$(cFolder, 1) = pSp Then cFolder = Left$(cFolder, Len(cFolder) - 1)
  If Left$(cFolder, 1) = pSp Then cFolder = Mid$(cFolder, 2)
  aFolders = Split(cFolder, pSp, -1, 0)
  cFolder = cDrive & pSp
  If Not FSO.FolderExists(cFolder) Then
    On Error GoTo Break
    FSO.CreateFolder cFolder
  End If
  If Not IsEmpty(aFolders) Then
    For nFolder = 0 To UBound(aFolders)
      cFolder = cFolder & aFolders(nFolder) & pSp
      If Not FSO.FolderExists(cFolder) Then
        On Error GoTo Break
        FSO.CreateFolder cFolder
      End If
    Next
  End If
  If Not FSO.FolderExists(cFolder) Then GoTo Break
  CreatePath = True
  Set FSO = Nothing
  Exit Function
  
Break:
  If MsgBox(Err.Description, vbExclamation + vbOKCancel, _
      "clsFSO.CreatePath") = vbCancel Then Stop
End Function
 
'================Конец функции Создания папки

Изменено: falmrom - 30.04.2018 00:58:17
Улыбнись.
 
Цитата
falmrom написал:
Код
Sub çàêðûòü()
With Aplication
ActiveWorkbook.Save
Application.Quit
ActiveWorkbook.Close True
End With
End Sub
Сначала убиваем апликейшен, потом в нем пытаемся закрыть книгу.
Изменено: Doober - 29.04.2018 14:58:42
 
Doober, убрал "ActiveWorkbook.Close True"
Макрос стал висуть в самом конце, после выполнения всех действия. Должен закрыть книгу, а делает что-то в фоне и жрет оперативку.
upd:в итоге, выдал ту же ошибку
Может, есть у кого вариант кода сохранения изменений и закрытия Excel?  
Изменено: falmrom - 29.04.2018 15:11:16
Улыбнись.
 
Цитата
falmrom написал:
With Aplication
With что?! Option Explicit в очередной раз рулит!
 
falmrom, ну сколько можно? Копируйте код при русской раскладке клавиатуры.
 
Логи не расшифровывал. Переписал макрос пограмотнее с помощью форумчан и все отлично работает.
Изменено: falmrom - 18.05.2018 18:35:10
Улыбнись.
Страницы: 1
Наверх