Export einer View nach Excel

  • Hallo zusammen,




    ich habe eine View die ich per Button nach Excel exportiere. Dies klappt auch soweit. Wir setzen Office 2010 ein. Nun musste die View um eine Spalte "DB Art" erweitert werden. In der Maske, aus der die View die Daten bezieht gibt es dieses Feld nicht. Ich habe nun in der Spalte unter Formel den Wert "SEDB" hinterlegt. In der View wird dieses auch korrekt angezeigt. Leider ist diese Spalte nach dem Export aber leer. Muß ich tatsächlich dieses Feld in der Maske hinterlegen und anschließend alle Dokumente mit ToolsRefreshAll Docs neu berechnen lassen Weiß jemand Rat ?

  • Hallo


    Es kommt darauf an, wie dein Excel Export aufgebaut ist.
    Wird die View exportiert, sprich mit ViewEntry und ColumnValues gearbeitet oder wird per NotesDocument und getItemValue gearbeitet.

  • Ich verwende folgendes Script


    Sub Click(Source As Button)
    '---Exportiert die Ansicht in eine neue Excel-Datei
    '---Notwendige Änderungen:
    '---Es sind noch die beiden Zeilen in die Ansicht einzufügen
    '---Dim gThisview As notesView im globalen-Teil
    '---Set gThisview = Source.view im Postopen-Ereignis der Ansicht
    '---Bemerkung: Zur Beschleunigung können an den genanten Stellen im Script Änderungen vornehmen
    ' Print "Start: " & Now()
    Dim session As New NotesSession
    Dim doc As notesdocument
    Dim intRow As Integer, intColumn As Integer, intColumnExport As Integer, i As Integer, k As Integer, l As Integer, notExport As Integer
    Dim intHideColumns(9) As Integer
    Dim strV As String
    Dim strTitle,OldLetter As String
    Dim objExcel As Variant, mySheet As Variant
    On Error Resume Next


    Set objExcel = CreateObject("Excel.Application")

    If objExcel Is Nothing Then
    Msgbox "Excel kann nicht gestartet werden."
    Exit Sub
    End If

    objExcel.Visible = True
    objExcel.Workbooks.Add("z:\softwareentw.xlt")

    Set mySheet = objExcel.ActiveWorkbook.ActiveSheet
    mySheet.name = "Softwareentwicklung"

    ' With mysheet.PageSetup
    ' .LeftFooter="Erstellt am: &D" + Chr(10) + "Erstellt um: &T"
    ' End With

    For k=0 To 9
    intHideColumns(k)=-1
    Next

    '---Kopfzeile bestimmen:
    intRow = 0
    intColumn=-1
    IntColumnExport = -1
    Forall c In gThisview.Columns
    intColumn=intColumn+1
    If c.IsHidden = True Then
    For k=0 To 9
    If intHideColumns(k)=-1 Then
    intHideColumns(k)=intColumn
    Exit For
    End If
    Next
    Else
    intColumnExport = intColumnExport +1
    If c.Title="" Then
    strTitle="Buchstabe"
    Else
    strTitle=c.Title
    End If
    Print strTitle & "Sp: " & intColumn+1 & " Ze: " intRow+1
    mySheet.PageSetup.PrintTitleRows="$1:$1"
    mySheet.Cells(intRow+1,intColumnExport+1).Value = StrTitle
    mySheet.Cells(intRow+1,intColumnExport+1).Interior.ColorIndex =15

    End If
    End Forall
    Dim z As Integer

    '---Zugriff auf Ansichtswerte des Dokuments:
    Set doc = gThisview.GetFirstDocument
    intRow=1
    While Not ( doc Is Nothing )
    IntColumn=-1
    IntColumnExport = -1
    Forall v In doc.ColumnValues
    notExport=False
    IntColumn=IntColumn+1
    '---Falls Spalte versteckt, nicht exportieren:
    For l=0 To 9
    If IntHideColumns(l) = IntColumn Then
    notExport=True
    End If
    Next
    If notExport=False Then
    intColumnExport = intColumnExport +1
    If Isarray(v) = True Then
    strV=ArrayToList(v,";")
    Else
    strV=Cstr(v)
    End If
    '---Zur Beschleunigung nächste Zeile auskommentieren und die übernächste Zeile das Kommentarzeichen wieder rausnehmen:
    ' mySheet.Cells(intRow+1,intColumnExport+1).Value = RemoveAllSubstring( ReplaceAllSubString(StrV,";",",") , Chr(&H7F) )
    If mySheet.Cells(intRow+1,intColumnExport+1).Value = mySheet.Cells(intRow,intColumnExport+1).Value Then
    mySheet.Cells(intRow,intColumnExport+1).Value=""
    End If
    mySheet.Cells(intRow+1,intColumnExport+1).Value = StrV
    End If
    End Forall
    intRow=intRow+1
    Set doc = gThisview.GetNextDocument(doc)
    Wend

    For z = 1 To intColumnExport+1
    mySheet.Columns(z).autofit
    Next
    '___________________________________________________________________________

    objExcel.ScreenUpdating = True
    objExcel.Application.Run("softwareentw1!Softwareentwicklung")

    ' Print "Ende: " & Now()
    End Sub