Diskussion:Exceltabelle für Wiki-Code umwandeln: Unterschied zwischen den Versionen

Aus Wiki zur Mercedes Baureihe W126
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „' ' <MS-EXCEL VBA code: format_as_wikitable generates a wiki-Table from a EXCEL-cellrange> ' ' (c) Othmar Lippuner>, 2006, 2007 ' Version V18; last changed…“)
 
K (Die Seite wurde geleert.)
 
Zeile 1: Zeile 1:
'
 
' <MS-EXCEL VBA code: format_as_wikitable generates a wiki-Table from a EXCEL-cellrange>
 
'
 
' (c) Othmar Lippuner>, 2006, 2007
 
'    Version V18; last changed 07.4.2011
 
'licenced under      GNU GENERAL PUBLIC LICENSE at  10 April 2006 by author <Othmar Lippuner>
 
'                    GNU-License Version from 2, June 1991
 
'
 
' Everyone is permitted to copy and distribute verbatim copies
 
' of this license document, but changing it is not allowed.
 
'
 
'Installation:
 
'            1. Copy the Makrocode into a textfile FORMAT_AS_WIKITABLE.BAS
 
'            2. Import the macrofile FORMAT_AS_WIKITABLE_V17.BAS into a VBA-project of your EXCEL-File
 
'
 
'Usage:
 
 
'            1. Select the range you wan't to publish in EXCEL
 
'            2. Execute the macro FORMAT_AS_WIKITABLE
 
'            3. copy the complete wiki-text in outputtable WIKIOUTPUT into clipboard
 
'            4. paste the clipboardtext into your wikieditor
 
'
 
'    The main formatting attributes of excel are converted into wiki-parameters
 
'    Some strategies are applied to minimize the wiki-textcode generated, e.g. if possible
 
'    attributes are written als lineparameter instead of cellparameters thus reducing
 
'    textvolume and DB-load to the wikiservers, an increasing the readability of the tablecode
 
'    while editing.
 
'
 
' Attributes converted
 
'              bold
 
'              italic
 
'              textsize
 
'              underline
 
'              backgroundcolor
 
'              textcolor
 
'              horizontalalignment
 
'              verticalaligment
 
'              numberformats
 
'
 
'
 
' Attributes not converted
 
'              character font just uses the standard font settings of your favortie wiki-skin
 
'              styles
 
'              borders  just uses the standard border settings of class="wikitable"
 
'
 
' not supported features
 
'              nested table (excel can not do that)
 
'              connected cells in EXCEL, please dont use connected cells
 
'              charts or any other graphical gagets
 
'
 
'
 
'Software Requirements
 
'    Software is tested under EXCEL 2003, should be fine also with EXCEL-2000, its up to you to check it out
 
'
 
'    Caution: Any worksheet named "wikioutput" will be deleted, recreated and then overwritten
 
'            when executing the macro. In other words: By executing the macro 'format_as_wikitablle'
 
'            you accept that the name and content of this worksheet is reserved to the macro
 
'            'format_as_wikitablle'.
 
'
 
'  Version history
 
'
 
'          V10    10.4.2006, released
 
'          V11    17.4.2006, ernonous formatting corrected
 
'          V12    26.5.2006, verify that selection is a cellrange
 
'          V13    28.9.2006, V13: replace linebreaks in cellcontent with a Wiki-<BR>
 
'          V14    15.2.2006, V14: empty cells get &nbsp for correct rendering of cellheight
 
'          V15    21.4.2007  V15: class="prettytable" instead of [[Prettytable]]
 
'          V17    30.7.2007  V17: width and height rounded to integer px
 
'          V18    07.4.2011  V18: Force numeric content of table to be aligned to the right
 
'
 
'    Copyright (C) <2006>  <Othmar Lippuner ,Switzerland>
 
'
 
'    This program is free software; you can redistribute it and/or modify
 
'    it under the terms of the GNU General Public License as published by
 
'    the Free Software Foundation; either version 2 of the License, or
 
'    (at your option) any later version.
 
'
 
'    This program is distributed in the hope that it will be useful,
 
'    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
'    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
'    GNU General Public License for more details.
 
'
 
'    You should have received a copy of the GNU General Public License
 
'    along with this program; if not, write to the Free Software
 
