日曜日, 1月 18, 2009
[VB2005]ExcelのValue値取得
▼質問
ExcelのValue値を取得したいんだ。
どうしたらできるか教えてくれ!
▼回答
サンプルを示すから参考にしてくれ!!
これを実行すると面白い事が起きる。
配列の始まりが1から始まるのだ!
VB6では、Dim obj(1 To 3) As Object ができたけどね!
VB.NETからは、0始まりしか作れない。痛い(>_<)
なぜ、Excelだけ1からの配列が作れるんだ!?
不思議だ!!
ExcelのValue値を取得したいんだ。
どうしたらできるか教えてくれ!
▼回答
サンプルを示すから参考にしてくれ!!
Public Shared Sub GetExcelValue(ByVal strFilePath As String, _
ByRef val(,) As Object, _
Optional ByVal maxRow As Integer = 65536)
Dim xlApp As Excel.Application = Nothing
Try
xlApp = CreateObject("Excel.Application")
If IsNothing(xlApp) Then Exit Sub
xlApp.Workbooks.Open(Filename:=strFilePath)
xlApp.WindowState = Excel.XlWindowState.xlMinimized
xlApp.Visible = False
xlApp.DisplayAlerts = False
xlApp.ScreenUpdating = False
Dim wWorksheet As Excel.Worksheet = _
CType(xlApp.ActiveWorkbook.ActiveSheet, Excel.Worksheet)
With wWorksheet
.Unprotect()
Application.DoEvents()
'Value値取得(全セルを取得するとメモリのエラーになるので注意が必要!)
val = .Range("A1:IV" & maxRow).Value
End With
GC.Collect()
Catch ex As Exception
Finally
If (Not IsNothing(xlApp)) Then xlApp.Quit()
xlApp = Nothing
GC.Collect()
End Try
End Sub
これを実行すると面白い事が起きる。
配列の始まりが1から始まるのだ!
VB6では、Dim obj(1 To 3) As Object ができたけどね!
VB.NETからは、0始まりしか作れない。痛い(>_<)
なぜ、Excelだけ1からの配列が作れるんだ!?
不思議だ!!