|
|
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   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 = " " '<< 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
| |