'    Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
'    Boston, MA  02110-1301, USA
 
'
 
'
 
'
 
'    format_as_wikitablle.bas version 13, Copyright (C) Othmar Lippuner
 
'    format_as_wikitablle.bas comes with ABSOLUTELY NO WARRANTY;
 
'    This is free software, and you are welcome to redistribute it
 
'    under certain conditions; consult the GNU-Public license for these
 
'    conditions.
 
'
 
'
 
'
 
'  <Othmar Lippuner>, 10 April 2006  meet me at [[:de:Benutzer Diskussion:Ollio]]
 
'
 
'
 
Option Explicit
 
Const co = 1 ' all output is written in column 1
 
Const VersionID = "V1.8"
 
Const prettytable = True
 
Const emptyCell_nbsp = True '<< 5.3.2007
 
Dim iline As Long
 
Dim icolumn As Long
 
Dim os As String
 
Dim oline As Long 'lineindex in outputtable
 
Dim iLineMax As Long
 
Dim iColumnMax As Long
 
Dim selrange As Range  'inputrange
 
Dim orange As Range 'outputrange
 
Dim outtabName As String
 
Dim tableformatting As String
 
Dim sh As Worksheet
 
Dim wasUnderlined As Boolean  ' remember Textdecoration:underline state
 
 
' document the setting of lookahead attributation in line parameter
 
' if lineparameter is set then skip over cell-attributation
 
Dim lineattribut_borders_set                As Boolean
 
Dim lineattribut_fontsize_set              As Boolean
 
Dim lineattribut_bold_set                  As Boolean
 
Dim lineattribut_italic_set                As Boolean
 
Dim lineattribut_backgroundcolor_set        As Boolean
 
Dim lineattribut_fondcolor_set              As Boolean
 
Dim lineattribut_Halignment_set            As Boolean
 
Dim lineattribut_Valignment_set            As Boolean
 
 
Dim lineattribut_borders    As Long
 
Dim lineattribut_fontsize  As Long
 
Dim lineattribut_backgroundcolor    As Long
 
Dim lineattribut_fondcolor  As Long
 
Dim lineattribut_Halignment As Long
 
Dim lineattribut_Valignment As Long
 
 
 
 
 
 
Function hexdigit(wrk As Long) As String
 
If wrk > 15 Then
 
  MsgBox "illegal hexdigit value : " & wrk
 
Else
 
  Select Case wrk
 
        Case 0:      hexdigit = "0"
 
        Case 1:      hexdigit = "1"
 
        Case 2:      hexdigit = "2"
 
        Case 3:      hexdigit = "3"
 
        Case 4:      hexdigit = "4"
 
        Case 5:      hexdigit = "5"
 
        Case 6:      hexdigit = "6"
 
        Case 7:      hexdigit = "7"
 
        Case 8:      hexdigit = "8"
 
        Case 9:      hexdigit = "9"
 
        Case 10:    hexdigit = "A"
 
        Case 11:    hexdigit = "B"
 
        Case 12:    hexdigit = "C"
 
        Case 13:    hexdigit = "D"
 
        Case 14:    hexdigit = "E"
 
        Case 15:    hexdigit = "F"
 
  End Select
 
  End If
 
End Function 'hexdigit
 
 
Function myhex(num As Long) As String
 
'konvert a 16-Bit long to HEX-String inkl fixecd leading zeros
 
Dim lastdivisor As Long
 
Dim divisor As Long
 
Dim wrk As Long
 
Dim k As Long
 
Dim result As String
 
If wrk > 16 ^ 6 Then
 
      MsgBox "illegal hexdigit value : " & wrk
 
    Else
 
    lastdivisor = 1
 
    result = ""
 
    divisor = 16
 
    For k = 1 To 6
 
        wrk = (num Mod divisor) \ lastdivisor
 
        result = hexdigit(wrk) & result
 
        lastdivisor = divisor
 
        If k < 7 Then ' avoid overflow
 
            divisor = divisor * 16
 
        End If
 
    Next k
 
    myhex = result
 
End If
 
End Function 'myhex
 
 
 
Private Sub write_tablehead()
 
tableformatting = " <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] " & VersionID & "<\hiddentext>"
 
If prettytable Then
 
  tableformatting = " class=" & """wikitable""" & tableformatting
 
