【发布时间】:2011-03-16 17:55:56
【问题描述】:
我开发了excel模板,遇到以下问题...
在某些情况下,我必须验证单元格。因此必须保留单元格的格式。如果用户将不同工作表中的值复制到模板,则单元格的格式会被覆盖。有没有办法在 excel 中捕获粘贴事件并使用 C# 使用 pastespecial
提前谢谢....
【问题讨论】:
我开发了excel模板,遇到以下问题...
在某些情况下,我必须验证单元格。因此必须保留单元格的格式。如果用户将不同工作表中的值复制到模板,则单元格的格式会被覆盖。有没有办法在 excel 中捕获粘贴事件并使用 C# 使用 pastespecial
提前谢谢....
【问题讨论】:
我用谷歌搜索了 2 到 3 天并找到了解决方法,在使用代码之前,我们必须在宏设置中检查对 vba 对象模型的信任访问....的 excel 来运行项目..
//Add macro module
Microsoft.Vbe.Interop.VBComponent component = this.VBProject.VBComponents
.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule);
component.CodeModule.AddFromString("Sub Paste_cell()" + Environment.NewLine + "If MsgBox(\"Normal paste operation has been disabled. You are about to Paste Values (cannot be undone), proceed?\", vbQuestion + vbOKCancel, GSAPPNAME) = vbOK Then" + Environment.NewLine + "On Error Resume Next" + Environment.NewLine + "ActiveSheet.PasteSpecial Format:=\"Text\", Link:=False, DisplayAsIcon:=False" + Environment.NewLine + "Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False" + Environment.NewLine + "End If" + Environment.NewLine + "End Sub");
//trap paste event
CommonData.DATASHEET.Application.OnKey("^v", "Paste_cell");
【讨论】: