Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
snumric7
Contributor III
Contributor III

Не работает макрос через портал

Здравствуйте. Не работает макрос на портале ver 2017 sr7, локально на сервере или рабочем ПК работает.

В диспетчере задач видно как открылся процесс Excel (на сервере установлен 2016 x64)

в лог записалась строчка о Старт дата время и все, процесс  Excel в диспетчере висит и ничего не происходит.

Как понять, чего не хватает?

sub Export
dim fso, MyFile, strFile, strText
  set obj = ActiveDocument.GetSheetObject("CH05")
  set vMonths = ActiveDocument.Fields("Квартал").GetPossibleValues
  vPath = ActiveDocument.Variables("vReport").GetContent.String
 
' Создание каталога, при его отсутствии
  Set fileSystemObject = CreateObject("Scripting.FileSystemObject") 
  If Not fileSystemObject.FolderExists(vPath) Then 
       fileSystemObject.CreateFolder(vPath) 
  End If 

' Запись в лог, старта
  strFile=vPath & "\log_macro.txt"
  Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(strFile) Then
        Set MyFile = fso.OpenTextFile (strFile, 8, True)
    Else
        Set MyFile = fso.CreateTextFile(strFile)
        MyFile.WriteLine("""мой_файл""")
    End If
   strText= "Старт " & """" & Now() & ""
   MyFile.WriteLine(strText)

  set objExcel = CreateObject("Excel.Application")
  objExcel.Visible = false
  objExcel.DisplayAlerts = false
  set objWrkBk = objExcel.Workbooks.Add
  i = objWrkBk.Worksheets.Count
  Do Until i = 1
   objWrkBk.Worksheets(i).Delete
   i = i - 1
  Loop
  For i = 0 to vMonths.Count -1
  objWrkBk.Sheets.Add(, objWrkBk.Sheets(objWrkBk.Sheets.Count)).Name = vMonths(i).Text 
  ActiveDocument.Fields("Квартал").Select vMonths(i).Text
  Set ASheet = objExcel.Sheets(vMonths(i).Text)
ASheet.Range("A1").Select
obj.CopyTableToClipboard true
  ASheet.Paste

   strText= "кв " & vMonths(i).Text & " " & """" & Now() & ""
   MyFile.WriteLine(strText)

  Next
     For i = 0 to vMonths.Count -2
       ActiveDocument.Fields("Квартал").ToggleSelect  vMonths(i).Text
     Next
  objWrkBk.Sheets(1).Delete
  ASheet.SaveAs vPath & "\мой_файл.xlsx"
  objWrkBk.Close
  objExcel.Quit
strText= "Окончание " & """" & Now() & ""
MyFile.WriteLine(strText)
MyFile.Close
end sub 

10 Replies
snumric7
Contributor III
Contributor III
Author

Эти 2 строчки не помогают. Модель 208Мб

Когда столбцов немного, скажем 5, 3,6 мил. успешно выгружаются,

когда рабочий вариант 32 столбца, не выгружаются.

Память уходит в насыщение где то на 13,5 Гб.( 40Гб. свободно), после чего процессорное не расходуется, сутки висело и не с места.

Не у всех пользователей есть ресурсы ПК выгружать локально, поэтому самый правильный вариант для large, использовать

ServerSideExportEx, но вот засада Qlik похоже забросил её, она выгружает в формате 2003 офиса, т.е. несжатый по 65 тыс. строк на лист. Может исправят в ноябрьском релизе 2018 г., нужно уточнить.

P.s. Порылся по просторам community нашел несколько запросов подобной тематики с нерешенным статусом.