tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVB6上の表をエクセルシート2に表示させる方法
記事No16479
投稿日: 2019/06/12(Wed) 19:15
投稿者かわの
VB6で作成した2枚の集計表を、エクセルのシート1とシート2に変換したいと考えています。以下のコードを記述しましたが、最後行で「インデックスが有効範囲にありません」メッセージが発生して前に進めません。対処法をご教示いただければ幸いです。
なお、OSはウィンドウズ10、エクセルは2016です。
よろしくお願いいたします。

    Dim xlsApp As Object
    Dim xlsBook As Object
    Dim xlsSheet As Object
    Dim xlsSheet2 As Object
    
    Screen.MousePointer = 11
    Set xlsApp = CreateObject("Excel.Application")
    Set xlsBook = xlsApp.workbooks.Add
    Set xlsSheet = xlsBook.sheets("Sheet1")
    Set xlsSheet2 = xlsBook.sheets("Sheet2")

[ツリー表示へ]
タイトルRe: VB6上の表をエクセルシート2に表示させる方法
記事No16480
投稿日: 2019/06/12(Wed) 23:30
投稿者でふぁ
通りすがりの物です。
検証環境がないのですが、新規ワークシートを作成したときに
Sheet2って存在しましたっけ?
Sheet2を作成しないといけないのではないでしょうか

[ツリー表示へ]
タイトルRe: VB6上の表をエクセルシート2に表示させる方法
記事No16481
投稿日: 2019/06/13(Thu) 11:55
投稿者魔界の仮面弁士
> 最後行で「インデックスが有効範囲にありません」メッセージが発生して前に進めません。

Excel 本体の [ファイル]-[オプション] の全般タブにある
《新しいブックの作成時》の [ブックのシート数] が 1 なのではないでしょうか。

ちなみにこの値は xlsApp.SheetsInNewWorkbook を通じて変更できます。


> Set xlsBook = xlsApp.workbooks.Add
> Set xlsSheet = xlsBook.sheets("Sheet1")
> Set xlsSheet2 = xlsBook.sheets("Sheet2")

シート名の代わりに連番指定でも操作できますね。

Debug.Print xlsBook.Worksheets.Count
Set xlsSheet = xlsBook.Worksheets(1)
Set xlsSheet2 = xlsBook.Worksheets(2)

[ツリー表示へ]
タイトルRe^2: VB6上の表をエクセルシート2に表示させる方法
記事No16483
投稿日: 2019/06/13(Thu) 22:44
投稿者かわの
でふぁ様
魔界の仮面弁士様

ご教示ありがとうございました。
エクセル側でシート2を作成し、またエクセルオプション設定でブックのシート数を2に増やしましたが、当方のコードのままでは、「インデックス有効範囲外」エラーは解消できませんでした。

シート名の代わりに連番指定での操作を試してみます。
ありがとうございました。



> > 最後行で「インデックスが有効範囲にありません」メッセージが発生して前に進めません。
>
> Excel 本体の [ファイル]-[オプション] の全般タブにある
> 《新しいブックの作成時》の [ブックのシート数] が 1 なのではないでしょうか。
>
> ちなみにこの値は xlsApp.SheetsInNewWorkbook を通じて変更できます。
>
>
> > Set xlsBook = xlsApp.workbooks.Add
> > Set xlsSheet = xlsBook.sheets("Sheet1")
> > Set xlsSheet2 = xlsBook.sheets("Sheet2")
>
> シート名の代わりに連番指定でも操作できますね。
>
> Debug.Print xlsBook.Worksheets.Count
> Set xlsSheet = xlsBook.Worksheets(1)
> Set xlsSheet2 = xlsBook.Worksheets(2)

[ツリー表示へ]
タイトルRe^3: VB6上の表をエクセルシート2に表示させる方法
記事No16484
投稿日: 2019/06/16(Sun) 10:48
投稿者かわの
魔界の仮面弁士様

最終的に、エクセル側のシート2事前設定と、下記のコードでシート2を開くことができました。
ありがとうございました。

    Set xlsApp = CreateObject("Excel.Application")
    Set xlsBook = xlsApp.workbooks.Add
    Debug.Print xlsBook.Worksheets.Count
    Set xlsSheet = xlsBook.Worksheets(1)
    Set xlsSheet2 = xlsBook.Worksheets(2)



> でふぁ様
> 魔界の仮面弁士様
>
> ご教示ありがとうございました。
> エクセル側でシート2を作成し、またエクセルオプション設定でブックのシート数を2に増やしましたが、当方のコードのままでは、「インデックス有効範囲外」エラーは解消できませんでした。
>
> シート名の代わりに連番指定での操作を試してみます。
> ありがとうございました。
>
>
>
> > > 最後行で「インデックスが有効範囲にありません」メッセージが発生して前に進めません。
> >
> > Excel 本体の [ファイル]-[オプション] の全般タブにある
> > 《新しいブックの作成時》の [ブックのシート数] が 1 なのではないでしょうか。
> >
> > ちなみにこの値は xlsApp.SheetsInNewWorkbook を通じて変更できます。
> >
> >
> > > Set xlsBook = xlsApp.workbooks.Add
> > > Set xlsSheet = xlsBook.sheets("Sheet1")
> > > Set xlsSheet2 = xlsBook.sheets("Sheet2")
> >
> > シート名の代わりに連番指定でも操作できますね。
> >
> > Debug.Print xlsBook.Worksheets.Count
> > Set xlsSheet = xlsBook.Worksheets(1)
> > Set xlsSheet2 = xlsBook.Worksheets(2)

[ツリー表示へ]