システムwiki

Excelでコンボボックスを削除し、VSTO Addinを使用してワークブックを保存しようとしている場合は、Excel Crashing

AjithPa 受付中 最終更新日:2021-12-27 00:27

こんにちは、

私は、次のアクションを実行しますVSTOアドインを作成しました.

スタートアップのアドインでステップ1.私はExcelのセル内のコンボボックスを作成しています.

ステップ2は、ステップ1で追加したコンボボックスを削除するリボンコントロールで、ボタンのクリックで削除ボタンを追加しました.

ステップは、クリックのワークブックの保存や保存のためのボタンを追加します3.ます.

Excelの保存のクリック時にクラッシュし、Excelを再起動して取得されます.

ここで私は、コードスニペットを添付しています.

publicpartialclassThisAddIn

{

staticExcel.WorksheetSheet;

privatevoidThisAddIn_Startup(objectsender、System.EventArgse)

{

シート= Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.

varoleObject= CreatecomboBox().

}

privatevoidThisAddIn_Shutdown(objectsender、System.EventArgse)

{

}

///<要約>

///Deletethepagefilteradded

///

publicstaticvoidDeletePageFilters()

{

用(INTI= Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Shapes.Count. I>0; I-)

{

Excel.ShapeoleObj= Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Shapes.Item(I).

もし(oleObj.Name.Contains( "コンボ"))

{

してみてください.

{

oleObj.Delete();

System.Runtime.InteropServices.Marshal.ReleasecomObject(OLEObjと).

}

キャッチ(Exceptionex){}

}

}

}

///<要約>

///Createthepagefilter

///

publicstaticExcel.ShapeCreatecomboBox()

{

Excel.Shapeocombo= NULL;

してみてください.

{

Excel.Rangecell= Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Range [ "A1"、 "A1"].

ocombo= Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Shapes.AddOLEObject( "Forms.comboBox.1"、Type.Missing、Type.Missing、

Type.Missing、Type.Missing、Type.Missing、Type.Missing、

cell.Left、cell.Top、40、cell.Height).

}

キャッチ(System.Exceptionex)

{

}

returnocombo;

}

イベントログ

FaultingApplicationName:Excel.exe、version:16.0.13127.21624、タイムスタンプ:0x6093B3CA

FaultingModuleName:vbe7.dll、version:0.0.0.0、タイムスタンプ:0x5FF762B0

ExceptionCode:0xc0000005

FaultOffSet:0x0000000000250081

Faultingprocessid:0x69c4

Faultingapplicationstarttime:0x01d76368d4ad66cc

FaultingApplicationPath:C:\ProgramFiles¥MicrosoftOffice¥Root¥Office16¥excel.exe

FaultingModulePath:C:\ProgramFiles\CommonFiles\MicrosoftShared\VBA\VBA7.1\vbe7.dll

ReportId:99cb77c6-5e34-4472-a469-3295d1136167

FaultingPackageFullName:

FaultingPackage-RelativeApplicationID:

返信リスト(回答:3)

2 #
Gustavo

申し訳ありませんが、私はイデリアスの外にいます.他のユーザーが役立つかどうかを確認しましょう.

3 #
Gustavo

やあ、
グラフィックスハードウェアアクセラレーションを無効にしてみてください.
1-Excelを開く
2-ファイルに移動します
3-オプション
4-Advanced.
6-グラフィックスハードウェアアクセラレーションボックスを無効にしてください
7-ok.
この情報が役立ちます.

応答3# ->にスキップ
1 #
AjithPa

こんにちはGustavo、

お返事をありがとうございます.私はあなたが提案した上記の解決策を試しました.しかし、まだExcelは保存しようとしているときにクラッシュしています.

以下は私がワークブックを保存するために使用しているコードです.

privatevoidsave_click(ObjectSender、RibbonControlEventargse)

{

を試してみてください

{

Globals.ThisAddin.Application.ActiveWorkbook.Save();

}

キャッチ(例外)

{

投げる;

}

}