End If
 
oline = oline + 1: orange.Cells(oline, 1) = "{|" & tableformatting
 
End Sub 'write_tablehead
 
 
Private Sub write_lineheader()
 
Dim col_lookahead As Long
 
Dim lineheader As String
 
lineattribut_borders_set = True
 
lineattribut_fontsize_set = True
 
lineattribut_bold_set = True
 
lineattribut_italic_set = True
 
lineattribut_backgroundcolor_set = True
 
lineattribut_fondcolor_set = True
 
lineattribut_Halignment_set = True
 
lineattribut_Valignment_set = True
 
 
' init variables for delta-detection
 
' xxxx lineattribut_borders = selrange.Cells(iline, 1).Borders
 
If Not IsNull(selrange.Cells(iline, 1).Font.Size) Then
 
    lineattribut_fontsize = selrange.Cells(iline, 1).Font.Size
 
Else
 
    lineattribut_fontsize = 10 'take default
 
End If
 
If Not IsNull(selrange.Cells(iline, 1).Font.Bold) Then
 
    lineattribut_bold_set = selrange.Cells(iline, 1).Font.Bold
 
Else
 
    lineattribut_bold_set = False
 
End If
 
If Not IsNull(selrange.Cells(iline, 1).Font.Italic) Then
 
    lineattribut_italic_set = selrange.Cells(iline, 1).Font.Italic
 
Else
 
    lineattribut_italic_set = False
 
End If
 
lineattribut_backgroundcolor = selrange.Cells(iline, 1).Interior.Color
 
lineattribut_fondcolor = selrange.Cells(iline, 1).Font.Color
 
lineattribut_Halignment = selrange.Cells(iline, 1).HorizontalAlignment
 
lineattribut_Valignment = selrange.Cells(iline, 1).VerticalAlignment
 
' loop on line for deltadectection
 
For col_lookahead = 2 To iColumnMax
 
' xxxx  If lineattribut_borders <> selrange.Cells(iline, 1).Borders Then
 
' xxxx      lineattribut_borders_set = False: End If
 
 
    If Not IsNull(selrange.Cells(iline, col_lookahead).Font.Size) Then
 
        If lineattribut_fontsize <> selrange.Cells(iline, col_lookahead).Font.Size Then
 
            lineattribut_fontsize_set = False: End If
 
    End If
 
    If Not selrange.Cells(iline, col_lookahead).Font.Bold Then
 
        lineattribut_bold_set = False: End If
 
    If Not selrange.Cells(iline, col_lookahead).Font.Italic Then
 
        lineattribut_italic_set = False: End If
 
    If lineattribut_backgroundcolor <> selrange.Cells(iline, col_lookahead).Interior.Color Then
 
        lineattribut_backgroundcolor_set = False:
 
        End If
 
    If lineattribut_fondcolor <> selrange.Cells(iline, col_lookahead).Font.Color Then
 
        lineattribut_fondcolor_set = False: End If
 
    If lineattribut_Halignment <> selrange.Cells(iline, col_lookahead).HorizontalAlignment Then
 
        lineattribut_Halignment_set = False: End If
 
    If lineattribut_Valignment <> selrange.Cells(iline, col_lookahead).VerticalAlignment Then
 
        lineattribut_Valignment_set = False: End If
 
Next col_lookahead
 
lineheader = formatstring_for_a_linecontent
 
' write linetrailer
 
oline = oline + 1: orange.Cells(oline, 1) = "|- " & lineheader
 
End Sub 'write_lineheader
 
 
Private Sub write_linetrailer()
 
' write linebuffer to output  ==== anyway sofare it is empty
 
oline = oline + 1: orange.Cells(oline, 1) = os
 
' flush the linebuffer
 
os = ""
 
End Sub 'write_linetrailer
 
 
 
 
Function excelHexStr2HTML(str As String) As String
 
Dim a_str As String
 
Dim b_str As String
 
Dim c_str As String
 
a_str = Left(str, 2)
 
c_str = Right(str, 2)
 
b_str = Left(Right(str, 4), 2)
 
excelHexStr2HTML = c_str & b_str & a_str
 
End Function
 
 
Private Function skip_underline(str As String) As String
 
Dim k As Long
 
Dim so As String
 
so = ""
 
