こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルとVB6

環境は
OS XP Visual Basic 6 Excel 2003 です。

エクセルを扱うについては、今回初めてです。
ソースです-----------------------------------
Dim ex As Object ' Excel.Application
Dim wb As Object ' Excel.Workbook
Dim ws As Object ' Excel.Worksheet

Set ex = CreateObject("Excel.Application")

ex.Visible = True 'エクセルを表示する

Set wb = ex.Workbooks.Add '空白の新しいブックを追加

Set ws = wb.Worksheets.Add '新しいシートを追加
ws.Name = "XXX " 'シートの名前を設定

'シートのセルに書き込む
'構文:Cells(行, 列).Value = 値

ws.Cells(1, 1).Value = "ID"
ws.Cells(1, 2).Value = "PS"
III% = 2
For x% = 0 To 135
III% = III% + 1
ws.Cells(1, III%).Value = 問D$(x%, 0)
Next x%
-----------------------------------
エクセルが起動し、挿入されます。

質問1
シート XXXはsheet3としてに挿入され、それ以外にsheet1 sheet2もできています。
これはなぜですか。
質問2
sheet1 sheet2を生成しないようにできますか。
できないようにするには、どうすればいいですか。

全くエクセルは詳しくありません。
お詳しい方、よろしくお願いします。

投稿日時 - 2008-04-11 09:01:42

QNo.3939526

すぐに回答ほしいです

質問者が選んだベストアンサー

新規ブックのシート枚数はデフォルトで3枚と決まっていますが、
そのシートの枚数は、任意で1枚以上を指定できますので、
追加されたがSheet3ならシート枚数が2枚に設定されていたのでしょう。
新規ブックは少なくとも1枚はないといけないので、新規ブックをシートなしで開くことはできません。
なので質問の件は、1枚残して他のシートを削除する、という処理になります。

また、新規ブックのシートにデータを入力するわけですから、その為に新しいシートを追加する必要はありません。

で、コードは以下のようになります。

●●●で囲まれた部分が追加
▲▲▲のシート追加は不要

'-------------------------------------
Private Sub Command1_Click()
Dim ex As Object ' Excel.Application
Dim wb As Object ' Excel.Workbook
Dim ws As Object ' Excel.Worksheet
Dim iii%, x%

Set ex = CreateObject("Excel.Application")
ex.Visible = True 'エクセルを表示する
Set wb = ex.Workbooks.Add '空白の新しいブックを追加

'●●●
 Dim S As Integer
 For S = 2 To wb.Sheets.Count
   ex.DisplayAlerts = False
   wb.Sheets(2).Delete
   ex.DisplayAlerts = True
 Next S
 Set ws = wb.Sheets(1)
'●●●

'▲▲▲Set ws = wb.Worksheets.Add 'これは不要

ws.Name = "XXX" 'シートの名前を設定

'シートのセルに書き込む
'構文:Cells(行, 列).Value = 値
ws.Cells(1, 1).Value = "ID"
ws.Cells(1, 2).Value = "PS"
iii% = 2
For x% = 0 To 135
iii% = iii% + 1
ws.Cells(1, iii%).Value = x%
Next x%
End Sub
'------------------------------------

因みに、wb.Sheets(2).Delete は
左から2番目のシートを削除するコートですが、
シートか何枚あってもこの(2)という数値を変えてはいけません。

それから、ex.DisplayAlerts = False は
シートを削除するときはエクセル側から
「シートを削除しますか?」とメッセージを出すので
それを表示させないためのものです。

以上。

投稿日時 - 2008-04-11 14:09:54

お礼

早速のご回答ありがとうございます。
分かりやすく書いていただき、恐縮です。
excelは今回のプログラムぐらいで、あまりいじることもないので、
不勉強でもあり、とても助かりました。

投稿日時 - 2008-04-11 15:53:36

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問