FlexPro
HistoryBase
Engineering
Training
Downloads
FlexPro Support
Knowledge
Community
About us
References
Jobs
General Contact
List Of Retailers
FlexPro Support
EN
DE
FR
Placeholder
Products and Solutions
Support and Downloads
Company
Magazine
Contact Us
Language
MyWeisang

Account settings

Topic

Copy a matrix into excel

Home page Community Automation and VBA Copy a matrix into excel

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #35218
    Peter Seitz
    Participant

    Hello,

    i have a 29×29 dimensional matrix which I want to include in an excel sheet.
    For example a matrix build up within in a formula like this:

    [code]Dim Output = ? # 29 # 29 // Dim a 29×29 matrix
    Output[0,28][0,28] = -1 // Fill all cells with -1

    [ Output][/code]

    I want this Output to be copied into an excel sheet. I used following code:

    [code]
    Option Explicit

    Const sExcelSheet As String = “P:TestFile.xlsx”

    Sub DataIntoExcel()

    ‘access data from FlexPro
    Dim oFolder As Folder
    Set oFolder = ActiveDatabase.RootFolder
    Dim matrix
    Set matrix = oFolder.Object(“Formel”, fpObjectTypeFormula).Value

    ‘ open Excel sheet
    Dim oExcel As Object
    Set oExcel = CreateObject(“Excel.Application”)

    With oExcel
    .Visible = True
    .Workbooks.Open Filename:=sExcelSheet, ReadOnly:=False
    With .Workbooks(1)
    Dim oSheet As Object
    Set oSheet = .Worksheets(1)

    oSheet.Range(“C3:AE31”) = matrix
    End With
    End With
    Set oExcel = Nothing
    End Sub[/code]

    The matrix is supposed to be placed starting at cell C3 or placed in the area from C3 to AE31. I keep getting runtime errors though.

    Can someone tell me what i did wrong. Thanks in advance.

    kind regards,
    Peter

    #35220
    Peter Seitz
    Participant

    Hello,

    i have a 29×29 dimensional matrix which I want to include in an excel sheet.
    For example a matrix build up within in a formula like this:

    [code]Dim Output = ? # 29 # 29 // Dim a 29×29 matrix
    Output[0,28][0,28] = -1 // Fill all cells with -1

    [ Output][/code]

    I want this Output to be copied into an excel sheet. I used following code:

    [code]
    Option Explicit

    Const sExcelSheet As String = “P:TestFile.xlsx”

    Sub DataIntoExcel()

    ‘access data from FlexPro
    Dim oFolder As Folder
    Set oFolder = ActiveDatabase.RootFolder
    Dim matrix
    Set matrix = oFolder.Object(“Formel”, fpObjectTypeFormula).Value

    ‘ open Excel sheet
    Dim oExcel As Object
    Set oExcel = CreateObject(“Excel.Application”)

    With oExcel
    .Visible = True
    .Workbooks.Open Filename:=sExcelSheet, ReadOnly:=False
    With .Workbooks(1)
    Dim oSheet As Object
    Set oSheet = .Worksheets(1)

    oSheet.Range(“C3:AE31”) = matrix
    End With
    End With
    Set oExcel = Nothing
    End Sub[/code]

    The matrix is supposed to be placed starting at cell C3 or placed in the area from C3 to AE31. I keep getting runtime errors though.

    Can someone tell me what i did wrong. Thanks in advance.

    kind regards,
    Peter

    #35219
    Bernhard Kantz
    Participant

    Your code should work if you assign the value of the formula evaluation instead of the value object itself to your matrix variable.

    [code]
    Dim fml As Formula
    Set fml = ActiveDatabase.RootFolder(“Formel”, fpObjectTypeFormula)
    fml.Update
    Dim matrix
    matrix = fml.Value
    [/code]

    Note the update of the formula before using its value.

    Hint: To exchange rows and columns use Application.WorksheetFunction.Transpose(matrix) in the assignment to the range.

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.