' skip unwanted underscores in EXCEL-transforms
 
For k = 1 To Len(str)
 
  If Mid$(str, k, 1) <> "_" Then
 
        so = so & Mid$(str, k, 1)
 
  End If
 
Next k
 
skip_underline = so
 
End Function
 
 
 
Private Function process_cellcontent(cellcontent As String) As String
 
Const verbose = False
 
Dim hyperlink As String
 
'dont use .NumberFormatlocal because it
 
' returns wrong Dateformatstrings "[$-807]TTTT, T. MMMM JJJJ"; instead of "TTTT, T. MMMM JJJJ;" that won't work with format
 
With selrange.Cells(iline, icolumn)
 
If verbose Then
 
    Debug.Print iline; "/"; icolumn, .NumberFormat, .Value
 
End If
 
If .NumberFormat <> "General" And .NumberFormat <> "Standard" Then
 
    cellcontent = skip_underline(Format(.Value, .NumberFormat))
 
Else
 
    If cellcontent = "" Then      '<< 15.2.2007
 
        If Not emptyCell_nbsp Then '<< 05.3.2007
 
            cellcontent = " " '<< 05.3.2007
 
        Else                      '<< 05.3.2007
 
            cellcontent = "&nbsp;" '<< 15.2.2007
 
        End If                    '<< 05.3.2007
 
    Else
 
        cellcontent = cellcontent
 
    End If                    '<< 15.2.2007
 
End If
 
 
' Process hyperlinks
 
'----------------------------------------
 
If .Hyperlinks.Count > 0 Then
 
    hyperlink = .Hyperlinks(1).Address
 
    If Len(WorksheetFunction.Substitute(hyperlink, "http://", "")) <> Len(hyperlink) Then 'There may be a neater way to do this
 
        cellcontent = " [" & hyperlink & " " & cellcontent & "]" 'http link
 
    Else
 
        cellcontent = " [[" & hyperlink & "|" & cellcontent & "]]" 'assume that anything without http is a local wiki link
 
    End If
 
End If
 
 
End With
 
' V13: replace linebreaks in cellcentent with a Wiku-<BR> to avoid havoc in wiki-rendering
 
'      thanks feedback of ManWing2, 26. Sep 2006
 
process_cellcontent = Replace(cellcontent, vbLf, "<br />")
 
End Function
 
 
Private Sub writefirstlinecell(colnr As Long)
 
With selrange.Cells(iline, icolumn)
 
    If .MergeArea.Column = .Column And .MergeArea.Row = .Row Then
 
        oline = oline + 1: orange.Cells(oline, 1) = formatstring_for_a_cellcontent(True, colnr = 1) & " | " & _
 
                                                    process_cellcontent(selrange.Cells(iline, icolumn))
 
    End If
 
End With
 
End Sub
 
 
Private Sub writecell(colnr As Long)
 
With selrange.Cells(iline, icolumn)
 
    If .MergeArea.Column = .Column And .MergeArea.Row = .Row Then
 
        oline = oline + 1: orange.Cells(oline, 1) = formatstring_for_a_cellcontent(False, colnr = 1) & " | " & _
 
                                                    process_cellcontent(selrange.Cells(iline, icolumn))
 
    End If
 
End With
 
End Sub
 
 
Private Sub write_tabletail()
 
oline = oline + 1: orange.Cells(oline, 1) = "|}"
 
End Sub
 
 
 
Function doublequotestring(str As String, Placeholderchar As String) As String
 
Dim k As Long
 
Dim so As String
 
so = ""
 
