Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Excel VBA - unable to attach XLS file to PDF

Guest
Aug 16, 2019 Aug 16, 2019

I have the folowing VBA code that successfully creates two signature fields in PDF and then stops with Object Required error at Set oAttachment = oJS.ImportDataObject(Selected_File). Any ideas how to make it work?

===========================================================================================================

Sub Prepare_PDF()

On Error GoTo Err_Handler

Dim pdfPDDoc As New AcroPDDoc, oJS As Object, oFields, oAttachment As Object

Dim strFName As String

Dim oParam As Parameter

   

strFName = "C:\Main.pdf"

'------- Select XLS file to embed ----------

With Application.FileDialog(msoFileDialogFilePicker)

.AllowMultiSelect = False

.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1

.Show

Selected_File = .SelectedItems.Item(1)

End With

   

'------- Add signature fields to PDF file----------

If pdfPDDoc.Open(strFName) Then

Set oJS = pdfPDDoc.GetJSObject

Set oFields = oJS.AddField("SignatureField1", "signature", 0, Array(200, 620, 450, 670))

Set oFields = oJS.AddField("SignatureField2", "signature", 0, Array(200, 520, 450, 570))

'------- Embed XLS in PDF file----------

Set oAttachment = oJS.ImportDataObject(Selected_File)

'------- Save PDF file------------------

strFName = Left(strFName, Len(strFName) - 4) & "-signed.pdf"

pdfPDDoc.Save 1, strFName

End If

Exit_Proc:

    Exit Sub

       

Err_Handler:

    MsgBox "In test" & vbCrLf & Err.Number & "--" & Err.Description

    Resume Exit_Proc

End Sub

TOPICS
Acrobat SDK and JavaScript
2.6K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 16, 2019 Aug 16, 2019

You have to specify a name for the data object as the first parameter.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Aug 16, 2019 Aug 16, 2019

I am trying Set oAttachment = oJS.ImportDataObject("Attachment", Selected_File), still generates Object Required error.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 16, 2019 Aug 16, 2019

In my experience, you may have to provide all optional parameters for some func in the JSO to work. 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Aug 16, 2019 Aug 16, 2019

Tracing the code I figured out that Selected_File was a string, not an object and now fixed it. Now I am getting Type mismatch error. Hope this is getting me closer to the answer...

Karl, in the JavaScript for Acrobat API Reference I found the following example: this.importDataObject("MyData2", "../Foo.xml"), are there any other optional parameters? Thank you

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 17, 2019 Aug 17, 2019

In the API reference you will also find the list of parameters. There are three. I am writing this on my phone, so it’s not as straight forward to attach a screenshot. The third parameter is cCryptFilter

However, because you got it working, that missing optional parameter was not the problem.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Oct 17, 2023 Oct 17, 2023
LATEST

I know, this is an historical thread, but  the the code will become workable replacing 

Set oAttachment = oJS.ImportDataObject(Selected_File)

with

    Dim testAnno As Object, props As Object
    Set testAnno = oJS.AddAnnot
    Set props = testAnno.getProps
    props.Type = "FileAttachment"

    oJS.importDataObject props, Selected_File
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines