Excel ne dispose d'aucune prise en charge accessible à l'utilisateur pour cette fonctionnalité, mais vous pouvez facilement contourner cela ou vous connecter à VBA, où cette fonctionnalité est fournie:
Exportation "one-shot"
- Sélectionnez le graphique (l'ensemble du graphique, pas un composant interne; sélectionnez donc la bordure).
- Copiez-le (ctrl-c, cliquez avec le bouton droit de la souris sur ce que vous voulez).
- Ouvrez MS Paint.
- Coller (vous souhaiterez peut-être d'abord réduire la taille de l'image, elle sera agrandie pour s'adapter, mais pas rétrécie).
- Enregistrez comme vous le souhaitez.
Exportation en vrac
Vous voudrez probablement envisager d'utiliser ActiveChart.Export
dans une macro VBA, cela vous permet de spécifier un chemin de fichier, puis permet à Excel de faire le travail.
Voici un prototype fonctionnel que je viens de mettre en place. Exécutez-le et chaque graphique du classeur actif sera exporté dans le même dossier que ce fichier, au format PNG, avec en _chart##
annexe le nom du fichier (où ##
est un nombre croissant).
Il n'a pas effectuer des contrôles de sécurité (donc écrasera les fichiers!) Et ne contient aucune vérification d'erreur. Cela ne fonctionnera pas si vous n'avez pas encore enregistré le classeur, l'emplacement est en lecture seule ou toute autre chose qui empêche l'écriture à l'emplacement du fichier. Je n'ai testé cela que dans Excel 2003 (car c'est tout ce que j'ai à portée de main pour le moment).
En d'autres termes: utilisez à vos risques et périls , il s'agit uniquement d'un exemple de travail de base .
'small nicety to ensure two-digits for better file sorting'
Function NiceFileNumber(num As Integer) As String
If num < 10 Then
NiceFileNumber = "0" & num
Else
NiceFileNumber = num
End If
End Function
'the real function'
Sub ExportAllCharts()
Dim i As Integer, exportCount As Integer
Dim fileNum As String, fileBase As String
Dim sheetObj As Worksheet
Dim chartObj As Chart
'current file location and name, with extension stripped'
fileBase = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1)
exportCount = 0
'First, export all charts that are in their own sheets'
For Each chartObj In ActiveWorkbook.Charts
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
chartObj.Export fileBase & "_chart" & fileNum & ".png"
Next
'Then, export all charts that are embedded inside normal sheets'
For Each sheetObj In ActiveWorkbook.Worksheets
For i = 1 To sheetObj.ChartObjects.count
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
sheetObj.ChartObjects(i).Activate
ActiveChart.Export fileBase & "_chart" & fileNum & ".png"
Next i
Next
End Sub
Remarque: J'ai enfermé les commentaires dans les '
s aux deux extrémités, ce qui n'est pas nécessaire, mais permet de s'assurer qu'ils sont correctement colorés ici.