For k = 1 To Len(str)
 
  If Mid$(str, k, 1) = Left(Placeholderchar, 1) Then
 
        so = so & """"
 
  Else
 
        so = so & Mid$(str, k, 1)
 
  End If
 
Next k
 
doublequotestring = so
 
End Function
 
 
 
Function WorksheetExits(tabname As String) As Boolean
 
Dim found As Boolean
 
found = False
 
On Error GoTo err_exit
 
Worksheets(tabname).Select
 
found = True
 
err_exit:
 
WorksheetExits = found
 
End Function 'WorksheetExits
 
 
Public Sub Format_as_wikitable()
 
' implicit parameter: selected range
 
' writes the output into table: wikioutput
 
' caution if this table exists it is deleted !!!
 
 
 
If Not TypeOf Selection Is Range Then
 
    MsgBox "Error: You must select a cellrange, to convert to a wiki-table, but you " _
 
    & vbCrLf & " have selected a " & TypeName(Selection)
 
Else
 
    Set selrange = Selection
 
    wasUnderlined = False
 
    iLineMax = selrange.Rows.Count
 
    iColumnMax = selrange.Columns.Count
 
    outtabName = "wikioutput"
 
    If WorksheetExits(outtabName) Then
 
      Worksheets(outtabName).Delete
 
    End If
 
    oline = 0
 
    ' create output worksheet
 
    Set sh = Worksheets.Add(ActiveWorkbook.Sheets(1), , , xlWorksheet) 'always add  Worksheets(outtabName) at first place
 
    sh.Name = outtabName 'was Worksheets(1).name = outtabName
 
    sh.Select
 
    Set orange = sh.Range(Cells(1, 1), Cells(65353, 1))
 
    orange.Select
 
    '( Rows(65534), Columns(1))
 
    write_tablehead
 
    For iline = 1 To iLineMax
 
      write_lineheader
 
      For icolumn = 1 To iColumnMax
 
          If iline = 1 Then
 
          writefirstlinecell (icolumn)
 
          Else
 
          writecell (icolumn)
 
          End If
 
      Next icolumn
 
      write_linetrailer
 
    Next iline
 
    write_tabletail
 
End If 'Not TypeOf selrange Is Range Then
 
End Sub
 
 
 
Function formatstring_for_a_cellcontent(firstline As Boolean, firstrow As Boolean) As String
 
Dim str As String
 
Dim stylestring As String
 
Dim attribute_String As String
 
Dim colhexval As String
 
Dim prop As String
 
stylestring = ""
 
attribute_String = ""
 
With selrange.Cells(iline, icolumn)
 
  ' Determine backgroundcolor_prop
 
  '----------------------------------------
 
  If Not lineattribut_backgroundcolor_set Then
 
        colhexval = excelHexStr2HTML(myhex(.Interior.Color))
 
        prop = "@background-color:#" & colhexval
 
        ' Apply backgroundcolor_prop to Stylestring
 
        If colhexval <> "FFFFFF" Then 'don't write defaultvalue for white, to help to save wikidb-tablespace
 
            If stylestring = "" Then
 
                  stylestring = prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
              End If
 
        End If
 
  End If
 
 
    ' Added by Thomas Tausend 4.7.2011
 
    ' If cell contains a numeric value align to the right!
 
    If IsNumeric(.Value) Then
 
        prop = "align=@right@"
 
        attribute_String = attribute_String & " " & prop
 
    End If
 
    ' / Added by Thomas Tausend 4.7.2011
 
  
  ' Determine Borders_prop
 
  '----------------------------------------
 
  '.Borders
 
  ' do something
 
 
  ' Determine Width_prop
 
  '----------------------------------------
 
  If firstline Then
 
      prop = "width=@" & Round(.Width, 0) & "@" '<V17
 
  ' Apply Width_prop to Stylestring
 
      attribute_String = attribute_String & " " & prop
 
    End If
 
 
  ' Determine Colspan_prop
 
  '----------------------------------------
 
  If .MergeArea.Columns.Count > 1 Then
 
      prop = "colspan=@" & .MergeArea.Columns.Count & "@"
 
      attribute_String = attribute_String & " " & prop
 
    End If
 
 
  ' Determine Rowspan_prop
 
  '----------------------------------------
 
  If .MergeArea.Rows.Count > 1 Then
 
      prop = "rowspan=@" & .MergeArea.Rows.Count & "@"
 
      attribute_String = attribute_String & " " & prop
 
    End If
 
 
      ' Determine Font_prop
 
  '========================================
 
  '.Font
 
  ' Determine Font prop font.size
 
  '----------------------------------------
 
    With .Font
 
      If Not IsNull(.Size) And .Size <> 10 And Not lineattribut_fontsize_set Then  ' trapped ISnull-Condition and ignore standard fontsize
 
            prop = "font-size:" & .Size
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop & "pt"
 
                Else
 
                  stylestring = stylestring & ";" & prop & "pt"
 
            End If
 
      End If
 
  ' Determine Font prop font.bold
 
  '----------------------------------------
 
      If .Bold And Not lineattribut_bold_set Then
 
            prop = "font-weight:bold"
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
      ' Determine Font prop underline
 
  '----------------------------------------
 
      If .Italic Then
 
            prop = "font-style:Italic"
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
 
 
      ' Determine Font prop font.italic
 
  '----------------------------------------
 
      If .Underline = xlUnderlineStyleNone And Not lineattribut_italic_set Then ' toggle switch off
 
            If wasUnderlined Then  ' toggle switch off
 
                prop = "text-decoration:none"
 
                wasUnderlined = False ' toggle switch on
 
                If stylestring = "" Then
 
                        stylestring = "@" & prop
 
                    Else
 
                      stylestring = stylestring & ";" & prop
 
                  End If
 
            End If
 
      Else '.Underline <> xlUnderlineStyleNone
 
            If Not wasUnderlined Then
 
                      prop = "text-decoration:underline"
 
                      wasUnderlined = True ' toggle switch on
 
                      If stylestring = "" Then
 
                            stylestring = "@" & prop
 
                          Else
 
                            stylestring = stylestring & ";" & prop
 
                      End If
 
            End If
 
      End If
 
 
  ' Determine Color prop font.color
 
  '----------------------------------------
 
      If Not IsNull(.Color) And .Color <> 0 And Not lineattribut_fondcolor_set Then  ' trapped ISnull-Condition and ignore standard color
 
            prop = "color:#" & excelHexStr2HTML(myhex(.Color))
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
    End With
 
  ' Determine Height_prop
 
  '----------------------------------------
 
'  .Height
 
  If firstrow Then
 
      prop = "height=@" & Round(.Height, 0) & "@" '<V17
 
  ' Apply Height_prop to Stylestring
 
      attribute_String = attribute_String & " " & prop  '<V17
 
    End If
 
  ' Determine HorizontalAlignment_prop
 
  '----------------------------------------
 
  '.HorizontalAlignment
 
    If .HorizontalAlignment <> xlHAlignLeft And Not lineattribut_Halignment_set Then ' dont write the default
 
      prop = ""
 
      Select Case .HorizontalAlignment
 
        Case xlHAlignRight:    prop = "align=@right@"
 
        Case xlHAlignCenter:  prop = "align=@center@"
 
      End Select
 
      ' Apply HorizontalAlignment_prop to Stylestring
 
      attribute_String = attribute_String & " " & prop
 
      End If
 
 
  ' Determine VerticalAlignment_prop
 
  '----------------------------------------
 
    If .VerticalAlignment <> xlVAlignCenter And Not lineattribut_Halignment_set Then  ' dont write the default
 
    prop = ""
 
      Select Case .VerticalAlignment
 
        Case xlVAlignTop:    prop = "valign=@top@"
 
        Case xlVAlignBottom:  prop = "valign=@bottom@"
 
      End Select
 
      ' Apply VerticalAlignment_prop to Stylestring
 
      attribute_String = attribute_String & " " & prop
 
      End If
 
  ' Determine IndentLevel_prop
 
  '----------------------------------------
 
  '.IndentLevel >> maybe later to come
 
  ' Determine Style_prop
 
  '----------------------------------------
 
  '.Style  >> maybe later to come
 
  '----------------------------------------
 
  '.WrapText << Attribut is wiki not relevant, while unconditional default
 
  '----------------------------------------
 
  '
 
  If stylestring <> "" Then
 
      str = doublequotestring("style=" & stylestring & "@", "@")
 
  End If
 
  str = str & doublequotestring(attribute_String, "@")
 
End With
 
If str <> "" Then
 
    str = "|" & str
 
End If
 
formatstring_for_a_cellcontent = str
 
End Function 'formatstring_for_a_cellcontent
 
 
 
 
Function formatstring_for_a_linecontent() As String
 
Dim prop As String
 
Dim stylestring As String
 
Dim colhexval As String
 
 
Dim attribute_String As String
 
Dim ostr As String
 
With selrange.Cells(iline, 1)  'take first column as reference
 
  ' Determine backgroundcolor_prop
 
  '----------------------------------------
 
  If lineattribut_backgroundcolor_set Then
 
        colhexval = excelHexStr2HTML(myhex(.Interior.Color))
 
        prop = "@background-color:#" & colhexval
 
        ' Apply backgroundcolor_prop to Stylestring
 
        If colhexval <> "FFFFFF" Then 'don't write defaultvalue for white, to help to save wikidb-tablespace
 
            If stylestring = "" Then
 
                  stylestring = prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
              End If
 
        End If
 
  End If
 
  ' Determine Borders_prop
 
  '----------------------------------------
 
  '.Borders
 
  ' do something
 
 
      ' Determine Font_prop
 
  '========================================
 
  '.Font
 
  ' Determine Font prop font.size
 
  '----------------------------------------
 
    With .Font
 
      If Not IsNull(.Size) And .Size <> 10 And lineattribut_fontsize_set Then  ' trapped ISnull-Condition and ignore standard fontsize
 
            prop = "font-size:" & .Size
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop & "pt"
 
                Else
 
                  stylestring = stylestring & ";" & prop & "pt"
 
            End If
 
      End If
 
  ' Determine Font prop font.bold
 
  '----------------------------------------
 
      If lineattribut_bold_set Then
 
            prop = "font-weight:bold"
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
      ' Determine Font prop underline
 
  '----------------------------------------
 
      If lineattribut_italic_set Then
 
            prop = "font-style:Italic"
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
 
 
      ' Determine Font prop font.italic
 
  '----------------------------------------
 
      If lineattribut_italic_set Then  ' toggle switch off
 
                      prop = "text-decoration:underline"
 
                      wasUnderlined = True ' toggle switch on
 
                      If stylestring = "" Then
 
                            stylestring = "@" & prop
 
                          Else
 
                            stylestring = stylestring & ";" & prop
 
                      End If
 
          End If
 
 
  ' Determine Color prop font.color
 
  '----------------------------------------
 
      If Not IsNull(.Color) And .Color <> 0 And lineattribut_fondcolor_set Then  ' trapped ISnull-Condition and ignore standard color
 
            prop = "color:#" & excelHexStr2HTML(myhex(.Color))
 
            If stylestring = "" Then
 
                  stylestring = "@" & prop
 
                Else
 
                  stylestring = stylestring & ";" & prop
 
            End If
 
      End If
 
    End With
 
  ' Determine Height_prop
 
  '----------------------------------------
 
  ' Determine HorizontalAlignment_prop
 
  '----------------------------------------
 
  '.HorizontalAlignment
 
    If .HorizontalAlignment <> xlHAlignLeft And lineattribut_Halignment_set Then  ' dont write the default
 
      prop = ""
 
      Select Case .HorizontalAlignment
 
        Case xlHAlignRight:    prop = "align=@right@"
 
        Case xlHAlignCenter:  prop = "align=@center@"
 
      End Select
 
      ' Apply HorizontalAlignment to Stylestring
 
      attribute_String = attribute_String & " " & prop
 
      End If
 
 
  ' Determine VerticalAlignment_prop
 
  '----------------------------------------
 
    If .VerticalAlignment <> xlVAlignCenter And lineattribut_Halignment_set Then  ' dont write the default
 
    prop = ""
 
      Select Case .VerticalAlignment
 
        Case xlVAlignTop:    prop = "valign=@top@"
 
        Case xlVAlignBottom:  prop = "valign=@bottom@"
 
      End Select
 
      ' Apply VerticalAlignment_prop to Stylestring
 
      attribute_String = attribute_String & " " & prop
 
      End If
 
  ' Determine IndentLevel_prop
 
  '----------------------------------------
 
  '.IndentLevel >> maybe later to come
 
  ' Determine Style_prop
 
  '----------------------------------------
 
  '.Style  >> maybe later to come
 
  '----------------------------------------
 
  '.WrapText << Attribut is wiki not relevant, while unconditional default
 
  '----------------------------------------
 
  '
 
  If stylestring <> "" Then
 
      ostr = doublequotestring("style=" & stylestring & "@", "@")
 
  End If
 
  ostr = ostr & doublequotestring(attribute_String, "@")
 
End With
 
'If ostr <> "" Then
 
'    ostr = "|" & ostr
 
'End If
 
formatstring_for_a_linecontent = ostr
 
 
End Function 'formatstring_for_a_linecontent
 

Aktuelle Version vom 8. April 2012, 16:01 Uhr