2017-01-11 1 views
2

次のコードは正常に動作します。Option StrictをオンにしたExcelの列エラー

Option Strict Off 
Imports Microsoft.Office.Interop 

Public Class Form1 

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

    Dim xlApp As Excel.Application = Nothing 
    xlApp = CType(CreateObject("Excel.Application"), Excel.Application) 

    xlApp.WindowState = Excel.XlWindowState.xlMinimized 

    Dim wb1 As Excel.Workbook 
    wb1 = xlApp.Workbooks.Open("C:\MyFolder\Book1.xlsx") 

    With CType(wb1.Sheets(1), Excel.Worksheet) 
     .Columns(4).Cut() 
     .Columns(2).Insert() 
    End With 

End Sub 

End Class 

オプションをオンにすると、エラーが発生します。 ありがとうございます。 良い一日を。

+0

答え(あなたは私がWith声明以上の変数を好むことに注意してください)エラーが解決されます。わずかなメモ(メジャーではなく)ですが、 'CreateObject'を使うのではなく、' Dim xlApp As New Excel.Application'を使うことができます – Bugs

+0

違いがありますか? –

+0

正直言って、私は実際にあなたがどのようにコード化しているかとは考えていません。 Excelは_COM_オブジェクトなので、 'CreateObject'は動作しますが、' Excel.Application'を使って直接参照することができますので、より洗練されたものになり、すべてを1行にまとめることができます。 – Bugs

答えて

2

あなたはオフィス相互運用機能を使用しているので、すべてのオブジェクトは、タイプObjectであるので、あなたがそれらをキャストする必要があります。

Dim workSheet = CType(wb1.Sheets(1), Excel.Worksheet) 
Dim column4Range = CType(workSheet.Columns(4), Excel.Range) 
Dim column2Range = CType(workSheet.Columns(2), Excel.Range) 
column4Range.Cut() 
column2Range.Insert() 

+0

解決済み。どうもありがとうございました。 –

関連する問題