- 締切済み
VB6からExcellのSheetNo.の設定方法
VB6で、Excellを使用するアプリケーションを作成中です。 下記の手順でExcellファイルをオープンしていますが、SheetNo.を指定する方法が判りません。VB6は全くの初心者でExcellファイルを開くやり方もネットからもってきたもので、意味も判らないまま使用しています。 よろしく御願いします。 Dim fnm As String Dim exl As Object gStrExcelDir = CurDir 'gStrExcelDir:String変数 fnm = gStrExcelDir + "\ファイル名" Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm ここまででファイルのオープンは出来ていて、SheetNo.1のセルのデータ読み込みは出来ます。 この後、別なSheetNoを設定する方法が判りません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >Excellファイルを開くやり方もネットからもってきたもの ここですか? http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t16.htm Excel側からみると、とても雑だと思います。結果論だから、どうでも良いかもしれませんが。 たとえば、これって、 exl.Cells(c, l) 既存のブックに、オートメーション・オブジェクトの配下に対して、exl.Cells(j, i) こういうコードは書きません。それと、gStrExcelDir これって、Global 変数の意味だと思いますが、CCur を代入するなら、その必要性があるか、見えてきません。 >どちらの場合も”実行時エラー:'424'オブジェクトが必要です”とエラーメッセージがでます。 これが、どこで発生しているかはわかりませんが、ローカル・ウィンドウから、ステップモードで、オブジェクトが取れているのか、チェックすれば分かると思います。 #1の方のアドバイスで直らないというと、全体的に良く分かりませんので、こちらからは何もいえないように思います。このぐらいの内容ですと、何をどうするか、と書いてもらって、回答者にコードを書いてもよいと思います。ただ、VB6は、旧アプリケーションですから、VBAを代用して書くことになるだろうと思います。私は、今はインストールしていません。 それと、Excelをお持ちでしたら、最初、参照設定させて、インテリセンスを使って書いてしまったほうが早いのでは? その後で、参照設定を外して、クラス名を、As Object にしてしまってもよいと思います。
- OMEGAT
- ベストアンサー率70% (455/642)
Dim fnm As String Dim exl As Object Dim xlsBook As Object Dim xlsSheet As Object gStrExcelDir = CurDir 'gStrExcelDir:String変数 fnm = gStrExcelDir + "\ファイル名" Set exl = CreateObject("Excel.Application") Set xlsBook = exl.Application.Workbooks.Open (fnm) 'シートへのアクセスは Set xlsSheet = xlsBook.Sheets(2) 'もしくは Set xlsSheet = xlsBook.Sheets("シート名") 'セルの値へのアクセスは MsgBox xlsSheet.Cells(1,1).Value 'などでアクセスできると思います。
補足
ありがとうございました。早速試してみました。 Set xlsSheet = xlsBook.Sheets(2) Set xlsSheet = xlsBook.Sheets("シート名") どちらの場合も”実行時エラー:'424'オブジェクトが必要です”とエラーメッセージがでます。 ちなみにセルの値は strSheetNo = exl.Cells(c, l) 'c、lはInteger で読み取ることが出来ています。 また、Sheet名はSheet1,2ではなく内容をあらわす文字にしています。 別の所に問題があるのかもしれません。
補足
回答ありがとうございます。 正直、回答の意味が理解できないという初心者です。 たまたま別のルートからの回答があり、それでうまくいきました。 修正内容は下記の通りです。 strSheetNo = exl.Cells(c, l) 従来 ↓ strSheetNo = exl.Worksheets("Over_C").Cells(c, l) 修正後