VB2008とExcel2003連携
VB2008とExcel2003連携
VBでExcelの操作を、VBのボタン操作でOPEN処理、CEL操作、CLOSE処理をそれぞれ単独に処理したいのですが方法がわかりません。以下の記述では、OPEN処理後、CEL操作のため再度呼び出すと、前回呼び出したOPEN処理の内容が残っていません。VBAはある程度理解していますが、VBのCLASS等の概念が良く理解できていません。できれば、OPEN処理、CELの処理、CLOSE処理を別々のSUBにしたいので、その方法を優先して教えていただければ幸いです。
宜しくお願いします。
Public Class Form1
Public Sub xlsAccess(ByVal xlPrc As String)
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim strFilename As String = "C:\TEST\SAMPLE.xls" 'ファイル名(フルパス)をセット
Dim strSheetName As String = "Sheet1" 'シート名/シート名をセット
‘【EXCELファイルを開く】
If xlPrc = "OPEN" Then
xlApp = CreateObject("Excel.Application") 'Application生成
xlApp.Workbooks.Open(Filename:=strFilename, UpdateLinks:=0) 'EXCELを開く
xlApp.Visible = True 'EXCELの表示
xlBook = xlApp.Workbooks(Dir(strFilename)) 'Workbook
xlSheet = xlBook.Worksheets(strSheetName) 'Worksheet
xlSheet.Cells(1, 1).Value = "HELLO"
End If
'【EXCEL セル操作】
If xlPrc = "R/W" Then
For k = 2 To 10 Step 1
xlSheet.Cells(k, 2).Value = xlSheet.Cells(1, 1).Value
Next k
End If
‘【EXCELファイル終了処理】
If xlPrc = "CLOSE" Then
xlBook.Close(SaveChanges:=True) 'ブックを保存して終了
xlApp.Quit() 'EXCELを閉じる
xlSheet = Nothing 'オブジェクトの解放
xlBook = Nothing 'オブジェクトの解放
xlApp = Nothing 'オブジェクトの解放
End If
End Sub
‘【ボタン操作OPEN】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
xlsAccess("OPEN")
MsgBox("Open Excuted")
End Sub
‘【ボタン操作、CEL操作】
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
xlsAccess("R/W")
MsgBox("R/W Excuted")
End Sub
‘【ボタン操作、CLOSE】
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
xlsAccess("CLOSE")
MsgBox("CLOSE Excuted")
End Sub
End Class
お礼
o_chi_chiさん、アドバイスありがとうございます。 xlSheet.HPageBreaks.Add xlSheet.Rows(intI)を試してみましたが 結果は同様でした。 その他のアドバイスは事前にコーディングされていました。 改頁のコード1行のみをコメントアウトして、改頁をしないと処理時間が飛躍的に早くなります。 改頁しているからと諦めるしかないのでしょうか…。
補足
解決しました。 解決内容は、以前まではEXCELシートへデータ編集しながら改頁してましたが EXCELシートへデータ編集後に改頁するようにしたところ、処理速度が アップしました。