J'ai créé un AddIn pour Excel (2016), qui enregistre la zone d'impression en tant que fichier jpg. Cela a bien fonctionné pendant quelques mois. De nos jours, je reçois de plus en plus de rapports d'erreurs des utilisateurs, tous ont la même erreur (image ci-dessous). Les utilisateurs ont Windows 7 avec Excel 2013 ou Windows 10 avec Excel 2016, les deux ont cette erreur. Lors de la première réinstallation de mon programme a aidé, mais à partir de maintenant cela n'aide pas.L'opération de Presse-papiers demandée GetDataObject n'a pas réussi 0x800401D0
Voici mon code:
public static void Save(string report, string area, RibbonControlEventArgs e)
{
Excel.Window window = e.Control.Context;
Excel.Worksheet sheet = ((Excel.Worksheet)window.Application.ActiveSheet);
Excel.Range range = sheet.Range[sheet.PageSetup.PrintArea];
range.CopyPicture(Excel.XlPictureAppearance.xlPrinter, Excel.XlCopyPictureFormat.xlPicture);
range.Copy(Type.Missing);
string fileName = @"\\server.company.lan\report.jpg";
if (Clipboard.GetDataObject() != null)
{
IDataObject data = Clipboard.GetDataObject();
Image image = (Image)data.GetData(DataFormats.Bitmap, true);
image.Save(fileName, ImageFormat.Jpeg);
}
}
Exécutez-vous cela sur un thread non-STA? (PS: le type d'Exception pourrait sérieusement aider ...) vérifie aussi ceci: https://stackoverflow.com/questions/68666/clipbrd-e-cant-open-error-when-setting-the-clipboard-from- net –
@SimonMourier Oui, je cours cela sur un thread non-STA. J'ai joint le message d'erreur à ma question, c'est tout ce que j'ai, car je ne peux pas reproduire cette erreur sur mon ordinateur. – Adam
Vous devez utiliser un thread STA pour accéder au Presse-papiers. –