Dans votre exemple,
For Each snt In docCur.Sentences
If snt.Bold = True Then
i = i + 1
xlWS.Cells(i, 1).Value = snt.Text
End If
Next snt
Réécrivons que la première
For Each snt In docCur.Sentences
If snt.Bold = True Then
i = i + 1
xlWS.Cells(i, COLUMN_A).Value = snt.Text
End If
Next snt
Vous ne retenant que les gras phrase (If snt.Bold = True
), et écrit à COLUMN_A
seul.
Qu'est-ce que vous voulez est la phrase audacieuse et les trois phrases qui suivent après, et que vous voulez écrire quatre colonnes.
changer donc cette section:
' Dim j As Long ' - make sure to have already declared this, or just uncomment this line
For j = 1 to docCur.Sentences.Count ' perhaps docCur.Paragraphs instead?
If docCur.Sentences(j).Bold = True Then
i = i + 1
' used 1+n and j+n for ease of understanding, but you can make these constant with a real solution; or you could even put this in another loop if you wanted, e.g. For n = 0 to 3, ...
xlWS.Cells(i, 1+0).Value = docCur.Sentences(j+0).Text
xlWS.Cells(i, 1+1).Value = docCur.Sentences(j+1).Text
xlWS.Cells(i, 1+2).Value = docCur.Sentences(j+2).Text
xlWS.Cells(i, 1+3).Value = docCur.Sentences(j+3).Text
End If
Next j
Ou, pour optimiser les performances:
' Dim j As Long ' - make sure to have already declared this, or just uncomment this line
With docCur.Sentences ' perhaps docCur.Paragraphs instead?
For j = 1 To .Count
If .Item(j).Bold = True Then
i = i + 1
xlWS.Cells(i, 1).Resize(, 4).Value = Array(.Item(j + 0).Text, .Item(j + 1).Text, .Item(j + 2).Text, .Item(j + 3).Text)
End If
Next j
End With
Sur la base des commentaires, des changements:
Problème: « En outre, certains phrases que je vais un peu sur la deuxième ligne si techniquement là serait 5 phrases au total depuis le formatage. Une manière de concaténer les deux lignes qui devraient effectivement représenter la même phrase ":
Solution: concaténer &
:
Exemple:
Quatrième de Array(...)
change
de .Item(j + 3).Text
à .Item(j + 3).Text & .Item(j + 4).Text)
Problème: "Au lieu de créer la dernière colonne, tout se termine par des croix amusantes (comme un Ankh égyptien). Une idée de comment les supprimer?« :
Solution: Supprimez le dernier caractère dans la phrase problème en utilisant Left(string, Len(string)-1)
ou utiliser Replace(string, [problem character], "")
Exemple:
élément de problème (en présumant phrase 4) Array(...)
change
de .Item(j + 3).Text
à Left(.Item(j + 3).Text, Len(.Item(j + 3).Text) - 1)
Mis à jour le:
' Dim j As Long ' - make sure to have already declared this, or just uncomment this line
With docCur.Sentences ' perhaps docCur.Paragraphs instead?
For j = 1 To .Count
If .Item(j).Bold = True Then
i = i + 1
xlWS.Cells(i, 1).Resize(, 4).Value = Array(.Item(j + 0).Text, .Item(j + 1).Text, .Item(j + 2).Text, Left(.Item(j + 3).Text, Len(.Item(j + 3).Text) - 1) & .Item(j + 4).Text)
End If
Next j
End With
S'il ne s'agit pas d'un correctif complet, veuillez fournir un exemple de fichier.
Vous avez obtenu une erreur: Erreur définie par l'application ou définie par l'objet – bogdanb
Nevermind. Correction de cette erreur Je reçois le 2010. Au lieu de créer la dernière colonne, tout se termine par des croix amusantes (comme un Ankh égyptien). Une idée de comment les supprimer? – bogdanb
Aussi quelques phrases que j'ai aller un peu sur la deuxième ligne donc techniquement il y aurait 5 phrases au total depuis le formatage. Une façon de concaténer les deux lignes qui devraient effectivement représenter la même phrase? – bogdanb