- 締切済み
vb6.0でEXCELオブジェクトの使用
以下のプログラムで四苦八苦しております。 vb6.0だとエラーが出て、vbaだとエラーはなく正常に終了します。 (エクセルは2002です) ※vbは、「microsoft excel 10.0 object library」にチェックを 入れています。 vb6.0だと「w_range.Select」の下の行の 「With Selection.Borders(xlEdgeLeft)」で 「実行時エラー424 オブジェクトが必要です。」となります。 後、「microsoft excel 10.0 object library」にチェックを入れる 事によって、vbaで作成できるプロバティ・メッソド等は使用できる と考えていいのでしょうか? ************** Private Sub Form_Load() Dim xls_csv As Object Dim w_range As Object Set xls_csv = CreateObject("Excel.Sheet") Set xls_kei = CreateObject("Excel.Sheet") xls_csv.Sheets(1).Name = "test" xls_csv.Application.Visible = True With xls_csv.Worksheets(1) .Cells(1, 2).Value = "aaa" .Cells(1, 3).Value = "bbb" .Cells(1, 4).Value = "ccc" End With With xls_csv.Worksheets(1) Set w_range = .Range(.Cells(1, 2), .Cells(10, 4)) End With w_range.Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub **************
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
ExcelのVBAにはExcel特有の組み込みオブジェクトや定数があります。 しかし、VB6にはこれが無いので、VBAでOKでもVB6で使えないものも あります。Selectionもまさにこれに該当します。 また、ExcelのトップであるApplicationオブジェクトを明示的に生成 すべきです。 Dim APL As Excel.Application Set APL = New Excel.Application あと、参照設定をしているなら、シート等も形式を明確にすべきです。 Dim xls_csv As Object → Excel.Sheet Set xls_csv = CreateObject("Excel.Sheet") → New Excel.Sheet xls_csv.Sheets(1).Name = "test" → xls_csv.Name = "Test" また、w_range.Select の後なので、Selectionとはw_rangeのこと です。従って、Selectionの代わりにw_rangeを使用します。 こういう手法はExcelのVBAでも行うべきであると思っています。 尚、w_rangeを使うのであれば、Selectする必要はありません。 尚、終了時にApplicationに対し明示的な終了処置を施すべきです。 APL.Quit '終了メソッド Set APL = Nothing 'インスタンスを消滅させる
- myRange
- ベストアンサー率71% (339/472)
>「With Selection.Borders(xlEdgeLeft)」で >「実行時エラー424 オブジェクトが必要です。」となります SelectionがExcelだということを明示してないからでしょう。 With w_range.Application.Selection..Borders(xlEdgeLeft) --------------------------------------------------------- ここで、質問の件とは別に罫線についてアドバイスをひとつ。 罫線を引くときはその範囲をSelectする必要はありません (よって、Selectionは使わない) そしてまた、質問のようにセル範囲の中も外も同じ線であれば、も少しシンプルなコードでできます。 '-------------------------------------------- w_range.Select ←●これは削除する With w_range.Borders .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With '-------------------------------------- xlEdgeLeft,xlEdgeRight,xlEdgeTop,xlEdgeBottomなどは要らないということです。 以上です。