2016-08-29 1 views
-9

Hey alles, was ich habe den folgenden Code, der wirft Spät Bindings. enter image description herevb.net späte Bindungen Problem auch nach dem Setzen der Variablen

Ich dachte setzen:

Dim excelWS As Worksheet 

excelWS = New Worksheet 

Bevor die Variable mit dem späten Bindung Problem behoben?

UPDATE 1

Wäre es so etwas wie dieses?

Dim excelRange As Range 
Dim excelApp As Application 
Dim excelWB As Workbook 
Dim excelWS As Worksheets 

excelWB = New Workbook 

If madeSheet = False Then 
    excelApp = New Application 
    excelWB = excelApp.Workbooks.Add 
    excelApp.Visible = True 
End If 

excelWS = New Worksheet 

UPDATE 2

Auf dieser Linie jetzt:

excelWS = excelWB.Worksheets.Add(After:=excelWB.Worksheets(sheetLoops)) 

ich den Fehler bin immer:

Additional information: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.Worksheets'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208B1-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

+0

seine vb.net. Warum verweisen Sie nicht auf Microsoft.Office.Interop.Excel von Imports und verwenden 'CreateObject'? – jonathana

+0

@jonathana mind geben ein Codebeispiel? – StealthRT

+0

kein Problem, ist es möglich, Ihren Code als Text und nicht als Bild hinzuzufügen? – jonathana

Antwort

0

beachten Sie, dass Sie Microsoft.Office.Interop.Excel Montage referance haben: Projekt >> Referenz hinzufügen >> überprüfen Microsoft Excel x.xx Objekt Libary

Imports Microsoft.Office.Interop 
Public Class Form1 
    Private exapp As Excel.Application 
    Private xlwb As Excel.Workbook 
    Private xlws As Excel.Worksheet 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     exapp = New Excel.Application 

     xlwb = exapp.Workbooks.Add() 
     xlws = xlwb.Worksheets.Add() 
     xlws.Name = "MY WS" 


     xlws.Move(After:=xlwb.Sheets(xlwb.Sheets.Count)) 
     ' note: .value is a Range property 
     xlws.Cells(1, 2) = "standard" 


     xlwb.Application.DisplayAlerts = False 
     exapp.Visible = True 
     xlwb.Worksheets("sheet1").Delete() 
     xlwb.SaveAs("C:\Users\john\Desktop\test.xlsx") 
     xlwb.Close() 

    End Sub 
End Class 

wie für Ihr Update:

sogar, dass Excel.Worksheet und Excel.Workbook sind keine statischen Objekte, in Ihrem Fall, dass Sie nicht brauchen, die eine sofortige machen von (mit new), weil Sie sie mit neuer Arbeitsmappe und neuem Arbeitsblatt initialisieren.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim excelRange As Excel.Range 
     Dim excelApp As Excel.Application 
     Dim excelWB As Excel.Workbook 
     Dim excelWS As Excel.Worksheets 

     ' excelWB = New Workbook - you dont need an instant 

     ' If madeSheet = False Then 
     excelApp = New Excel.Application 

     excelWB = excelApp.Workbooks.Add 
      excelApp.Visible = True 
     ' End If 

     ' excelWS = New Worksheet - you dont need an instant 
    End Sub 
+0

Wollten Sie ** Excel. ** mit all diesen? Können Sie nicht nur ** Anwendung oder Arbeitsbücher oder Arbeitsblätter ** verwenden? – StealthRT

+0

ja kann man aber ändern Importe Microsoft.Office.Interop zu Imports Microsoft.Office.Interop.Excel – jonathana

+0

Schau dir mein OP für das 2. Update an, um zu sehen was ich jetzt bekomme wenn du alles änderst wie du es vorschreibst. – StealthRT

Verwandte Themen