投稿日 | : 2004/09/28(Tue) 17:01 |
投稿者 | : kazuやん |
Eメール | : |
URL | : |
タイトル | : 追記 |
> VBからExcelファイルを読み込むプログラムを作成しています。
>
> xlsをDAOで操作しているのですが、上手くいきません。
> xlsファイルは正常に読み込まれています。
> RecordSet.MoveNextを使い1行ずつずらして作業していますが
> MsgboxでRecordSet.Fields(3)などで表示したとき実際にはxlsファイルのそのセルには
> 値が入力されているのにMsgboxでは空で表示されてしまいます。
>
> xlsをExcel.Applicationを使って操作し、同じセルを参照すると
> 問題なく表示されます。
>
> ちょっと気になったのはそのxlsファイルはMacのExcelで作られたファイルなのですが
> 関係あるのでしょうか?
問題の行を切り取って1行目に貼り付けるとDAOで操作してもセルの値を参照する事が出来てしまいます。
更にxlsファイルを加工してcsvファイルに変換してFileSystemObjectで操作しても
問題なくセルの値を参照できます。
ですので一体何が悪いのか検討が付きません。
例)DAOを使用
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim xlFileName As String
Dim xlSheetName As String
xlFileName = App.Path & "\Sample.xls"
xlSheetName = "Sheet1" & "$"
Set DB = OpenDatabase(xlFileName, True, True, "Excel 8.0;HDR=NO;")
Set RS = DB.OpenRecordset(xlSheetName)
With RS
.MoveFirst
.Move CLng(621) '622行目に移動
End With
'ここが空で表示される
msgbox RS.Fields(5)
DB.Close
Set RS = Nothing
Set DB = Nothing
例)Excel.Applicationを使用
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\Sample.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")
'これはちゃんと表示される
msgbox xlSheet.Cells(622,5)
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing