3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

エクセルを閉じるときに「図が大きすぎます。入りきらない部分は切り捨てられます。」という警告が出る

Posted at

課題

以下のコードであるシートのRangeを別のシートにコピペしたんですが、

Globals.[コピー元シート].[名前付範囲].EntireColumn.Copy(
    ((Excel.Range)Cells[1, 1])
    .Resize[1, [必要な列数]]);

エクセルを閉じるときに

「図が大きすぎます。入りきらない部分は切り捨てられます。」

という警告が出てうるさいです。

解決

クリップボードに大きなデータが残っているのが直接的な原因です。
コピー先を指定して Copy した場合はクリップボードを使わないのじゃないか、
という点は未確認ですが、とりあえずクリップボードをクリアしようと

Clipboard.Clear();

したのですが、クリアされず。

dobon.netさんの記事によると、
クリップボードを操作するためにはスレッドがSTA(Single Thread Apartment)である
必要があるそうです。
先の記事を参考に、STAスレッド内でClipboard.Clear()を呼び出したところ、
無事クリップボードがクリアされました。

System.Threading.Thread t = new System.Threading.Thread(()=> {
    Clipboard.Clear();
});
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
t.Join();

環境

アセンブリ Version
Excel 2010
C# 4.0.0.0
Microsoft.Office.Tools 10.0.0.0

参考

クリップボードのデータの取得、設定がうまくいかないときは

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?