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

投稿日: 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                            'シートオブジェクト解放


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

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

- Web Forum -