<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Are macro's work in server environment. in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396684#M423899</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Team&lt;/P&gt;&lt;P&gt;I am facing an issue with macros in a server environment. are there work on the server?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Currently, I am trying to use excel macro. Trying to export a table through a macro. It is working well in the local environment but in the server after publishing it is not working.&lt;/P&gt;&lt;P&gt;My code is :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'Sub exportTable&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' set obj = ActiveDocument.GetSheetObject("CH156")&lt;/P&gt;&lt;P&gt;' set objSelection = ActiveDocument.GetSheetObject("CS11")&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' objSelection&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' obj.ExportEx "ExportTableResult.xls",5&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;'End Sub&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Simple Export of just one object&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;sub exportToExcel_Variant1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Array for export definitions&lt;/P&gt;&lt;P&gt;Dim aryExport(0,3)&lt;/P&gt;&lt;P&gt;Dim strObjectToPrint&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;strObjectToPrint = ActiveDocument.Variables("vTableId").GetContent().String&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'aryExport(0,0) = "CS11"&lt;/P&gt;&lt;P&gt;'aryExport(0,1) = "Data Table" &lt;/P&gt;&lt;P&gt;'aryExport(0,2) = "A1"&lt;/P&gt;&lt;P&gt;'aryExport(0,3) = "data"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;aryExport(0,0) = strObjectToPrint '"CH155" '//Object ID to Print in Excel&lt;/P&gt;&lt;P&gt;aryExport(0,1) = "Sheet1" &lt;/P&gt;&lt;P&gt;aryExport(0,2) = "A1"&lt;/P&gt;&lt;P&gt;aryExport(0,3) = "data"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end sub&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// copyObjectsToExcel&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// Parameters:&lt;/P&gt;&lt;P&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;/P&gt;&lt;P&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;/P&gt;&lt;P&gt;'// outside of QlikView ...&lt;/P&gt;&lt;P&gt;'// aryExportDefinition - array of settings&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// Version 1.02&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// The aryExportDefinition is used to pass the following properties to &lt;/P&gt;&lt;P&gt;'// copyObjectsToExcelSheet:&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'//&amp;nbsp;&amp;nbsp; Index Description&lt;/P&gt;&lt;P&gt;'// ------------------------&lt;/P&gt;&lt;P&gt;'// 0 - Id of the QlikView object to copy from&lt;/P&gt;&lt;P&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'// (If a sheet with the same name already exists no new &lt;/P&gt;&lt;P&gt;'// sheet will be created, instead the existing sheet will &lt;/P&gt;&lt;P&gt;'// be used for pasting the object)&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'// Note: the sheetName can be max 31 characters long&lt;/P&gt;&lt;P&gt;'// &lt;/P&gt;&lt;P&gt;'// 2 - Range in Excel where the object should be pasted to&lt;/P&gt;&lt;P&gt;'// 3 - PasteMode ["data", "image"]&lt;/P&gt;&lt;P&gt;'// Defines if the objects underlaying data should be &lt;/P&gt;&lt;P&gt;'// pasted ("data") or the the image representing the object&lt;/P&gt;&lt;P&gt;'// should be used&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim i 'as Integer&lt;/P&gt;&lt;P&gt;Dim objExcelApp 'as Excel.Application&lt;/P&gt;&lt;P&gt;Dim objExcelDoc 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;/P&gt;&lt;P&gt;objExcelApp.DisplayAlerts = false&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim strSourceObject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim qvObjectId 'as String &lt;/P&gt;&lt;P&gt;Dim sheetName&lt;/P&gt;&lt;P&gt;Dim sheetRange&lt;/P&gt;&lt;P&gt;Dim pasteMode&lt;/P&gt;&lt;P&gt;Dim objSource&lt;/P&gt;&lt;P&gt;Dim objCurrentSheet&lt;/P&gt;&lt;P&gt;Dim objExcelSheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Get the properties of the exportDefinition array&lt;/P&gt;&lt;P&gt;qvObjectId = aryExportDefinition(i,0)&lt;/P&gt;&lt;P&gt;sheetName = aryExportDefinition(i,1)&lt;/P&gt;&lt;P&gt;sheetRange = aryExportDefinition(i,2)&lt;/P&gt;&lt;P&gt;pasteMode = aryExportDefinition(i,3)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;/P&gt;&lt;P&gt;if (objExcelSheet is nothing) then&lt;/P&gt;&lt;P&gt;Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;/P&gt;&lt;P&gt;if (objExcelSheet is nothing) then&lt;/P&gt;&lt;P&gt;msgbox("No sheet could be created, this should not occur!!!")&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExcelSheet.Select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;/P&gt;&lt;P&gt;Call objSource.GetSheet().Activate()&lt;/P&gt;&lt;P&gt;objSource.Maximize&lt;/P&gt;&lt;P&gt;qvDoc.GetApplication.WaitForIdle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (not objSource is nothing) then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (pasteMode = "image") then&lt;/P&gt;&lt;P&gt;Call objSource.CopyBitmapToClipboard()&lt;/P&gt;&lt;P&gt;else&lt;/P&gt;&lt;P&gt;Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(sheetName).Paste&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (pasteMode &amp;lt;&amp;gt; "image") then&lt;/P&gt;&lt;P&gt;With objExcelApp.Selection&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .WrapText = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ShrinkToFit = True&lt;/P&gt;&lt;P&gt;End With&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;end if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;objCurrentSheet.Range("A1").Select&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;next&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Finally select the first sheet&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(1).Select&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Return value&lt;/P&gt;&lt;P&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Internal function for getting the Excel sheet by sheetName&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Each ws In objExcelDoc.Worksheets&lt;/P&gt;&lt;P&gt;If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;/P&gt;&lt;P&gt;Set Excel_GetSheetByName = ws&lt;/P&gt;&lt;P&gt;exit function&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// default return value&lt;/P&gt;&lt;P&gt;Set Excel_GetSheetByName = nothing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;End Function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// can be max 31 characters long&lt;/P&gt;&lt;P&gt;retVal = trim(left(sheetName, 31))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Excel_GetSafeSheetName = retVal&lt;/P&gt;&lt;P&gt;End Function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Internal function for adding a new sheet&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// add a sheet to the last position&lt;/P&gt;&lt;P&gt;objExcelApplication.Sheets.Add, objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim objNewSheet&lt;/P&gt;&lt;P&gt;Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;/P&gt;&lt;P&gt;objNewSheet.Name = left(sheetName,31)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// return the newly created sheet&lt;/P&gt;&lt;P&gt;Set Excel_AddSheet = objNewSheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;End function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Delete all empty sheets&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc) &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Each ws In objExcelDoc.Worksheets&lt;/P&gt;&lt;P&gt;If (not HasOtherObjects(ws)) then&lt;/P&gt;&lt;P&gt;If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;/P&gt;&lt;P&gt;On Error Resume Next&lt;/P&gt;&lt;P&gt;Call ws.Delete()&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;End Sub &lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Helper function to determine if there are other objects placed&lt;/P&gt;&lt;P&gt;'// on the sheet ...&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = false&lt;/P&gt;&lt;P&gt;End Function &lt;/P&gt;&lt;P&gt;'//__________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I made Requested Module Security as "System Access" and Current Local Security as "Allow System Access". Along with these, I made "Allow un-safe macros" on the server also.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually, my requirement is to export a formatted excel when the user clicks on Send to Excel. I am achieving the below formatted excel when I am going through a macro. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please, anyone, help in this case. Either with macro or any other way to achieve the formatted excel export which works on the server.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="as.jpg" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/177436_as.jpg" style="height: 269px; width: 620px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Vandith&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.qlik.com/qlik-users/2016"&gt;nick2009&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2010"&gt;bgh&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2012"&gt;bpn&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2009"&gt;erika&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2006"&gt;jimhalpert&lt;/A&gt;&lt;A href="https://community.qlik.com/qlik-users/2019"&gt;protoolspc&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2021"&gt;laughsmile&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2017"&gt;theresaa&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/218859"&gt;loveisfail&lt;/A&gt;‌&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Sep 2017 10:32:15 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2017-09-22T10:32:15Z</dc:date>
    <item>
      <title>Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396684#M423899</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Team&lt;/P&gt;&lt;P&gt;I am facing an issue with macros in a server environment. are there work on the server?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Currently, I am trying to use excel macro. Trying to export a table through a macro. It is working well in the local environment but in the server after publishing it is not working.&lt;/P&gt;&lt;P&gt;My code is :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'Sub exportTable&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' set obj = ActiveDocument.GetSheetObject("CH156")&lt;/P&gt;&lt;P&gt;' set objSelection = ActiveDocument.GetSheetObject("CS11")&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' objSelection&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;' obj.ExportEx "ExportTableResult.xls",5&lt;/P&gt;&lt;P&gt;'&lt;/P&gt;&lt;P&gt;'End Sub&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Simple Export of just one object&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;sub exportToExcel_Variant1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Array for export definitions&lt;/P&gt;&lt;P&gt;Dim aryExport(0,3)&lt;/P&gt;&lt;P&gt;Dim strObjectToPrint&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;strObjectToPrint = ActiveDocument.Variables("vTableId").GetContent().String&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'aryExport(0,0) = "CS11"&lt;/P&gt;&lt;P&gt;'aryExport(0,1) = "Data Table" &lt;/P&gt;&lt;P&gt;'aryExport(0,2) = "A1"&lt;/P&gt;&lt;P&gt;'aryExport(0,3) = "data"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;aryExport(0,0) = strObjectToPrint '"CH155" '//Object ID to Print in Excel&lt;/P&gt;&lt;P&gt;aryExport(0,1) = "Sheet1" &lt;/P&gt;&lt;P&gt;aryExport(0,2) = "A1"&lt;/P&gt;&lt;P&gt;aryExport(0,3) = "data"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end sub&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// copyObjectsToExcel&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// Parameters:&lt;/P&gt;&lt;P&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;/P&gt;&lt;P&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;/P&gt;&lt;P&gt;'// outside of QlikView ...&lt;/P&gt;&lt;P&gt;'// aryExportDefinition - array of settings&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// Version 1.02&lt;/P&gt;&lt;P&gt;'// ~~&lt;/P&gt;&lt;P&gt;'// The aryExportDefinition is used to pass the following properties to &lt;/P&gt;&lt;P&gt;'// copyObjectsToExcelSheet:&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'//&amp;nbsp;&amp;nbsp; Index Description&lt;/P&gt;&lt;P&gt;'// ------------------------&lt;/P&gt;&lt;P&gt;'// 0 - Id of the QlikView object to copy from&lt;/P&gt;&lt;P&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'// (If a sheet with the same name already exists no new &lt;/P&gt;&lt;P&gt;'// sheet will be created, instead the existing sheet will &lt;/P&gt;&lt;P&gt;'// be used for pasting the object)&lt;/P&gt;&lt;P&gt;'//&lt;/P&gt;&lt;P&gt;'// Note: the sheetName can be max 31 characters long&lt;/P&gt;&lt;P&gt;'// &lt;/P&gt;&lt;P&gt;'// 2 - Range in Excel where the object should be pasted to&lt;/P&gt;&lt;P&gt;'// 3 - PasteMode ["data", "image"]&lt;/P&gt;&lt;P&gt;'// Defines if the objects underlaying data should be &lt;/P&gt;&lt;P&gt;'// pasted ("data") or the the image representing the object&lt;/P&gt;&lt;P&gt;'// should be used&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim i 'as Integer&lt;/P&gt;&lt;P&gt;Dim objExcelApp 'as Excel.Application&lt;/P&gt;&lt;P&gt;Dim objExcelDoc 'as Excel.Workbook&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;/P&gt;&lt;P&gt;objExcelApp.DisplayAlerts = false&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim strSourceObject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim qvObjectId 'as String &lt;/P&gt;&lt;P&gt;Dim sheetName&lt;/P&gt;&lt;P&gt;Dim sheetRange&lt;/P&gt;&lt;P&gt;Dim pasteMode&lt;/P&gt;&lt;P&gt;Dim objSource&lt;/P&gt;&lt;P&gt;Dim objCurrentSheet&lt;/P&gt;&lt;P&gt;Dim objExcelSheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Get the properties of the exportDefinition array&lt;/P&gt;&lt;P&gt;qvObjectId = aryExportDefinition(i,0)&lt;/P&gt;&lt;P&gt;sheetName = aryExportDefinition(i,1)&lt;/P&gt;&lt;P&gt;sheetRange = aryExportDefinition(i,2)&lt;/P&gt;&lt;P&gt;pasteMode = aryExportDefinition(i,3)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;/P&gt;&lt;P&gt;if (objExcelSheet is nothing) then&lt;/P&gt;&lt;P&gt;Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;/P&gt;&lt;P&gt;if (objExcelSheet is nothing) then&lt;/P&gt;&lt;P&gt;msgbox("No sheet could be created, this should not occur!!!")&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExcelSheet.Select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;/P&gt;&lt;P&gt;Call objSource.GetSheet().Activate()&lt;/P&gt;&lt;P&gt;objSource.Maximize&lt;/P&gt;&lt;P&gt;qvDoc.GetApplication.WaitForIdle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (not objSource is nothing) then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (pasteMode = "image") then&lt;/P&gt;&lt;P&gt;Call objSource.CopyBitmapToClipboard()&lt;/P&gt;&lt;P&gt;else&lt;/P&gt;&lt;P&gt;Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(sheetName).Paste&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (pasteMode &amp;lt;&amp;gt; "image") then&lt;/P&gt;&lt;P&gt;With objExcelApp.Selection&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .WrapText = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ShrinkToFit = True&lt;/P&gt;&lt;P&gt;End With&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;end if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;objCurrentSheet.Range("A1").Select&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;end if&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;next&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Finally select the first sheet&lt;/P&gt;&lt;P&gt;objExcelDoc.Sheets(1).Select&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// Return value&lt;/P&gt;&lt;P&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Internal function for getting the Excel sheet by sheetName&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Each ws In objExcelDoc.Worksheets&lt;/P&gt;&lt;P&gt;If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;/P&gt;&lt;P&gt;Set Excel_GetSheetByName = ws&lt;/P&gt;&lt;P&gt;exit function&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// default return value&lt;/P&gt;&lt;P&gt;Set Excel_GetSheetByName = nothing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;End Function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// can be max 31 characters long&lt;/P&gt;&lt;P&gt;retVal = trim(left(sheetName, 31))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Excel_GetSafeSheetName = retVal&lt;/P&gt;&lt;P&gt;End Function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Internal function for adding a new sheet&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// add a sheet to the last position&lt;/P&gt;&lt;P&gt;objExcelApplication.Sheets.Add, objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim objNewSheet&lt;/P&gt;&lt;P&gt;Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;/P&gt;&lt;P&gt;objNewSheet.Name = left(sheetName,31)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// return the newly created sheet&lt;/P&gt;&lt;P&gt;Set Excel_AddSheet = objNewSheet&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;End function&lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Delete all empty sheets&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc) &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Each ws In objExcelDoc.Worksheets&lt;/P&gt;&lt;P&gt;If (not HasOtherObjects(ws)) then&lt;/P&gt;&lt;P&gt;If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;/P&gt;&lt;P&gt;On Error Resume Next&lt;/P&gt;&lt;P&gt;Call ws.Delete()&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;End Sub &lt;/P&gt;&lt;P&gt;'// ________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;'// Helper function to determine if there are other objects placed&lt;/P&gt;&lt;P&gt;'// on the sheet ...&lt;/P&gt;&lt;P&gt;'// ****************************************************************&lt;/P&gt;&lt;P&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HasOtherObjects = false&lt;/P&gt;&lt;P&gt;End Function &lt;/P&gt;&lt;P&gt;'//__________________________________________________________________&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I made Requested Module Security as "System Access" and Current Local Security as "Allow System Access". Along with these, I made "Allow un-safe macros" on the server also.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually, my requirement is to export a formatted excel when the user clicks on Send to Excel. I am achieving the below formatted excel when I am going through a macro. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please, anyone, help in this case. Either with macro or any other way to achieve the formatted excel export which works on the server.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="as.jpg" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/177436_as.jpg" style="height: 269px; width: 620px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Vandith&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.qlik.com/qlik-users/2016"&gt;nick2009&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2010"&gt;bgh&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2012"&gt;bpn&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2009"&gt;erika&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2006"&gt;jimhalpert&lt;/A&gt;&lt;A href="https://community.qlik.com/qlik-users/2019"&gt;protoolspc&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2021"&gt;laughsmile&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/2017"&gt;theresaa&lt;/A&gt;‌&lt;A href="https://community.qlik.com/qlik-users/218859"&gt;loveisfail&lt;/A&gt;‌&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Sep 2017 10:32:15 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396684#M423899</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2017-09-22T10:32:15Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396685#M423900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you are using WebView (Ajax) as client it will not work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Solution(?): try plugin instead.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Sep 2017 10:38:42 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396685#M423900</guid>
      <dc:creator>jerrysvensson</dc:creator>
      <dc:date>2017-09-22T10:38:42Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396686#M423901</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And check this chapter of the on-line documentation that deals with all things macros that will/won't work when your document is published on a QlikView Server:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.qlikview.com/en-US/qlikview/12.1/Subsystems/Client/Content/UsingMacrosonQVS.htm" title="http://help.qlikview.com/en-US/qlikview/12.1/Subsystems/Client/Content/UsingMacrosonQVS.htm"&gt;Using Macros in QV Documents on the QV-Server ‒ QlikView&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Sep 2017 14:35:53 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396686#M423901</guid>
      <dc:creator>Peter_Cammaert</dc:creator>
      <dc:date>2017-09-22T14:35:53Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396687#M423902</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jerry&lt;/P&gt;&lt;P&gt;Can you please elaborate how to use the &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px;"&gt;plugin.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Vandith&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Sep 2017 06:50:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396687#M423902</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2017-09-25T06:50:54Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396688#M423903</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Peter&lt;/P&gt;&lt;P&gt;As the point "Server Side Export" is saying that export to excel will work by using the macro. But in my document, it is not working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Vandith&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Sep 2017 06:53:13 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396688#M423903</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2017-09-25T06:53:13Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396689#M423904</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Peter is probably refering to the API function ServerSideExportEx and not your macro.&lt;/P&gt;&lt;P&gt;Your macro use the Excel object and it needs at least Excel installed on your QlikView server.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Sep 2017 14:12:00 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396689#M423904</guid>
      <dc:creator>jerrysvensson</dc:creator>
      <dc:date>2017-09-26T14:12:00Z</dc:date>
    </item>
    <item>
      <title>Re: Are macro's work in server environment.</title>
      <link>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396690#M423905</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let the user(s) install plugin. Then it should work if the user has Excel installed on their machine. &lt;/P&gt;&lt;P&gt;Plugin runs locally on client.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Sep 2017 14:13:15 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Are-macro-s-work-in-server-environment/m-p/1396690#M423905</guid>
      <dc:creator>jerrysvensson</dc:creator>
      <dc:date>2017-09-26T14:13:15Z</dc:date>
    </item>
  </channel>
</rss>

