Scribusoid

Author Topic: Export Data To Excel  (Read 5567 times)

dspignatari

  • Newbie
  • *
  • Posts: 5
  • Karma: 0
Export Data To Excel
« on: November 23, 2011, 01:20:37 am »
Hello everyone,

I have been very impressed with Scribus thus far.  Every aspect of my fillable form has been covered except for one.

I'm having difficulty trying to get the data I enter to export into an excel sheet.  It doesn't have to be pretty, just consistent so I can write macros and formulas to use the data.

I understand there are a few excel based macros that can work for me.  I was just hoping scribus could do this for me easier.

Thanks every one.  

O, and my mailto: button.  It emails a file, but, "The file you are attempting to open contains comments or form data that are supposed to be placed on . This document cannot be found"
« Last Edit: November 23, 2011, 01:36:15 am by dspignatari »

Wena

  • Full Member
  • ***
  • Posts: 179
  • Karma: 0
Re: Export Data To Excel
« Reply #1 on: November 23, 2011, 01:51:29 am »
Welcome dspignatari. You'r question interests me as well, it would be useful.

Wena

Nermander

  • Hero Member
  • *****
  • Posts: 1311
  • Karma: 17
Re: Export Data To Excel
« Reply #2 on: November 23, 2011, 08:59:53 am »
A filled in form is if I'm not wrong the same as an FDF file. First hit when googling on "fdf to excel":
http://www.excelhero.com/cgi-bin/mt/mt-search.cgi?blog_id=4&tag=FDF&limit=20

dspignatari

  • Newbie
  • *
  • Posts: 5
  • Karma: 0
Re: Export Data To Excel
« Reply #3 on: November 23, 2011, 05:26:14 pm »
Ok, I found an excel file that has a macro written to import FDF data.  But these lines are bugged and I can't quite figure it out.  This macro when run, prompts you to select an fdf file but can't follow through with the process.  I highlighted the string that fails.  I'm over my head

Public Sub DoAdobeImport()
Dim FName As Variant
Dim Sep1 As String
Dim Sep2 As String
Dim Sep3 As String
Dim Sep4 As String
Dim RowNdx As Integer
Dim ColNdx As Integer
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim StartPos As Integer
Dim EndPos As Integer
Dim recordPos As Integer
Dim recordPos2 As Integer
Dim SaveColNdx As Integer
Dim Part1 As String
Dim Part2 As String
'get name of FDF file
FName = Application.GetOpenFilename _
    (filefilter:="Adobe FDF Data Files(*.fdf),*.fdf,All Files (*.*),*.*", Title:="Select FDF file to import")
   
If FName = False Then
    MsgBox "You didn't select a file"
    Exit Sub
End If
'Set record separators
Application.ScreenUpdating = False
Sep1 = "<<"
Sep2 = ">>"
Sep3 = "/T"
Sep4 = ")"
'set cell row and column where to start entering data
ColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row
Open FName For Input Access Read As #1 'open fdf file


    Line Input #1, WholeLine 'Skip first three lines as they do not contain any data
    Line Input #1, WholeLine
    Line Input #1, WholeLine
    StartPos = (InStr(1, WholeLine, "[")) + 1 ' find where data starts
    EndPos = (InStr(1, WholeLine, "]")) - 1 ' find where data ends
    WholeLine = Mid(WholeLine, StartPos, EndPos) 'capture just the data fields
    Pos = 3 ' set start position
   
    NextPos = InStr(Pos, WholeLine, Sep2) 'find end of current record
    While NextPos >= 1
        TempVal = Mid(WholeLine, Pos, NextPos - Pos) 'Find start of next record
        recordPos = (InStr(1, TempVal, Sep4)) 'Go to end of record by using ")"
        'Assume the value is in A1, in B1  =Left(A1,len(A1)-2)
       
        Part1 = Trim(Mid(TempVal, 1, recordPos)) 'get data record name
       
        '*******Comment out the line below if you do not want data record name*****
        Cells(RowNdx, ColNdx).Value = Right((Left(Part1, Len(Part1) - 1)), Len((Left(Part1, Len(Part1) - 1))) - 3) ' trim off start and end superfluous characters and enter in cell
       
        '*******Comment out the line below if you do not want data record name*****
        RowNdx = RowNdx + 1 'move to next row
       
        recordPos2 = (InStr(1, TempVal, Sep4)) ' find ")" which is end of record
       
        Part2 = Trim(Mid(TempVal, recordPos2)) 'get data
        'Check to see if data field is blank
        If Part2 = Sep4 Then
        Cells(RowNdx, ColNdx).Value = ""
        'Check if Data is Yes or No
        ElseIf Right(Part2, 1) <> Sep4 Then 'trim off start and end superfluous characters and enter in cell
        Cells(RowNdx, ColNdx).Value = Right((Left(Part2, Len(Part2) - 0)), Len((Left(Part2, Len(Part2) - 0))) - 4) ' trim off start and end superfluous characters and enter in cell
        Else
        Cells(RowNdx, ColNdx).Value = Right((Left(Part2, Len(Part2) - 1)), Len((Left(Part2, Len(Part2) - 1))) - 4) ' trim off start and end superfluous characters and enter in cell
        End If
       
        'Cells(RowNdx, ColNdx).Value = Trim(Mid(TempVal, recordPos2))   'Second part which contains data
        ColNdx = ColNdx + 1 ' move to next column
       
        '*******Comment out the line below if you do not want data record name*****
        RowNdx = RowNdx - 1 ' move up a row
       
        Pos = NextPos + 4 ' move to start of next record record
        NextPos = InStr(Pos, WholeLine, Sep2) ' find end of next record
        'if more records loop again
    Wend
 'if no more records end
Close #1
End Sub



dspignatari

  • Newbie
  • *
  • Posts: 5
  • Karma: 0
Re: Export Data To Excel
« Reply #4 on: November 28, 2011, 09:22:38 pm »
Thanks for the help all.  Solved my problem and it's working great.

hinckdogg

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
  • Scribus User
Re: Export Data To Excel
« Reply #5 on: August 25, 2012, 03:50:19 am »
I just came across this post. What did you do to get the macro to work?

Rita_T22

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
  • Scribus User
Re: Export Data To Excel
« Reply #6 on: April 12, 2016, 08:41:05 pm »
Please, can you say how you resolved the problem? 
I really need this macro..

 

palmate