Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

PasteSpecial method of Worksheet class fails sometimes

I'm having a headache with a macro to export the data from some pivot tables to an  Excel template. It throws a "PasteSpecial method of Worksheet class failed" from time to time, not always, but I don't understand why the error is not consistent. Can anyone help me with figuring out what I'm doing wrong?
Here's the macro:

sub ExcelTable1TemplateUse

Dim CountPasteSpecialErrors

set XLApp = CreateObject("Excel.Application")

XLApp.Visible = True

set XLDoc = XLApp.Workbooks.Open("C:\Users\BSS\Documents\Alfaintes\20171204 - Report prioritari\Reports\Tabel 1\Table1_Template_SingleUser.xlsx")

XLDoc.Sheets(1).Select

XLDoc.Sheets(1).Range("A1").Select

ActiveDocument.GetSheetObject("CH128").CopyTableToClipboard true

XLDoc.Sheets(1).PasteSpecial -4163

XLDoc.Sheets(1).Range("X1").Value = err.Number

XLDoc.Sheets(1).Range("A1:C1").ClearContents

XlDoc.Sheets(1).Range("A1:C1").Merge

XLDoc.Sheets(1).Range("A2").Value = XLDoc.Sheets(1).Range("A3").Value & " " & XLDoc.SHeets(1).Range("B3").Value

XLDoc.Sheets(1).Range("B2:B10,A3:A10").ClearContents

XLDoc.Sheets(1).Range("A2:B2").Merge

end sub

5 Replies
m_woolf
Master II
Master II

Maybe the CopyTableToClipboard is taking awhile.

Try putting: ActiveDocument.GetApplication.WaitForIdle between the copy line and the pastespecial line

Anonymous
Not applicable
Author

Ummm tried it, but the macro execution breaks on the:
ActiveDocument.GetApplication.WaitForIdle

m_woolf
Master II
Master II

I copied it straight from the API Guide and have used in many QV macros.

m_woolf
Master II
Master II

I tried your code and it repeatedly failed at pastespecial. After trying in vain to fix, I came up with:

sub ExcelTable1TemplateUse

set XLApp = CreateObject("Excel.Application")

XLApp.Visible = True

Set XLDoc = XLApp.Workbooks.Add

set XLSheet = XLDoc.Sheets(1)

XLSheet.Select

XLDoc.Sheets(1).Range("A1").Select

ActiveDocument.GetSheetObject("CH01").CopyTableToClipboard true

ActiveDocument.GetApplication.WaitForIdle

XLSheet.Paste   'Special -4163

XLApp.Selection.ClearFormats

end sub