
初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m
VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。
・既存ファイルがなけれが新規作成
・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く
私が考えた流れは、
1.既存ファイルを開く
2.新しいシートを追加する
3.シートの名前をつける
4.既に同名シートがあれば上書きの有無を聞く
5.VBで作ったEXCELシートを既存ファイルのシートにコピー
6.既存ファイルを更新
7.EXCELを閉じる
です。
まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。
ただ、 シートを追加しようとすると文字が赤くなって怒られました。
いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。
Dim objBook2 As Excel.Workbook
Dim objSheet2 As Excel.Worksheet
Set objBook2 = objExcel.Workbooks.Open(CDl.FileName)
objBook2 .Visible = True
Set objSheet2 = objBook2.Worksheets(1)
Sheets.Add(after:=Worksheets(Worksheets.Count))
↑ここでだめでした。
一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。
objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count)
長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
これでできましたよ。
(ダメだったって行だけ)Call objBook2.WorkSheets.Add(,objBook2.Worksheets(objBook2.Worksheets.Count))
ポイント:
1.MSDNあたりのサンプルをごらんになったんでしょうが、そのサンプルはVB.NETじゃなかったですか?いいところまで行ったんですが、あと一歩だったようです。
2.Addの引数に、いきなり","が入っているのがポイントです。"After:="は、「名前付き引数の"After"にはこれを突っ込め」です。C#のサンプルからAfterは第二引数に当ると推測されたので、最初に空のパラメータを渡しました。
3.No.1の方のご指摘どおり、Addの後に括弧をつけるなら、頭に"Call "が必要です。"Call "をつけたくないなら、括弧をつけてはいけません。
蛇足:Visible のところ、"."のまえにSpaceが居ますが、ホンモノ大丈夫ですよね。
詳しい解答ありがとうございますm(__)m
とても参考になりました。
同じシートの追加でもこんなに種類があるんですね。(初心者発言ですみません)
これで、Addの使い方がわかりました。
ご心配頂いた「 .Visible」のスペースは、転記の際に入ってしまったようです。
ご心配ありがとうございます。
ただ、このままだとNo.3の方のご指摘の通りうごきませんでしたが。。。
No.3
- 回答日時:
もし直すなら、私なら、こんな風かな。
以下は、単独で開いている場合です。
Dim objExcel As Excel.Application '一応隠れている部分を出しました。
Dim objBook2 As Excel.Workbook
Dim objSheet2 As Excel.Worksheet
Set objExcel = New Excel.Application
Set objBook2 = objExcel.Workbooks.Open(CDl.FileName)
objExcel.Visible = True '←ここ
Set objSheet2 = objBook2.Worksheets(1)
objBook2.Worksheets.Add after:=Worksheets(Worksheets.Count)
私は、その元のコードが良く分からないところがあります。
「objBook2.Visible = True」です。
objBook2 は、Workbook ですが、このメンバに、.Visible はありましたか?
それは、Application のメンバだから、objExcel.Visible になるのではないでしょうか?もちろん、Visibleにする必要性があれば、ということで、なくても、保存すれば、シートは追加できますけれど。
早速の解答にもかかわらず御礼が遅れてしまい失礼致しました。m(__)m
シート無事追加できました。
あと、Visible のところですが、シートが追加されてるのか確認したくて Visible = True としていました。
ただ、ご指摘の通りobjBook2 = True では
「オブジェクトはプロパティとメソッドをサポートしていません」といわれました。
基本的なところが分かっていないようです。。。
たすかりました。ありがとうございました。
No.1
- 回答日時:
Addメソッドを括弧でくくってしまっているのが原因だと思います。
Call Sheets.Add(after:=Worksheets(Worksheets.Count))
か
Sheets.Add after:=Worksheets(Worksheets.Count)
を試してみてください。
解答ありがとうございます。
そしてお礼が遅れ失礼致しました。
Addはかっこでくくってはいけないんですね。。。
括弧を外したらうまくいきました。
助かりました、ありがとうございましたm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】Worksheets().Act...
-
excelのマクロで該当処理できな...
-
SheetsクラスのSelectメソッド...
-
Excelマクロのエラーを解決した...
-
EXCELVBAを使ってシートを一定...
-
エクセルのマクロでアクティブ...
-
実行時エラー1004「Select メソ...
-
XL:BeforeDoubleClickが動かない
-
Excel VBA リンク先をシート...
-
【VBA】シート名に特定文字が入...
-
マクロを使って、シート印刷完...
-
Excel VBA 大量のレコードから...
-
Excelマクロ 全シートを対象に...
-
エクセルで特定のシートのみ自...
-
エクセルVBA Ifでシート名が合...
-
マクロのワイルドカードの使い...
-
vba 環境依存文字がListViewボ...
-
VBAで同じシート名のコピー時は...
-
VBAで指定シート以外の選択
-
【VBA】特定の文字で改行(次の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【Excel VBA】Worksheets().Act...
-
エクセルVBA Ifでシート名が合...
-
Excel チェックボックスにチェ...
-
シートが保護されている状態で...
-
Excel VBA リンク先をシート...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
同じ作業を複数のシートに実行...
-
エクセルのシート名変更で重複...
-
VBA 検索して一致したセル...
-
【VBA】色のついたシート名を取得
-
VBAで指定シート以外の選択
おすすめ情報