初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
【VB6】EXCELのシート名を変更したい
Visual Basic(VBA)
-
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
-
4
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
5
VBで既存エクセルシートを新規ブックにコピー
Visual Basic(VBA)
-
6
配列を関数に渡す方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルで通し番号を入れてチ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
シート名の一部を変更する方法...
-
シート名をフォルダ名に変更
-
指定文字が含まれるシートを削...
-
シートが保護されている状態で...
-
PerlでExcelのワークシートを同...
-
excelシートから別のexcelシー...
-
VBA オートフィルター繰り返し
-
【VBA】色のついたシート名を取得
-
セルのコピーで「オブジェクト...
-
ExcelのVBAのマクロで他のシー...
-
VBA 別ブック(シート)の同...
-
VBAです。ユーザーフォームの表...
-
VBAで特定のシート以外のシート...
-
Excel VBA マクロ あるフォルダ...
-
<Excel2010> カレンダーから日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報