Visto che litigavo con il forumTool, visto che in quel papiro di roba ce n'è un sacco che non viene utilizzata e visto che m' era venuta voglia di cimentarmi.
Mi sono messo a ad implementare il processo di scrittura per creare la rappresentazione di una tabella in markUp BBCode da poter copioincollare direttamene nelal finestra di digitazione dei messaggi del forum.

E' ancora un pò embrionale ma la pubblico giusto per avere consigli su come portare avanti il progetto.

Per ora funziona che si seleziona e si lancia la macro e si copia il risultato dalla finestra immediato e mi pare d' aver notato che la conversione dei colori sia sbagliata.
Devo indagare alcune cose prima di metterci mano. ma se qualcuno sa gia come correggere. ben venga.



Codice: 
'   contenitore della tabella: table
' [TR][/TR] contenitore delle righe: table row
' [TD][/TD] contenitore dei dati, la cella: table data
' [TH][/TH] contenitore dei dati d' intestazione: table header
'


Sub prova()
    Debug.Print ExcelToBBCode(Selection)
End Sub
Function ExcelToBBCode(ByVal target As Range, Optional ByVal GetFormula As Boolean = False)
    Dim SorgenteBBCode As String
    Dim Cella As Range
    Dim Record As Range
    ''Riga per gli indirizzi di colonna
    SorgenteBBCode = "[TR=""bgcolor:#A0A0A0, align: center""]" & _
                    vbCrLf & "[TH=""bgcolor:#999999""][/TH] " & _
                    vbCrLf
    For Each Cella In target.Rows(1).Cells
        SorgenteBBCode = SorgenteBBCode & "[TH]" & Chr(Cella.Column + 96) & "[/TH]" & vbCrLf
    Next
    SorgenteBBCode = SorgenteBBCode & "[/TR]" & vbCrLf
    
    'crea una cella TD per ogni riga del range
    For Each Record In target.Rows
        SorgenteBBCode = SorgenteBBCode & "[TR][TH=""bgcolor:#A0A0A0, align: center""]" & Record.Row & "[/TH]"
        For Each Cella In Record.Cells
            SorgenteBBCode = SorgenteBBCode & TD_Formattato(Cella) & _
                                                DatiCellaFormattati(Cella, GetFormula) & _
                                                "[/TD]" & vbCrLf
'Debug.Print SorgenteBBCode
        Next
        SorgenteBBCode = SorgenteBBCode & "[/TR]" & vbCrLf
    Next
    SorgenteBBCode = ""
    ExcelToBBCode = SorgenteBBCode
End Function


Private Function TD_Formattato(ByVal Cella As Range) As String
    Dim Sorgente As String
    Dim ColoreSfondoCella As Long
    
    Sorgente = "[TD"
    'valuta sfondo cella se differente da VbWhite va iniettato l' ultimo Tag TD
    ColoreSfondoCella = Cella.DisplayFormat.Interior.Color
    If Not (ColoreSfondoCella = vbWhite) Then
        Sorgente = Sorgente & "=""bgcolor:" & ColoreInHtml(ColoreSfondoCella) & """]"
    Else
        Sorgente = Sorgente & "]"
    End If
    
    TD_Formattato = Sorgente
End Function


Function ColoreInHtml(ByVal colore As Long) As String
    ColoreInHtml = Trim(CStr(Hex(colore)))
    Do Until Len(ColoreInHtml) = 6
        ColoreInHtml = ColoreInHtml & "0"
    Loop
     ColoreInHtml = "#" & ColoreInHtml
End Function


Function DatiCellaFormattati(ByVal Cella As Range, Optional ByVal GetFormula As Boolean = False) As String
    Dim Sorgente As String
    Dim ColoreFont As String
    Dim AllineamentoFont As String
    Dim SegnaPostoColoreFont As String
    Dim SegnaPostoDati As String
    SegnaPostoDati = "****"
    SegnaPostoColoreFont = "####"
    
      'Vien valutato l' allineamento nella cella
        'allineamenti a sinistra
    If (Cella.HorizontalAlignment = xlGeneral) And (TypeName(Cella.Value) = "String") Or _
        (Cella.HorizontalAlignment = xlLeft) Then
        AllineamentoFont = "
" & SegnaPostoColoreFont & "
" ElseIf Cella.HorizontalAlignment = xlCenter Then AllineamentoFont = "
" & SegnaPostoColoreFont & "
" Else AllineamentoFont = SegnaPostoDati End If 'Viene valutato se il colore del font è diverso da nero ed eventualmente cambiato If Not (Cella.Font.Color = vbBlack) Then ColoreFont = "[COLOR=" & _ ColoreInHtml(Cella.Font.Color) & _ "]" & _ SegnaPostoDati & _ "[/COLOR]" Else ColoreFont = SegnaPostoDati End If 'memorizzazione dei dati della cella DatiCellaFormattati = Replace(AllineamentoFont, SegnaPostoColoreFont, ColoreFont) If GetFormula = True Then DatiCellaFormattati = Replace(DatiCellaFormattati, SegnaPostoDati, Cella.Formula) Else DatiCellaFormattati = Replace(DatiCellaFormattati, SegnaPostoDati, Cella.Value) End If End Function