投稿時間:2003/05/12(Mon) 22:11 投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:解決: Excelのシートからデータが読み込めません。
花ちゃんさん、みゃおさん> 書き込みが遅くなりました・・・ お返事ありがとうございました。こちらでデバッグした結果、 結局「分析ツール」で再計算しないといけなかったようです。
みゃおさんが教えてくださった方法を試したのですがエラーが出たりして、エラーとるのに少々時間がかかりそうでした。 (ライブラリのパスのところでエラーが出ていました。) 花ちゃんさんが教えてくださった方法を試したのですがこちらはエラーは出ず、アプリケーションにすぐ組み込めそうでした。 また、「セルの内容が読めない」というくともなく普通に読み込めました。 なので、今回は申し訳ないのですが花ちゃんさんが教えてくださった方法を採用させていただこうと思います。 みゃおさんが教えてくださった方法も検討したいと思います。
教えてくださってどうもありがとうございました!!!!
実際のモジュールのコードを以下に掲載させていただきます。他の方の参考になれば、と思います。
Dim n As Long 'For文カウンター Dim temp As String '一時使用文字列変数 Dim xlsver As String '使用Excel Version Dim cell1 As String, cell2 As String '読み込みセル文字 Dim excelApp As Object 'Excelアプリケーション用オブジェクト Dim excelBook As Object 'Excelワークブック用オブジェクト Dim excelSheet As Object 'Excelシート用オブジェクト
On Error Resume Next
'★Microsoft Excelオブジェクトの取得(InstallされているExcel Versionを取得、設定) 'Microsoft Excel *.* Object Library の参照設定をしなくても可 'Excelのバージョンが9(Excel2000)なら"Excel.Application.9" 'Excelのバージョンが10(Excel2002)なら"Excel.Application.10" 'インターネット上から情報を頂きました。 Set excelApp = CreateObject("Excel.Application") 'Excelオブジェクトの取得 xlsver = excelApp.Version 'Excel versionの取得 xlsver = Left(xlsver, InStr(1, xlsver, ".") - 1) xlsver = "Excel.Application." & xlsver '使用Excel Version名設定 Set excelApp = Nothing 'Exceオブジェクトの解放 Set excelApp = CreateObject(xlsver) 'Excelオブジェクト再取得 '★Excel再設定、ワークシートオープン '(変数tempには予めファイル名がフルパスで設定されているものとします) With excelApp '「分析ツール」一旦チェックを解除、設定しなおす .AddIns("分析ツール").Installed = False '「分析ツール」チェック解除 .AddIns("分析ツール").Installed = True '「分析ツール」チェック設定 .DisplayAlerts = False '終了時のダイアログボックスを非表示設定 Set excelBook = .workbooks.Open(temp) '指定Excelファイルオブジェクトの取得 End With
'★指定シート名の検索、シートオブジェクトの設定 '指定シート名「テスト」の検索 For n = 1 To excelBook.Sheets.count If excelBook.Sheets.Item(n).name = "テスト" Then'指定シート名の判定 Set excelSheet = excelBook.Worksheets(n) 'シートオブジェクトの取得 Exit For End If Next
'★データの取得 temp = vbNullString: cell1 = vbNullString: cell2 = vbNullString n = 1 With excelSheet .Calculate '「分析ツール」を使ってExcel内で再計算 '★------------------------------------------★ ' 此処から先は各自の処理に変更してください。 '★------------------------------------------★ For n = 1 To I2C_DAT_NUM DoEvents cell1 = .Cells(n, 1) '各セル内容を取得 cell2 = .Cells(n, 2) temp = UCase(cell1 & "," & cell2) 'A列とB列を連結して格納(大文字) Next End With
'★エクセルオブジェクトの解放(これは必要) excelApp.Quit 'Excelアプリケーションの終了 Set excelApp = Nothing 'アプリケーションオブジェクト解放 Set excelBook = Nothing 'ワークブックオブジェクト解放 Set excelSheet = Nothing 'シートオブジェクト解放
|