<?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 Re: Macro error in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158746#M899442</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Below is the code:Am getting the error while running the &lt;STRONG style="color: #000000; font-size: 16px;"&gt;exportToExcel_Variant5 &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P data-marker="__QUOTED_TEXT__"&gt;&lt;/P&gt;&lt;DIV style="font-size: 12pt; color: #000000;"&gt;&lt;DIV&gt;&lt;STRONG&gt;sub exportToExcel_Variant4&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;Dim aryExport(4,3) &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(0,0) = "CH23"&lt;BR /&gt;aryExport(0,1) = "Traffic Count By Month"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(1,0) = "CH26"&lt;BR /&gt;aryExport(1,1) = "Sales By Month"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(2,0) = "CH24"&lt;BR /&gt;aryExport(2,1) = "Top 10 Regional Preformers"&lt;BR /&gt;aryExport(2,2) = "A1"&lt;BR /&gt;aryExport(2,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(3,0) = "CH21"&lt;BR /&gt;aryExport(3,1) = "Sales Break Break Down By Year"&lt;BR /&gt;aryExport(3,2) = "A1"&lt;BR /&gt;aryExport(3,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(4,0) = "CH27"&lt;BR /&gt;aryExport(4,1) = "Traffic Count "&lt;BR /&gt;aryExport(4,2) = "A1"&lt;BR /&gt;aryExport(4,3) = "image"&lt;P&gt;&lt;/P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end sub&lt;P&gt;&lt;/P&gt;&lt;STRONG&gt;sub exportToExcel_Variant5 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Dim aryExport(3,3) &lt;/STRONG&gt;&lt;P&gt;&lt;/P&gt;&lt;STRONG&gt;aryExport(0,0) = "CH18"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,1) = "Traffic Count"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,0) = "CH17"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,1) = "Top Performers"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,0) = "CH07"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,1) = "Traffic Count Trend"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,0) = "CH16"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,1) = "Top 10 locations on Traffic count"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;'&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;''// Now either just leave Excel open or do some other stuff here&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;''// like saving the excel, some formatting stuff, ...&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;end sub&lt;/STRONG&gt;&lt;BR /&gt;' &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim i 'as Integer&lt;BR /&gt;Dim objExcelApp 'as Excel.Application&lt;BR /&gt;Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;objExcelApp.DisplayAlerts = false&lt;BR /&gt; &lt;BR /&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim strSourceObject&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim qvObjectId 'as String&lt;BR /&gt;Dim sheetName&lt;BR /&gt;Dim sheetRange&lt;BR /&gt;Dim pasteMode&lt;BR /&gt;Dim objSource&lt;BR /&gt;Dim objCurrentSheet&lt;BR /&gt;Dim objExcelSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// Get the properties of the exportDefinition array&lt;BR /&gt; qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt; sheetName = aryExportDefinition(i,1)&lt;BR /&gt; sheetRange = aryExportDefinition(i,2)&lt;BR /&gt; pasteMode = aryExportDefinition(i,3)&lt;BR /&gt; &lt;BR /&gt; Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt; end if&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; objExcelSheet.Select &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt; Call objSource.GetSheet().Activate()&lt;BR /&gt; 'objSource.Minimize&lt;BR /&gt; 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; if (not objSource is nothing) then&lt;BR /&gt; &lt;BR /&gt; if (pasteMode = "image") then&lt;BR /&gt; Call objSource.CopyBitmapToClipboard()&lt;BR /&gt; else&lt;BR /&gt; Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt; &lt;BR /&gt; if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt; With objExcelApp.Selection&lt;BR /&gt; .WrapText = False&lt;BR /&gt; .ShrinkToFit = False&lt;BR /&gt; End With &lt;BR /&gt; end if &lt;BR /&gt; &lt;BR /&gt; objCurrentSheet.Range("A1").Select &lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;next &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Finally select the first sheet&lt;BR /&gt;objExcelDoc.Sheets(1).Select&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Return value&lt;BR /&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt; Set Excel_GetSheetByName = ws&lt;BR /&gt; exit function&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// default return value&lt;BR /&gt;Set Excel_GetSheetByName = nothing&lt;BR /&gt; &lt;BR /&gt;End Function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// can be max 31 characters long&lt;BR /&gt; retVal = trim(left(sheetName, 31))&lt;BR /&gt; &lt;BR /&gt; Excel_GetSafeSheetName = retVal&lt;BR /&gt;End Function&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for adding a new sheet&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// add a sheet to the last position&lt;BR /&gt; objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; &lt;BR /&gt; Dim objNewSheet&lt;BR /&gt; Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; objNewSheet.Name = left(sheetName,31)&lt;BR /&gt; &lt;BR /&gt; '// return the newly created sheet&lt;BR /&gt; Set Excel_AddSheet = objNewSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;End function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Delete all empty sheets&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (not HasOtherObjects(ws)) then&lt;BR /&gt; If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt; On Error Resume Next&lt;BR /&gt; Call ws.Delete()&lt;BR /&gt; End If&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt;End Sub&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Helper function to determine if there are other objects placed&lt;BR /&gt;'// on the sheet ...&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt; Dim c&lt;BR /&gt; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; HasOtherObjects = false&lt;BR /&gt;End Function&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;sub exportToExcel_Variant5&lt;P&gt;&lt;/P&gt;Dim aryExport(4,3) &lt;P&gt;&lt;/P&gt;aryExport(0,0) = "CH17"&lt;BR /&gt;aryExport(0,1) = "Top Performers"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(1,0) = "CH07"&lt;BR /&gt;aryExport(1,1) = "Traffic Count Trend"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(2,0) = "CH16"&lt;BR /&gt;aryExport(2,1) = "Top 10 locations on Traffic count"&lt;BR /&gt;aryExport(2,2) = "A1"&lt;BR /&gt;aryExport(2,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(3,0) = "CH18"&lt;BR /&gt;aryExport(3,1) = "Traffic Count Analysis"&lt;BR /&gt;aryExport(3,2) = "A1"&lt;BR /&gt;aryExport(3,3) = "image"&lt;P&gt;&lt;/P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt;end sub&lt;P&gt;&lt;/P&gt;'sub exportToExcel_Variant5 &lt;BR /&gt;' &lt;BR /&gt;'Dim aryExport(3,3) &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(0,0) = "CH18"&lt;BR /&gt;'aryExport(0,1) = "Traffic Count"&lt;BR /&gt;'aryExport(0,2) = "A1"&lt;BR /&gt;'aryExport(0,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(1,0) = "CH17"&lt;BR /&gt;'aryExport(1,1) = "Top Performers"&lt;BR /&gt;'aryExport(1,2) = "A1"&lt;BR /&gt;'aryExport(1,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(2,0) = "CH07"&lt;BR /&gt;'aryExport(2,1) = "Traffic Count Trend"&lt;BR /&gt;'aryExport(2,2) = "A1"&lt;BR /&gt;'aryExport(2,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(3,0) = "CH16"&lt;BR /&gt;'aryExport(3,1) = "Top 10 locations on Traffic count"&lt;BR /&gt;'aryExport(3,2) = "A1"&lt;BR /&gt;'aryExport(3,3) = "image"&lt;BR /&gt;'&lt;BR /&gt;'Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;'Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;''// like saving the excel, some formatting stuff, ...&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end sub&lt;BR /&gt;' &lt;BR /&gt;'&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim i 'as Integer&lt;BR /&gt;'Dim objExcelApp 'as Excel.Application&lt;BR /&gt;'Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;'objExcelApp.DisplayAlerts = false&lt;BR /&gt;' &lt;BR /&gt;'Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim strSourceObject&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim qvObjectId 'as String&lt;BR /&gt;'Dim sheetName&lt;BR /&gt;'Dim sheetRange&lt;BR /&gt;'Dim pasteMode&lt;BR /&gt;'Dim objSource&lt;BR /&gt;'Dim objCurrentSheet&lt;BR /&gt;'Dim objExcelSheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// Get the properties of the exportDefinition array&lt;BR /&gt;' qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt;' sheetName = aryExportDefinition(i,1)&lt;BR /&gt;' sheetRange = aryExportDefinition(i,2)&lt;BR /&gt;' pasteMode = aryExportDefinition(i,3)&lt;BR /&gt;' &lt;BR /&gt;' Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt;' if (objExcelSheet is nothing) then&lt;BR /&gt;' Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt;' if (objExcelSheet is nothing) then&lt;BR /&gt;' msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt;' end if&lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' objExcelSheet.Select &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt;' Call objSource.GetSheet().Activate()&lt;BR /&gt;' 'objSource.Minimize&lt;BR /&gt;' 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' if (not objSource is nothing) then&lt;BR /&gt;' &lt;BR /&gt;' if (pasteMode = "image") then&lt;BR /&gt;' Call objSource.CopyBitmapToClipboard()&lt;BR /&gt;' else&lt;BR /&gt;' Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt;' objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt;' objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt;' &lt;BR /&gt;' if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt;' With objExcelApp.Selection&lt;BR /&gt;' .WrapText = False&lt;BR /&gt;' .ShrinkToFit = False&lt;BR /&gt;' End With &lt;BR /&gt;' end if &lt;BR /&gt;' &lt;BR /&gt;' objCurrentSheet.Range("A1").Select &lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'next &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Finally select the first sheet&lt;BR /&gt;'objExcelDoc.Sheets(1).Select&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Return value&lt;BR /&gt;'Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'For Each ws In objExcelDoc.Worksheets&lt;BR /&gt;' If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt;' Set Excel_GetSheetByName = ws&lt;BR /&gt;' exit function&lt;BR /&gt;' End If&lt;BR /&gt;'Next&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// default return value&lt;BR /&gt;'Set Excel_GetSheetByName = nothing&lt;BR /&gt;' &lt;BR /&gt;'End Function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// can be max 31 characters long&lt;BR /&gt;' retVal = trim(left(sheetName, 31))&lt;BR /&gt;' &lt;BR /&gt;' Excel_GetSafeSheetName = retVal&lt;BR /&gt;'End Function&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Internal function for adding a new sheet&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// add a sheet to the last position&lt;BR /&gt;' objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt;' &lt;BR /&gt;' Dim objNewSheet&lt;BR /&gt;' Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt;' objNewSheet.Name = left(sheetName,31)&lt;BR /&gt;' &lt;BR /&gt;' '// return the newly created sheet&lt;BR /&gt;' Set Excel_AddSheet = objNewSheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'End function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Delete all empty sheets&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'For Each ws In objExcelDoc.Worksheets&lt;BR /&gt;' If (not HasOtherObjects(ws)) then&lt;BR /&gt;' If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt;' On Error Resume Next&lt;BR /&gt;' Call ws.Delete()&lt;BR /&gt;' End If&lt;BR /&gt;' End If&lt;BR /&gt;'Next&lt;BR /&gt;' &lt;BR /&gt;'End Sub&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Helper function to determine if there are other objects placed&lt;BR /&gt;''// on the sheet ...&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt;' Dim c&lt;BR /&gt;' If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' HasOtherObjects = false&lt;BR /&gt;'End Function&lt;BR /&gt;'&lt;BR /&gt;''//__________________________________________________&lt;P&gt;&lt;/P&gt;sub exportToExcel_Variant6&lt;BR /&gt; &lt;BR /&gt;Dim aryExport(1,3) &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(0,0) = "CH36"&lt;BR /&gt;aryExport(0,1) = "Traffic Count Trend Store"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(1,0) = "CH35"&lt;BR /&gt;aryExport(1,1) = "Sales Trend"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;P&gt;&lt;/P&gt;&lt;BR /&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end sub&lt;BR /&gt; &lt;P&gt;&lt;/P&gt; &lt;BR /&gt;'sub exportToExcel_Variant5&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim aryExport(1,3) &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(0,0) = "CH36"&lt;BR /&gt;'aryExport(0,1) = "Traffic Count Trend"&lt;BR /&gt;'aryExport(0,2) = "A1"&lt;BR /&gt;'aryExport(0,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(1,0) = "CH35"&lt;BR /&gt;'aryExport(1,1) = "Sales Trend "&lt;BR /&gt;'aryExport(1,2) = "A1"&lt;BR /&gt;'aryExport(1,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;'Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;''// like saving the excel, some formatting stuff, ...&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end sub&lt;BR /&gt;' &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim i 'as Integer&lt;BR /&gt;Dim objExcelApp 'as Excel.Application&lt;BR /&gt;Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;objExcelApp.DisplayAlerts = false&lt;BR /&gt; &lt;BR /&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim strSourceObject&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim qvObjectId 'as String&lt;BR /&gt;Dim sheetName&lt;BR /&gt;Dim sheetRange&lt;BR /&gt;Dim pasteMode&lt;BR /&gt;Dim objSource&lt;BR /&gt;Dim objCurrentSheet&lt;BR /&gt;Dim objExcelSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// Get the properties of the exportDefinition array&lt;BR /&gt; qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt; sheetName = aryExportDefinition(i,1)&lt;BR /&gt; sheetRange = aryExportDefinition(i,2)&lt;BR /&gt; pasteMode = aryExportDefinition(i,3)&lt;BR /&gt; &lt;BR /&gt; Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt; end if&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; objExcelSheet.Select &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt; Call objSource.GetSheet().Activate()&lt;BR /&gt; 'objSource.Minimize&lt;BR /&gt; 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; if (not objSource is nothing) then&lt;BR /&gt; &lt;BR /&gt; if (pasteMode = "image") then&lt;BR /&gt; Call objSource.CopyBitmapToClipboard()&lt;BR /&gt; else&lt;BR /&gt; Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt; &lt;BR /&gt; if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt; With objExcelApp.Selection&lt;BR /&gt; .WrapText = False&lt;BR /&gt; .ShrinkToFit = False&lt;BR /&gt; End With &lt;BR /&gt; end if &lt;BR /&gt; &lt;BR /&gt; objCurrentSheet.Range("A1").Select &lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;next &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Finally select the first sheet&lt;BR /&gt;objExcelDoc.Sheets(1).Select&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Return value&lt;BR /&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt; Set Excel_GetSheetByName = ws&lt;BR /&gt; exit function&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// default return value&lt;BR /&gt;Set Excel_GetSheetByName = nothing&lt;BR /&gt; &lt;BR /&gt;End Function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// can be max 31 characters long&lt;BR /&gt; retVal = trim(left(sheetName, 31))&lt;BR /&gt; &lt;BR /&gt; Excel_GetSafeSheetName = retVal&lt;BR /&gt;End Function&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for adding a new sheet&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// add a sheet to the last position&lt;BR /&gt; objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; &lt;BR /&gt; Dim objNewSheet&lt;BR /&gt; Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; objNewSheet.Name = left(sheetName,31)&lt;BR /&gt; &lt;BR /&gt; '// return the newly created sheet&lt;BR /&gt; Set Excel_AddSheet = objNewSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;End function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Delete all empty sheets&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (not HasOtherObjects(ws)) then&lt;BR /&gt; If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt; On Error Resume Next&lt;BR /&gt; Call ws.Delete()&lt;BR /&gt; End If&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt;End Sub&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Helper function to determine if there are other objects placed&lt;BR /&gt;'// on the sheet ...&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt; Dim c&lt;BR /&gt; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; HasOtherObjects = false&lt;BR /&gt;End Function&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;&lt;STRONG style=": ; color: #808080; font-size: 12pt; background-color: #ffffff; font-family: 'times new roman','new york',times,serif;"&gt;Thanks,&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG style=": ; color: #808080; font-size: 12pt; background-color: #ffffff; font-family: 'times new roman','new york',times,serif;"&gt;Kishore&lt;/STRONG&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 27 Jul 2016 14:40:24 GMT</pubDate>
    <dc:creator>nareshthavidishetty</dc:creator>
    <dc:date>2016-07-27T14:40:24Z</dc:date>
    <item>
      <title>Macro error</title>
      <link>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158743#M899439</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;Am using the below macro to export objects to excel.But it gives the &lt;STRONG&gt;error "&lt;SPAN style="color: #3d3d3d; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;Script out of range&lt;/SPAN&gt;".... Below is the script&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Nov 2020 16:16:04 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158743#M899439</guid>
      <dc:creator>nareshthavidishetty</dc:creator>
      <dc:date>2020-11-25T16:16:04Z</dc:date>
    </item>
    <item>
      <title>Re: Macro error</title>
      <link>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158744#M899440</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;i don't seem to see the script, please can you verify you uploaded correctly?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;Santiago&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jul 2016 14:06:10 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158744#M899440</guid>
      <dc:creator>santiago_respane</dc:creator>
      <dc:date>2016-07-27T14:06:10Z</dc:date>
    </item>
    <item>
      <title>Re: Macro error</title>
      <link>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158745#M899441</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;No script attached&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jul 2016 14:29:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158745#M899441</guid>
      <dc:creator>Clever_Anjos</dc:creator>
      <dc:date>2016-07-27T14:29:11Z</dc:date>
    </item>
    <item>
      <title>Re: Macro error</title>
      <link>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158746#M899442</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Below is the code:Am getting the error while running the &lt;STRONG style="color: #000000; font-size: 16px;"&gt;exportToExcel_Variant5 &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P data-marker="__QUOTED_TEXT__"&gt;&lt;/P&gt;&lt;DIV style="font-size: 12pt; color: #000000;"&gt;&lt;DIV&gt;&lt;STRONG&gt;sub exportToExcel_Variant4&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;Dim aryExport(4,3) &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(0,0) = "CH23"&lt;BR /&gt;aryExport(0,1) = "Traffic Count By Month"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(1,0) = "CH26"&lt;BR /&gt;aryExport(1,1) = "Sales By Month"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(2,0) = "CH24"&lt;BR /&gt;aryExport(2,1) = "Top 10 Regional Preformers"&lt;BR /&gt;aryExport(2,2) = "A1"&lt;BR /&gt;aryExport(2,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(3,0) = "CH21"&lt;BR /&gt;aryExport(3,1) = "Sales Break Break Down By Year"&lt;BR /&gt;aryExport(3,2) = "A1"&lt;BR /&gt;aryExport(3,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(4,0) = "CH27"&lt;BR /&gt;aryExport(4,1) = "Traffic Count "&lt;BR /&gt;aryExport(4,2) = "A1"&lt;BR /&gt;aryExport(4,3) = "image"&lt;P&gt;&lt;/P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end sub&lt;P&gt;&lt;/P&gt;&lt;STRONG&gt;sub exportToExcel_Variant5 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Dim aryExport(3,3) &lt;/STRONG&gt;&lt;P&gt;&lt;/P&gt;&lt;STRONG&gt;aryExport(0,0) = "CH18"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,1) = "Traffic Count"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(0,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,0) = "CH17"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,1) = "Top Performers"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(1,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,0) = "CH07"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,1) = "Traffic Count Trend"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(2,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,0) = "CH16"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,1) = "Top 10 locations on Traffic count"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,2) = "A1"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;aryExport(3,3) = "image"&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;'&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;''// Now either just leave Excel open or do some other stuff here&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;''// like saving the excel, some formatting stuff, ...&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;' &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;end sub&lt;/STRONG&gt;&lt;BR /&gt;' &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim i 'as Integer&lt;BR /&gt;Dim objExcelApp 'as Excel.Application&lt;BR /&gt;Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;objExcelApp.DisplayAlerts = false&lt;BR /&gt; &lt;BR /&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim strSourceObject&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim qvObjectId 'as String&lt;BR /&gt;Dim sheetName&lt;BR /&gt;Dim sheetRange&lt;BR /&gt;Dim pasteMode&lt;BR /&gt;Dim objSource&lt;BR /&gt;Dim objCurrentSheet&lt;BR /&gt;Dim objExcelSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// Get the properties of the exportDefinition array&lt;BR /&gt; qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt; sheetName = aryExportDefinition(i,1)&lt;BR /&gt; sheetRange = aryExportDefinition(i,2)&lt;BR /&gt; pasteMode = aryExportDefinition(i,3)&lt;BR /&gt; &lt;BR /&gt; Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt; end if&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; objExcelSheet.Select &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt; Call objSource.GetSheet().Activate()&lt;BR /&gt; 'objSource.Minimize&lt;BR /&gt; 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; if (not objSource is nothing) then&lt;BR /&gt; &lt;BR /&gt; if (pasteMode = "image") then&lt;BR /&gt; Call objSource.CopyBitmapToClipboard()&lt;BR /&gt; else&lt;BR /&gt; Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt; &lt;BR /&gt; if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt; With objExcelApp.Selection&lt;BR /&gt; .WrapText = False&lt;BR /&gt; .ShrinkToFit = False&lt;BR /&gt; End With &lt;BR /&gt; end if &lt;BR /&gt; &lt;BR /&gt; objCurrentSheet.Range("A1").Select &lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;next &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Finally select the first sheet&lt;BR /&gt;objExcelDoc.Sheets(1).Select&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Return value&lt;BR /&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt; Set Excel_GetSheetByName = ws&lt;BR /&gt; exit function&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// default return value&lt;BR /&gt;Set Excel_GetSheetByName = nothing&lt;BR /&gt; &lt;BR /&gt;End Function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// can be max 31 characters long&lt;BR /&gt; retVal = trim(left(sheetName, 31))&lt;BR /&gt; &lt;BR /&gt; Excel_GetSafeSheetName = retVal&lt;BR /&gt;End Function&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for adding a new sheet&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// add a sheet to the last position&lt;BR /&gt; objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; &lt;BR /&gt; Dim objNewSheet&lt;BR /&gt; Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; objNewSheet.Name = left(sheetName,31)&lt;BR /&gt; &lt;BR /&gt; '// return the newly created sheet&lt;BR /&gt; Set Excel_AddSheet = objNewSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;End function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Delete all empty sheets&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (not HasOtherObjects(ws)) then&lt;BR /&gt; If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt; On Error Resume Next&lt;BR /&gt; Call ws.Delete()&lt;BR /&gt; End If&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt;End Sub&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Helper function to determine if there are other objects placed&lt;BR /&gt;'// on the sheet ...&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt; Dim c&lt;BR /&gt; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; HasOtherObjects = false&lt;BR /&gt;End Function&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;sub exportToExcel_Variant5&lt;P&gt;&lt;/P&gt;Dim aryExport(4,3) &lt;P&gt;&lt;/P&gt;aryExport(0,0) = "CH17"&lt;BR /&gt;aryExport(0,1) = "Top Performers"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(1,0) = "CH07"&lt;BR /&gt;aryExport(1,1) = "Traffic Count Trend"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(2,0) = "CH16"&lt;BR /&gt;aryExport(2,1) = "Top 10 locations on Traffic count"&lt;BR /&gt;aryExport(2,2) = "A1"&lt;BR /&gt;aryExport(2,3) = "image"&lt;P&gt;&lt;/P&gt;aryExport(3,0) = "CH18"&lt;BR /&gt;aryExport(3,1) = "Traffic Count Analysis"&lt;BR /&gt;aryExport(3,2) = "A1"&lt;BR /&gt;aryExport(3,3) = "image"&lt;P&gt;&lt;/P&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt;end sub&lt;P&gt;&lt;/P&gt;'sub exportToExcel_Variant5 &lt;BR /&gt;' &lt;BR /&gt;'Dim aryExport(3,3) &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(0,0) = "CH18"&lt;BR /&gt;'aryExport(0,1) = "Traffic Count"&lt;BR /&gt;'aryExport(0,2) = "A1"&lt;BR /&gt;'aryExport(0,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(1,0) = "CH17"&lt;BR /&gt;'aryExport(1,1) = "Top Performers"&lt;BR /&gt;'aryExport(1,2) = "A1"&lt;BR /&gt;'aryExport(1,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(2,0) = "CH07"&lt;BR /&gt;'aryExport(2,1) = "Traffic Count Trend"&lt;BR /&gt;'aryExport(2,2) = "A1"&lt;BR /&gt;'aryExport(2,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(3,0) = "CH16"&lt;BR /&gt;'aryExport(3,1) = "Top 10 locations on Traffic count"&lt;BR /&gt;'aryExport(3,2) = "A1"&lt;BR /&gt;'aryExport(3,3) = "image"&lt;BR /&gt;'&lt;BR /&gt;'Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;'Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;''// like saving the excel, some formatting stuff, ...&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end sub&lt;BR /&gt;' &lt;BR /&gt;'&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim i 'as Integer&lt;BR /&gt;'Dim objExcelApp 'as Excel.Application&lt;BR /&gt;'Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;'objExcelApp.DisplayAlerts = false&lt;BR /&gt;' &lt;BR /&gt;'Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim strSourceObject&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim qvObjectId 'as String&lt;BR /&gt;'Dim sheetName&lt;BR /&gt;'Dim sheetRange&lt;BR /&gt;'Dim pasteMode&lt;BR /&gt;'Dim objSource&lt;BR /&gt;'Dim objCurrentSheet&lt;BR /&gt;'Dim objExcelSheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// Get the properties of the exportDefinition array&lt;BR /&gt;' qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt;' sheetName = aryExportDefinition(i,1)&lt;BR /&gt;' sheetRange = aryExportDefinition(i,2)&lt;BR /&gt;' pasteMode = aryExportDefinition(i,3)&lt;BR /&gt;' &lt;BR /&gt;' Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt;' if (objExcelSheet is nothing) then&lt;BR /&gt;' Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt;' if (objExcelSheet is nothing) then&lt;BR /&gt;' msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt;' end if&lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' objExcelSheet.Select &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt;' Call objSource.GetSheet().Activate()&lt;BR /&gt;' 'objSource.Minimize&lt;BR /&gt;' 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' if (not objSource is nothing) then&lt;BR /&gt;' &lt;BR /&gt;' if (pasteMode = "image") then&lt;BR /&gt;' Call objSource.CopyBitmapToClipboard()&lt;BR /&gt;' else&lt;BR /&gt;' Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt;' objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt;' objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt;' &lt;BR /&gt;' if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt;' With objExcelApp.Selection&lt;BR /&gt;' .WrapText = False&lt;BR /&gt;' .ShrinkToFit = False&lt;BR /&gt;' End With &lt;BR /&gt;' end if &lt;BR /&gt;' &lt;BR /&gt;' objCurrentSheet.Range("A1").Select &lt;BR /&gt;' end if&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'next &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Finally select the first sheet&lt;BR /&gt;'objExcelDoc.Sheets(1).Select&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Return value&lt;BR /&gt;'Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'For Each ws In objExcelDoc.Worksheets&lt;BR /&gt;' If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt;' Set Excel_GetSheetByName = ws&lt;BR /&gt;' exit function&lt;BR /&gt;' End If&lt;BR /&gt;'Next&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// default return value&lt;BR /&gt;'Set Excel_GetSheetByName = nothing&lt;BR /&gt;' &lt;BR /&gt;'End Function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// can be max 31 characters long&lt;BR /&gt;' retVal = trim(left(sheetName, 31))&lt;BR /&gt;' &lt;BR /&gt;' Excel_GetSafeSheetName = retVal&lt;BR /&gt;'End Function&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Internal function for adding a new sheet&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' '// add a sheet to the last position&lt;BR /&gt;' objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt;' &lt;BR /&gt;' Dim objNewSheet&lt;BR /&gt;' Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt;' objNewSheet.Name = left(sheetName,31)&lt;BR /&gt;' &lt;BR /&gt;' '// return the newly created sheet&lt;BR /&gt;' Set Excel_AddSheet = objNewSheet&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'End function&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Delete all empty sheets&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'For Each ws In objExcelDoc.Worksheets&lt;BR /&gt;' If (not HasOtherObjects(ws)) then&lt;BR /&gt;' If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt;' On Error Resume Next&lt;BR /&gt;' Call ws.Delete()&lt;BR /&gt;' End If&lt;BR /&gt;' End If&lt;BR /&gt;'Next&lt;BR /&gt;' &lt;BR /&gt;'End Sub&lt;BR /&gt;''// ________________________________________________________________&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;''// Helper function to determine if there are other objects placed&lt;BR /&gt;''// on the sheet ...&lt;BR /&gt;''// ****************************************************************&lt;BR /&gt;'Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt;' Dim c&lt;BR /&gt;' If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt;' HasOtherObjects = true&lt;BR /&gt;' Exit function&lt;BR /&gt;' End If&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' HasOtherObjects = false&lt;BR /&gt;'End Function&lt;BR /&gt;'&lt;BR /&gt;''//__________________________________________________&lt;P&gt;&lt;/P&gt;sub exportToExcel_Variant6&lt;BR /&gt; &lt;BR /&gt;Dim aryExport(1,3) &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(0,0) = "CH36"&lt;BR /&gt;aryExport(0,1) = "Traffic Count Trend Store"&lt;BR /&gt;aryExport(0,2) = "A1"&lt;BR /&gt;aryExport(0,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;aryExport(1,0) = "CH35"&lt;BR /&gt;aryExport(1,1) = "Sales Trend"&lt;BR /&gt;aryExport(1,2) = "A1"&lt;BR /&gt;aryExport(1,3) = "image"&lt;BR /&gt; &lt;BR /&gt; &lt;P&gt;&lt;/P&gt;&lt;BR /&gt;Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;'// like saving the excel, some formatting stuff, ...&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end sub&lt;BR /&gt; &lt;P&gt;&lt;/P&gt; &lt;BR /&gt;'sub exportToExcel_Variant5&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim aryExport(1,3) &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(0,0) = "CH36"&lt;BR /&gt;'aryExport(0,1) = "Traffic Count Trend"&lt;BR /&gt;'aryExport(0,2) = "A1"&lt;BR /&gt;'aryExport(0,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'aryExport(1,0) = "CH35"&lt;BR /&gt;'aryExport(1,1) = "Sales Trend "&lt;BR /&gt;'aryExport(1,2) = "A1"&lt;BR /&gt;'aryExport(1,3) = "image"&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'Dim objExcelWorkbook 'as Excel.Workbook&lt;BR /&gt;'Set objExcelWorkbook = copyObjectsToExcelSheet(ActiveDocument, aryExport)&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;''// Now either just leave Excel open or do some other stuff here&lt;BR /&gt;''// like saving the excel, some formatting stuff, ...&lt;BR /&gt;' &lt;BR /&gt;' &lt;BR /&gt;'end sub&lt;BR /&gt;' &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// YOU DO NOT NEED TO CHANGE THE CODE BELOW !!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;'// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// copyObjectsToExcel&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Parameters:&lt;BR /&gt;'// qvDoc - Reference to the QlikView document (normally just use&lt;BR /&gt;'// "ActiveDocument", but you can also use copyObjectsToExcel&lt;BR /&gt;'// outside of QlikView ...&lt;BR /&gt;'// aryExportDefinition - array of settings&lt;BR /&gt;'// ~~&lt;BR /&gt;'// Version 1.02&lt;BR /&gt;'// ~~&lt;BR /&gt;'// The aryExportDefinition is used to pass the following properties to&lt;BR /&gt;'// copyObjectsToExcelSheet:&lt;BR /&gt;'//&lt;BR /&gt;'// Index Description&lt;BR /&gt;'// ------------------------&lt;BR /&gt;'// 0 - Id of the QlikView object to copy from&lt;BR /&gt;'// 1 - Name of the sheet (in Excel) where the object should be copied to&lt;BR /&gt;'//&lt;BR /&gt;'// (If a sheet with the same name already exists no new&lt;BR /&gt;'// sheet will be created, instead the existing sheet will&lt;BR /&gt;'// be used for pasting the object)&lt;BR /&gt;'//&lt;BR /&gt;'// Note: the sheetName can be max 31 characters long&lt;BR /&gt;'//&lt;BR /&gt;'// 2 - Range in Excel where the object should be pasted to&lt;BR /&gt;'// 3 - PasteMode ["data", "image"]&lt;BR /&gt;'// Defines if the objects underlaying data should be&lt;BR /&gt;'// pasted ("data") or the the image representing the object&lt;BR /&gt;'// should be used&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function copyObjectsToExcelSheet(qvDoc, aryExportDefinition) 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim i 'as Integer&lt;BR /&gt;Dim objExcelApp 'as Excel.Application&lt;BR /&gt;Dim objExcelDoc 'as Excel.Workbook&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Set objExcelApp = CreateObject("Excel.Application")&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;objExcelApp.Visible = true 'false if you want to hide Excel&lt;BR /&gt;objExcelApp.DisplayAlerts = false&lt;BR /&gt; &lt;BR /&gt;Set objExcelDoc = objExcelApp.Workbooks.Add&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim strSourceObject&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Dim qvObjectId 'as String&lt;BR /&gt;Dim sheetName&lt;BR /&gt;Dim sheetRange&lt;BR /&gt;Dim pasteMode&lt;BR /&gt;Dim objSource&lt;BR /&gt;Dim objCurrentSheet&lt;BR /&gt;Dim objExcelSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;for i = 0 to UBOUND(aryExportDefinition)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// Get the properties of the exportDefinition array&lt;BR /&gt; qvObjectId = aryExportDefinition(i,0)&lt;BR /&gt; sheetName = aryExportDefinition(i,1)&lt;BR /&gt; sheetRange = aryExportDefinition(i,2)&lt;BR /&gt; pasteMode = aryExportDefinition(i,3)&lt;BR /&gt; &lt;BR /&gt; Set objExcelSheet = Excel_GetSheetByName(objExcelDoc, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; Set objExcelSheet = Excel_AddSheet(objExcelApp, sheetName)&lt;BR /&gt; if (objExcelSheet is nothing) then&lt;BR /&gt; msgbox("No sheet could be created, this should not occur!!!")&lt;BR /&gt; end if&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; objExcelSheet.Select &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; set objSource = qvDoc.GetSheetObject(qvObjectId)&lt;BR /&gt; Call objSource.GetSheet().Activate()&lt;BR /&gt; 'objSource.Minimize&lt;BR /&gt; 'qvDoc.GetApplication.WaitForIdle&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; if (not objSource is nothing) then&lt;BR /&gt; &lt;BR /&gt; if (pasteMode = "image") then&lt;BR /&gt; Call objSource.CopyBitmapToClipboard()&lt;BR /&gt; else&lt;BR /&gt; Call objSource.CopyTableToClipboard(true) '// default &amp;amp; fallback&lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; Set objCurrentSheet = objExcelDoc.Sheets(sheetName)&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Range(sheetRange).Select&lt;BR /&gt; objExcelDoc.Sheets(sheetName).Paste&lt;BR /&gt; &lt;BR /&gt; if (pasteMode &amp;lt;&amp;gt; "image") then&lt;BR /&gt; With objExcelApp.Selection&lt;BR /&gt; .WrapText = False&lt;BR /&gt; .ShrinkToFit = False&lt;BR /&gt; End With &lt;BR /&gt; end if &lt;BR /&gt; &lt;BR /&gt; objCurrentSheet.Range("A1").Select &lt;BR /&gt; end if&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;next &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Call Excel_DeleteBlankSheets(objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Finally select the first sheet&lt;BR /&gt;objExcelDoc.Sheets(1).Select&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// Return value&lt;BR /&gt;Set copyObjectsToExcelSheet = objExcelDoc&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;end function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for getting the Excel sheet by sheetName&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_GetSheetByName(ByRef objExcelDoc, sheetName) 'as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (trim(ws.Name) = Excel_GetSafeSheetName(sheetName)) then&lt;BR /&gt; Set Excel_GetSheetByName = ws&lt;BR /&gt; exit function&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// default return value&lt;BR /&gt;Set Excel_GetSheetByName = nothing&lt;BR /&gt; &lt;BR /&gt;End Function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;Private Function Excel_GetSafeSheetName(sheetName)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// can be max 31 characters long&lt;BR /&gt; retVal = trim(left(sheetName, 31))&lt;BR /&gt; &lt;BR /&gt; Excel_GetSafeSheetName = retVal&lt;BR /&gt;End Function&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Internal function for adding a new sheet&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Function Excel_AddSheet(objExcelApplication, sheetName) ' as Excel.Sheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; '// add a sheet to the last position&lt;BR /&gt; objExcelApplication.Sheets.Add , objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; &lt;BR /&gt; Dim objNewSheet&lt;BR /&gt; Set objNewSheet = objExcelApplication.Sheets(objExcelApplication.Sheets.Count)&lt;BR /&gt; objNewSheet.Name = left(sheetName,31)&lt;BR /&gt; &lt;BR /&gt; '// return the newly created sheet&lt;BR /&gt; Set Excel_AddSheet = objNewSheet&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;End function&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Delete all empty sheets&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Private Sub Excel_DeleteBlankSheets(ByRef objExcelDoc)&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;For Each ws In objExcelDoc.Worksheets&lt;BR /&gt; If (not HasOtherObjects(ws)) then&lt;BR /&gt; If objExcelDoc.Application.WorksheetFunction.CountA(ws.Cells) = 0 Then&lt;BR /&gt; On Error Resume Next&lt;BR /&gt; Call ws.Delete()&lt;BR /&gt; End If&lt;BR /&gt; End If&lt;BR /&gt;Next&lt;BR /&gt; &lt;BR /&gt;End Sub&lt;BR /&gt;'// ________________________________________________________________&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;'// Helper function to determine if there are other objects placed&lt;BR /&gt;'// on the sheet ...&lt;BR /&gt;'// ****************************************************************&lt;BR /&gt;Public Function HasOtherObjects(ByRef objSheet) 'As Boolean&lt;BR /&gt; Dim c&lt;BR /&gt; If (objSheet.ChartObjects.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Pictures.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; If (objSheet.Shapes.Count &amp;gt; 0) Then&lt;BR /&gt; HasOtherObjects = true&lt;BR /&gt; Exit function&lt;BR /&gt; End If&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; HasOtherObjects = false&lt;BR /&gt;End Function&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;&lt;STRONG style=": ; color: #808080; font-size: 12pt; background-color: #ffffff; font-family: 'times new roman','new york',times,serif;"&gt;Thanks,&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG style=": ; color: #808080; font-size: 12pt; background-color: #ffffff; font-family: 'times new roman','new york',times,serif;"&gt;Kishore&lt;/STRONG&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jul 2016 14:40:24 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Macro-error/m-p/1158746#M899442</guid>
      <dc:creator>nareshthavidishetty</dc:creator>
      <dc:date>2016-07-27T14:40:24Z</dc:date>
    </item>
  </channel>
</rss>

