投稿時間: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
|