vb.net & office: no se puede convertir el object COM de tipo 'Microsoft.Office.Interop.Excel.ApplicationClass'

Estoy desarrollando una aplicación vb.net y debería abrir y manejar un file de Excel. El problema es que en mi pc (y lo mismo podría pasar en otra pc donde podría instalarse) tengo Visio versión 2013 y Office (excel, word, etc.) versión 2010. Integrar excel en vb es tan simple porque más o less automático, hecho en pocos pasos … pero al mismo time tan estúpido: llamando funciones interop.Excel, se dirige a la versión más nueva de la oficina intalled (2013), ¡pero no tengo Excel para esa versión! Busqué mucho en la web sobre este tema, y ​​cada vez que encontré la solución de eliminar una key de logging, funciona bien, pero cada vez que uso Visio, parece que la key de logging se vuelve a crear.

Mis preguntas son:

  • ¿Puedo seleccionar qué versión de Excel me gustaría vincular a mi aplicación? Puedo entender que al arreglar la versión debería manejar manualmente cualquier versión de oficina … pero tal vez prefiero hacer esto …

  • ¿Puedo copyr un dll en la carpeta de la aplicación para asegurarme de que la aplicación usa esa versión? Intenté con Microsoft.Office.Interop.Excel.dll y Office.dll, pero aún así el problema

No quiero seguir el path de eliminar la key de logging mediante progtwigción, no es seguro en mi opinión. No puedo creer que la integración entre Office y .net sea tan estúpida que no pueda usar la versión correcta de excel instalado !! ;-PAG

Código:

Dim fileTest As String = FilePath Dim APP As New Application MsgBox(APP.Version) Dim oSheet As Excel.Worksheet = Nothing Dim workbook As Excel.Workbook = Nothing Dim IndexFound As Integer = 0 Dim StartRow As Integer = 10 Dim DateSelected As String = "" Dim resultOK As Boolean = False Try workbook = APP.Workbooks.Open(fileTest) oSheet = workbook.Worksheets("Activities") APP.DisplayAlerts = False oSheet.Range("A2").Value = "test" oSheet.Range("B3").Value = "Ciao" Catch ex As Exception MsgBox("Error: " + ex.Message) If Not resultOK Then If Not workbook Is Nothing Then workbook.Close() While System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook) > 0 End While workbook = Nothing End If oSheet = Nothing workbook = Nothing APP.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(APP) APP = Nothing GC.Collect() GC.WaitForPendingFinalizers() End If End Try End Sub 

Referencia excel interop Centro de referencia de la oficina

Gracias Andrea

enter image description here