VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -