[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/05/10(Wed) 16:56
投稿者名:Take
Eメール:
URL :
タイトル:
既存のExcelファイルを選択し、表を読み込む時のエラー
初めまして。
「ファイルを開く」ボタンを作り、コモンダイアログを使って既存のエクセルファイルを開き、
別のボタンでその表を読み込むプログラムを作ろうとしておりますが、
「オブジェクトが必要です」というエラーが出て読み込めず困っております。

ファイルを開く部分の記述は、
    CommonDialog1.CancelError = True
    With CommonDialog1
        .Flags = cdlOFNHideReadOnly
        .Filter = "すべてのファイル (*.*)|*.*|" & _
                  "エクセルファイル (*.xls)|*.xls|"
        .FilterIndex = 2
    End With
    CommonDialog1.ShowOpen
    MsgBox CommonDialog1.FileName
    
    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(CommonDialog1.FileName)
    Set xlSheet = xlBook.Worksheets(1)
    xlApp.Visible = True
としており、エラーは出ずに開けます。
その後、こちらのサンプルを見て、セルの値を取得する部分として
    Dim i As Integer
    Dim j As Integer
    Dim strZahyou(2, 2) As String
    For i = 1 To 2
        For j = 1 To 2
            strZahyou(i, j) = xlSheet.Cells(i + 1, j)
        Next j
    Next i
と記述しているのですが、「オブジェクトが必要です」というエラーが6行目で出ます。

VBのプログラムは簡単なものしか作ったことがありません。
WindowsXP、Excel2003、VB6.0という環境で使用しております。
よろしくお願いします。

投稿時間:2006/05/10(Wed) 17:34
投稿者名:りん
Eメール:
URL :
タイトル:
Re: 既存のExcelファイルを選択し、表を読み込む時のエラー
 試しに書いてある通りに作ってみましたが問題なく動作しましたよ。
 ※Formにボタンとコモンダイアログを貼り付けExcelを参照しています。
Private Sub Command1_Click()
    CommonDialog1.CancelError = True
    With CommonDialog1
        .Flags = cdlOFNHideReadOnly
        .Filter = "すべてのファイル (*.*)|*.*|" & "エクセルファイル (*.xls)|*.xls|"
        .FilterIndex = 2
    End With
    CommonDialog1.ShowOpen
    MsgBox CommonDialog1.FileName
    
    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(CommonDialog1.FileName)
    Set xlSheet = xlBook.Worksheets(1)
    xlApp.Visible = True
    Dim i As Integer
    Dim j As Integer
    Dim strZahyou(2, 2) As String
    For i = 1 To 2
        For j = 1 To 2
            strZahyou(i, j) = xlSheet.Cells(i + 1, j)
            Debug.Print xlSheet.Cells(i + 1, j)
        Next j
    Next i
End Sub

投稿時間:2006/05/10(Wed) 18:16
投稿者名:Take
Eメール:
URL :
タイトル:
Re^2: 既存のExcelファイルを選択し、表を読み込む時のエラー
りんさんこんにちは。
「ファイルを開く」ボタンと「表を読み込む」ボタンを分けていたのが失敗のようで、
りんさんのプログラムのように1つのボタンで両方を行うとエラーは出ませんでした。
このやり方で進めさせていただきます。
本当にありがとうございました。

投稿時間:2006/05/10(Wed) 23:09
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re^3: 既存のExcelファイルを選択し、表を読み込む時のエラー
> りんさんこんにちは。
> 「ファイルを開く」ボタンと「表を読み込む」ボタンを分けていたのが失敗のようで、
> りんさんのプログラムのように1つのボタンで両方を行うとエラーは出ませんでした。
> このやり方で進めさせていただきます。
> 本当にありがとうございました。

変数の定義は
>Dim xlApp As Excel.Application
>Dim xlBook As Excel.Workbook
>Dim xlSheet As Excel.Worksheet
Private Sub ファイルを開く_Click()
Private Sub 表を読み込む_Click()
それぞれにしているということでしょうか?
ボタンを分けたかったら、この変数の定義をFormの一番先頭で定義するか
標準モジュールで Public変数として定義すればボタンを分けてもいけると
思います。
変数をどの部分で定義するのかは
ヘルプの『変数の適用範囲』を読んでみてください。

投稿時間:2006/05/12(Fri) 09:15
投稿者名:Take
Eメール:
URL :
タイトル:
Re^4: 既存のExcelファイルを選択し、表を読み込む時のエラー
> ボタンを分けたかったら、この変数の定義をFormの一番先頭で定義するか
> 標準モジュールで Public変数として定義すればボタンを分けてもいけると
> 思います。

先頭で定義したらできました。
ローカル変数になっていたためにボタンを分けたらいけなかったんですね。
ぶぶさんどうもありがとうございました。