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