J'essaie de copier du contenu texte formaté d'Excel à Powerpoint dans VBA - de préférence sans copier-coller, car il se bloque juste tous les le temps que je l'exécute (même avec DoEvents multiples pour le ralentir ... il y a des centaines de cellules de texte fortement formaté).VBA pour copier d'Excel vers PowerPoint (Pas 'copier-coller')
C'est pourquoi j'ai essayé de le faire fonctionner en adressant les cellules directement comme dans le code ci-dessous.
For i = 1 To WS.Range("A65536").End(xlUp).Row
If WS.Cells(i, 1) > 0 Then
Set newSlide = ActivePresentation.Slides(1).Duplicate
newSlide.MoveTo (ActivePresentation.Slides.Count)
With newSlide.Shapes(1).TextFrame.TextRange
.Text = WS.Cells(i, 1).Value ' Inserts the (non-formatted) text from Excel. Have also tried WS.Cells(i, 1).Text
.Font.Name = WS.Cells(i, 1).Font.Name ' This works fine
.Font.Size = WS.Cells(i, 1).Font.Size ' This works fine too
' Neither of the below work because there is a mixture of font styled and colours within individual cells
.Font.FontStyle = WS.Cells(i, 1).Font.FontStyle ' Font Style (Regular, Bold, Italic, Bold Italic)
.Font.Color = WS.Cells(i, 1).Font.Color ' Font Color
End With
End If
Next
Il fonctionne (très rapidement) transférer le contenu cellulaire, nom de la police et de la taille de la police ... mais pas pour FontStyle (gras, italique, etc.) ou FontColor parce qu'il ya plus d'un style/couleur dans des cellules individuelles.
Y a-t-il un moyen de contourner ce problème? Je n'ai pas la moindre idée de ce que la solution potentielle (le cas échéant) pourrait être, alors je ne sais même pas par où commencer à chercher. Même une poussée dans la bonne direction aiderait énormément.
La mise en forme conditionnelle peut être appliquée à certaines cellules de la feuille de calcul. si vous le faites, vous devez utiliser la propriété 'DisplayFormat' d'une plage. par exemple. '.Font.Color = WS.Cells (i, 1) .DisplayFormat.Font.Color' etc ..... (parce que les formats de mise en forme conditionnelle se transforment en une cellule, et le format supérieur est celui que vous voyez .) ... DisplayFormat est disponible à partir de Excel 2010 – jsotola
remplacez juste '.Font' par' .DisplayFormat.Font' partout dans votre code (du côté excel de la déclaration d'affectation) – jsotola
Merci pour votre aide jsotola. .DisplayFormat semble fonctionner correctement lorsque TOUS le texte d'une cellule est en gras ... ou en italique ... ou une seule couleur. Cependant, dans ma feuille de calcul, chaque cellule contient un mélange de ces éléments. Par exemple, dans certaines cellules, il y a des mots en gras et d'autres non gras ... le tout dans la même cellule. Dans d'autres cellules, certains mots sont noirs et certains mots sont rouges ... à nouveau, tous dans la même cellule. (Je pense que peut-être ma question ne rend pas cette partie très claire.) – ThomasKa