Export csv OpenSiteExplorer – export excel décalage de colonnes

Pour ceux qui utilisent OpenSiteExplorer pour lister les backlinks sur vos sites, vous avez surement rencontré des problèmes sur les exports.
Impossible de récupérer ceux-ci sous Excel sans avoir des décalages de colonnes.
Bref pour faire court, voila un petit script VBA à placer dans une macro Excel qui devrait vous soulager.
Le fichier doit s’appeler c:Export OSE.csv
et le résultat est visible dans c:Export OSE3.csv

Sub opensitemap()
Dim sOldLigne As String
Dim iCron As Integer
Dim iPos As Integer
Dim iPosFin As Integer
Dim iPosRC As Integer
Dim bGuillemet As Boolean

'Creation dun fichier propre csv a partir d un fichier opensitemap
sOldLigne = ""
Open "c:Export OSE.csv" For Input As #1
Open "c:Export OSE2.csv" For Output As #2
Do While Not EOF(1)
    Line Input #1, sLigne
    sLigne = Replace(Trim(sLigne), Chr(10), vbCrLf)

    iPos = 0
    While sLigne <> "" And InStr(iPos + 1, sLigne, "http") > 0
        iPos = InStr(iPos + 1, sLigne, "http")
        iPosFin = InStr(iPos + 1, sLigne, "http")
        iPosRC = InStr(iPosFin + 1, sLigne, vbCrLf)
        If iPosRC = 0 Then
            iPosRC = InStr(iPos + 1, sLigne, vbCrLf)
        End If

        Print #2, sOldLigne & Mid(sLigne, 1, iPosRC - 1)
        sLigne = Trim(Mid(sLigne, iPosRC + 2))
        sOldLigne = ""
        iPos = 1

    Wend
    sOldLigne = sOldLigne & sLigne

Loop
Close #1
Close #2

'Il reste qq lignes en erreur
bDepart = True
sOldLigne = ""
Open "c:Export OSE2.csv" For Input As #2
Open "c:Export OSE3.csv" For Output As #3
Do While Not EOF(2)
    Line Input #2, sLigne
    sLigne = sOldLigne & sLigne

    iPos = InStr(1, sLigne, "http")
    iPosFin = InStr(iPos + 1, sLigne, "http")
    If bDepart = False And iPosFin = 0 Then
        sOldLigne = sLigne
    Else

        'Remplacement des virgules par des | pour les separateurs
        bGuillemet = False
        iLettre = 1
        While iLettre < Len(sLigne)
            sLettre = Mid(sLigne, iLettre, 1)
            If sLettre = Chr(34) Then
                If bGuillemet Then
                    bGuillemet = False
                Else
                    bGuillemet = True
                End If
            End If

            If bGuillemet And sLettre = vbTab Then
                sLigne = (Mid(sLigne, 1, iLettre - 1)) & " " & (Mid(sLigne, iLettre + 1))
            End If
            If sLettre = "," And bGuillemet = False Then
                sLigne = (Mid(sLigne, 1, iLettre - 1)) & vbTab & (Mid(sLigne, iLettre + 1))
            End If
            iLettre = iLettre + 1
        Wend

        sLigne = Replace(sLigne, Chr(34), "")
        'sLigne = Replace(sLigne, vbTab & vbTab, vbTab)

        Print #3, sLigne
        bDepart = False 'Permet de bypasser la 1er ligne qui n a pas http
        sOldLigne = ""
    End If
Loop
Close #3
Close #2
MsgBox "ok"
End Sub

Laisser un commentaire

*