2016-08-29 5 views
-9

こんにちはすべて私は以下のコードを投げています。レイトバインディングenter image description here変数を設定してもvb.netレイトバインディングの問題が発生する

私が入れて考えた:

Dim excelWS As Worksheet 

excelWS = New Worksheet 

変数を使用する前には、遅延バインディング問題を修正しましたか?

UPDATE 1

が、それはこのようなものでしょうか?あなたがMicrosoft.Office.Interop.Excelアセンブリをreferanceする必要が

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

そのvb.net。なぜあなたはImports'Microsoft.Office.Interop.Excelを参照せずに 'CreateObject'を使用していますか? – jonathana

+0

@jonathanaの心はコードの例ですか? – StealthRT

+0

問題はありませんが、イメージとしてではなくテキストとしてコードを追加することは可能ですか? – jonathana

答えて

0

注:私はエラーを取得しています

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

:今、このラインでUPDATE 2

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 

: project >> add reference >>チェックMicrosoft ExcelのX.XXオブジェクト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 

あなたの更新のためとして:Excel.WorksheetとExcel.Workbookは静的オブジェクトは、ありませんあなたのケースでは、あなたがインスタントを作る必要がいけないでもあること

newを使用して)新しいワークブックと新しいワークシートで初期化するためです。

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

** Excelを**と一緒に置くことを意味しましたか? **アプリケーションやワークブックやワークシート**を使用できませんか? – StealthRT

+0

はい、インポートを変更することができます。Microsoft.Office.Interopをインポートします。Microsoft.Office.Interop.Excel – jonathana

+0

2番目のアップデートのOPを確認して、提案したとおりにすべてを変更するときに何が得られるかを確認します。 – StealthRT

関連する問題