После большого количества методов поиска, проб и ошибок мне наконец-то удалось сделать "Специальная вставка" .
Лист, на котором я работаю, был объявлен статическим рабочим листом в классе под названием commonData
class CommonData
{
public static Worksheet DATASHEET;
}
после этого я использовал этот лист в ThisWorkbook.cs
На ThisWorkbook При запуске я заменил PASTE (^ v) на функцию VBA Paste_cell
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
// replacing paste by macro function Paste_cell
CommonData.DATASHEET.Application.OnKey("^v", "Paste_cell");
}
Открыть лист Excel, на котором вы работаете, Нажмите ALT + F11 , т. Е. VBA Macros Editor.
Инструменты >> Макросы >> Создать новый макрос ,
Это создаст Модуль 1 в Project Explorer,
Вставьте следующий код в модуль 1
Sub Paste_cell()
If MsgBox("You are about to Paste only Values and not the format, proceed?", vbQuestion + vbOKCancel, GSAPPNAME) = vbOK Then
On Error Resume Next
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
End Sub
Теперь, если вы скопируете вставить любое значение из любого листа Excel, он будет вставлять только данные ячейки и не будет вставлять его формат. Он будет выдавать следующее сообщение, чтобы предупредить пользователя.
Таким образом, оригинальный формат не изменится.
Ура,: -)