2016-05-10 6 views
0

Ich bin Übergang von Excel VBA zu VB.NET, wenn dies eine dumme Frage ist, bitte gehen Sie einfach auf mich. Ich erhalte eine NullReferenceException was unhandled by user code auf dieser Zeile der folgenden Unter:NullReferenceException wurde von Benutzercode nicht behandelt - Excel.Worksheet-Objekt

Dim objSheet As Excel.Worksheet = objBook.Sheets("SQL Creator") 

VS sagt, dass die Object reference is not set to an instance of the object. Ich bin nicht sicher, warum es darum bittet, weil ich bereits eine neue Instanz von Excel in der objApp-Variable deklariert habe. Warum müsste ich eine neue Instanz jedes Objekts unter dieser Klasse deklarieren? Es ist sehr wahrscheinlich, dass ich nicht richtig darüber nachdenke, aber ich wollte nur meine Gedanken erwähnen. Insgesamt versuche ich nur, das Sub unten zu testen, um zu sehen, ob es eine Verbindung zu einer PostgreSQL-Datenbank öffnet und schließt.

Import Microsoft.Office.Interop

Public Sub QueryData(ByVal ribbonUI As Office.IRibbonControl) 

      Dim objApp As New Excel.Application 
      Dim objBook As Excel.Workbook = objApp.ActiveWorkbook 
      Dim objSheet As Excel.Worksheet = objBook.Sheets("SQL Creator") 
      Dim pgconn As String 

      pgconn = "Driver={PostgreSQL};" & 
      "Server = localhost;" & 
      "Port = 5432;" & 
      "Database = CFABudget;" & 
      "Uid = postgres;" & 
      "Pwd = budgeto;" 

      Dim SQL As String = objSheet.Range("BudgetSQL").Text 
      Dim conn As New Data.Odbc.OdbcConnection(pgconn) 
      Dim cmd As Data.Odbc.OdbcCommand = New Data.Odbc.OdbcCommand(SQL) 

      conn.Open() 

      MsgBox("Success!", vbOKOnly) 

      conn.Close() 


     End Sub 

Vielen Dank für Ihre Hilfe!

+0

Mögliche Duplikate von [Was ist eine NullReferenceException, und wie behebe ich es?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) –

Antwort

0

ersetzen

Dim objApp As New Excel.Application

mit:

Dim objApp As Excel.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")

Sie versuchten, aus den neuen leeren Excel-Instanz aktiven Arbeitsmappe zu erhalten.

+0

Ich habe den gleichen Fehler in der gleichen Zeile. – christopheralan88

Verwandte Themen