Я пытаюсь передать словарь из c # в vba, но эта ошибка возникает
System.Runtime.InteropServices.COMException: 'Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))'
Я также пытался преобразовать мой список строк в коллекцию vb, но возникает та же ошибка.вот мои коды
private void btn_macrorunner_Click(object sender, EventArgs e)
{
Dictionary<string, string> xlist_dictvb = new Dictionary<string, string>();
//xlist_names has been properly initialized and already has some items
xlist_names.ForEach(x => xlist_dictvb.Add(x, x));
ExcelFire(xlist_dictvb);
}
private void ExcelFire(Dictionary<string, string> pcoll = null)
{
//~~> Define your Excel Objects
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
//~~> Start Excel and open the workbook.
xlWorkBook = xlApp.Workbooks.Open(@"C:\Users\Hutanginamo\Documents\xlkalat\0928ExcelFile.xlsm");
if(pcoll != null)
{
//calls Sub ShowDict(pdict1 As Dictionary)
xlApp.Run("ShowDict", pcoll); //WHERE ERROR OCCURS
}
//~~> Clean-up: Close the workbook
xlWorkBook.Close(false);
//~~> Quit the Excel Application
xlApp.Quit();
//~~> Clean Up
ReleaseObject(xlApp);
ReleaseObject(xlWorkBook);
}
вот мои коды vba
Sub ShowDict(pdict1 As Dictionary)
Dim x As Variant
For Each x In pdict1.keys
MsgBox (pdict1.Item(x))
Next
End Sub