2
Excel(2016)用のAddInを作成しました。これは印刷領域をjpgファイルとして保存します。それは数ヶ月間うまくいった。最近、私はユーザーからのエラー報告が増えていますが、すべて同じエラーが表示されます(下の図)。ユーザーには、Windows 7(Excel 2013)またはWindows 10(Excel 2016)がありますが、どちらもこのエラーがあります。私のプログラムの最初の回の再インストールは助けになったが、今からは役に立たない。GetDataObject要求されたクリップボード操作が成功しなかった0x800401D0
ここに私のコードです:
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);
}
}
STA以外のスレッドで実行していますか? (PS:Exceptionのタイプは真剣に助けになるかもしれません...)これもチェックしてください:https://stackoverflow.com/questions/68666/clipbrd-e-cant-open-error-when-setting-the-clipboard-from- net –
@SimonMourierはい、私はSTA以外のスレッドで実行しています。私は私の質問にエラーメッセージを添付しました。それは私のコンピュータ上にこのエラーを再現できないためです。 – Adam
クリップボードにアクセスするには、STAスレッドを使用する必要があります。 –