Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11245 / 13644 ツリー ←次へ | 前へ→

【17126】マクロで新しいブックの作成と諸処理について はっしー 04/8/23(月) 15:35 質問[未読]
【17129】Re:マクロで新しいブックの作成と諸処理に... Asaki 04/8/23(月) 15:45 回答[未読]
【17135】Re:マクロで新しいブックの作成と諸処理に... はっしー 04/8/23(月) 17:32 質問[未読]
【17136】Re:マクロで新しいブックの作成と諸処理に... Asaki 04/8/23(月) 17:40 回答[未読]
【17153】Re:マクロで新しいブックの作成と諸処理に... はっしー 04/8/24(火) 9:19 お礼[未読]
【17154】Re:マクロで新しいブックの作成と諸処理に... つん 04/8/24(火) 10:05 発言[未読]
【17155】Re:マクロで新しいブックの作成と諸処理に... Jaka 04/8/24(火) 11:24 発言[未読]
【17161】Re:マクロで新しいブックの作成と諸処理に... Jaka 04/8/24(火) 12:21 発言[未読]
【17163】Re:マクロで新しいブックの作成と諸処理に... Asaki 04/8/24(火) 12:51 回答[未読]
【17236】Re:マクロで新しいブックの作成と諸処理に... はっしー 04/8/25(水) 10:46 お礼[未読]

【17126】マクロで新しいブックの作成と諸処理につ...
質問  はっしー  - 04/8/23(月) 15:35 -

引用なし
パスワード
   いつもお世話になっております m(_ _)m。
本日も皆様のお知恵をお借りしたく、参上いたしました。
1.ワークブックbookmei(bookmeiは変数で、ここにブックの名前が格納されています)にシートhyoushiとenqueteがあります。hyoushiのセルL9には社員番号が格納されています。
2.bookmei内のマクロで新規にブックを作成します。
3.新規ブックの名前は社員番号にenqをつけたものにします。
4.新規のブックのシート1とシート2の名称をそれぞれkaitousya、kaitouにします
5.新規ブックのkaitousyaとkaitouにそれぞれbookmeiのhyoushiとenqueteをコピーペーストします。
6.新規ブックをセーブして閉じます。

と、以上のことを実現しようとして以下のコードを記述したのですが、コピーペーストするところで新たにブックが開かれてしまい(Book2、Book3)、そちらにデータがペーストされ、2.で作成されたブックにデータがペーストされません(_ _,)/~~  コウサン。
何かいい解決方法があったらご教示いただけないでしょうか。
よろしくお願いいたします。

なお、シートを非表示にしている都合上、active,activate,selectなどを使うと、不具合が起きてしまうようなので、一切使わないでコーディングしております。

'ansfileはバリアント型の変数です
ansfile = Workbooks(bookmei).Worksheets("hyoushi").Cells(9, 12).Value
ansfile = Format(ansfile, "000000\e\n\q")

Workbooks.Add

'できればこの時点でブックの名称を変更したいです。
Workbooks("Book1").Sheets("Sheet1").Name = "kaitousya"
Workbooks("Book1").Sheets("Sheet2").Name = "kaitou"

Workbooks(bookmei).Worksheets("hyoushi").Copy
Workbooks("Book1").Sheets("kaitousya").Paste
Workbooks(bookmei).Worksheets("enquete").Copy
Workbooks("Book1").Worksheets("kaitou").Paste
Workbooks("Book1").SaveAs Filename:=ansfile
Workbooks(ansfile).Close

【17129】Re:マクロで新しいブックの作成と諸処理...
回答  Asaki  - 04/8/23(月) 15:45 -

引用なし
パスワード
   こんにちは。

Add したところで、Workbook型のオブジェクト変数にセットしましょう。
これを利用した方がコードがすっきりします。
Bookの名称は、保存するタイミングでしか設定できません。

ちなみに、CopyするときにDestinationで貼り付け先を指定しては?

【17135】Re:マクロで新しいブックの作成と諸処理...
質問  はっしー  - 04/8/23(月) 17:32 -

引用なし
パスワード
   Asaki様
いつもお世話になっております。

bookの名称はやはり保存するタイミングでしか変えられないのですね。
だとしたらますますオブジェクト型に入れる必要性が高いですね。
そして、
Destinationっなんですかー?(j o j) ウルルル
helpで調べてみたのですが、適当なtopicが見つかりません。
お手数をおかけて恐縮ですが、もう少し詳しくお教えいただけないでしょうか。
よろしくお願い申し上げます m(_ _)m。


▼Asaki さん:
>こんにちは。
>
>Add したところで、Workbook型のオブジェクト変数にセットしましょう。
>これを利用した方がコードがすっきりします。
>Bookの名称は、保存するタイミングでしか設定できません。
>
>ちなみに、CopyするときにDestinationで貼り付け先を指定しては?

【17136】Re:マクロで新しいブックの作成と諸処理...
回答  Asaki  - 04/8/23(月) 17:40 -

引用なし
パスワード
   >Destinationっなんですかー?(j o j) ウルルル
>helpで調べてみたのですが、適当なtopicが見つかりません。
調べるのは Copy メソッドです。

【17153】Re:マクロで新しいブックの作成と諸処理...
お礼  はっしー  - 04/8/24(火) 9:19 -

引用なし
パスワード
   Asaki様
たびたびありがとうございました。
おかげさまでdestination見つかりました。

結果、新規に作成したbookにペーストできたのですが、新規に作成したbookに新しいシートが作成されてしまいました。
以下コードです。

Workbooks.Add

Workbooks("Book1").Sheets("sheet1").Name = "kaitousya"
Workbooks("Book1").Sheets("Sheet2").Name = "kaitou"

Workbooks(bookmei).Worksheets("hyousi").Copy Workbooks("Book1").Sheets("kaitousya")
Workbooks(bookmei).Worksheets("enquete").Copy Workbooks("Book1").Sheets("kaitou")

結局これに

Application.DisplayAlerts = False
Workbooks("Book1").Sheets("kaitousya").Delete
Workbooks("Book1").Sheets("kaitou").Delete
Workbooks("Book1").Sheets("sheet3").Delete
Application.DisplayAlerts = True

を付け加えることによって、欲しい結果を得ることができました。
ちなみにdetinationでシートを明示しないと、コピーそのものがされないみたいです。
ex.
Workbooks(bookmei).Worksheets("hyousi").Copy Workbooks("Book1")
→これだとコピーされません。

いつもいつもお世話になって恐縮です。
誠ににありがとうございました。

【17154】Re:マクロで新しいブックの作成と諸処理...
発言  つん E-MAIL  - 04/8/24(火) 10:05 -

引用なし
パスワード
   はっしー さん、おはようございます。
Asakiさん、横から失礼します。

えと、またAsakiさんが来られると思いますが・・・
気が付いたことだけちょっと。

シートのコピーは、

Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")
(ヘルプの使用例そのままですが)

この形がええんと違うかなー?と思います。
ヘルプに、RangeオブジェクトのCopyと、WorksheetsオブジェクトのCopyと載ってますので、一度読まれたらいいかと思います

それと、Workbooks(bookmei)にマクロが入ってるんですよね?
マクロが入っているブックを参照するのに、ThisWorksbookがあるので、
そちらを使われたらどうか?と思います。

もひとつ・・・
>Workbooks.Add
この時点で、名前をつけて保存させて、オブジェクト変数に入れてしまえばどうですか?
扱いやすくなると思いますが。
Asakiさんもそうおっしゃってたような・・・

【17155】Re:マクロで新しいブックの作成と諸処理...
発言  Jaka  - 04/8/24(火) 11:24 -

引用なし
パスワード
   おじゃまします。
全体を良く解っていませんが、作成ブックの変数化ってことでお願いします。

Dim 追加ブック As Workbook
Set 追加ブック = Workbooks.Add
追加ブック.Sheets("sheet1").Name = "kaitousya"
追加ブック.Sheets("Sheet2").Name = "kaitou"

'処理がすんだら保存してないので、名前を付けて保存
追加ブック.SaveAs FileName:="保存場所とファイル名をフルパスで"

'閉じる
追加ブック.Close

'最後の後始末、setした変数を開放する。
Set 追加ブック = Nothing


【17161】Re:マクロで新しいブックの作成と諸処理...
発言  Jaka  - 04/8/24(火) 12:21 -

引用なし
パスワード
   もうひとつ

シートをコピーする場合、
目安箱に書いたのも見ておいた方が...。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=64;id=FAQ
・マクロでDelete、Copy後SaveAsで保存するとブックが破損
ここから直接リンクはればいいとは思いますが、すみません。

これとは別にデータ量が多いとシートのコピーに失敗したりします。
「ディスクがいっぱいです。」とか出て

【17163】Re:マクロで新しいブックの作成と諸処理...
回答  Asaki  - 04/8/24(火) 12:51 -

引用なし
パスワード
   みなさま、こんにちは。

シートのコピーではなくて、セルのコピーなら
Workbooks(bookmei).Worksheets("hyoushi").Range("A1:E10").Copy _
  Destination:=Workbooks("Book1").Sheets("kaitousya").Cells(1,1)
という感じになりますが。

【17236】Re:マクロで新しいブックの作成と諸処理...
お礼  はっしー  - 04/8/25(水) 10:46 -

引用なし
パスワード
   >つん様。

結局コピーだと私の力量では怪しいので(元のシートを非表示にしておくとコピーされなくなりました)、データを読み取り、書き写すように変えました(i々i)] ハゥ〜。
また、オブジェクト変数を使うようにも書き換えました。
当初のコードだと連続処理をしてBook2が発生したときにエラーになってしまったのですが、オブジェクト変数を使うことによって解決されました。
アドバイスありがとうございます。

>Jaka様

>Dim 追加ブック As Workbook
>Set 追加ブック = Workbooks.Add
>追加ブック.Sheets("sheet1").Name = "kaitousya"
>追加ブック.Sheets("Sheet2").Name = "kaitou"
か、神の技術でございます(O.O;) マッシロ〜。
おかげさまでオブジェクト変数が使えるようになりました。
ありがとうございます。
また、エラーの数々、興味深く拝見させていただきました。

>Asaki様

Destinationは明示できるのですね。
またひとつ勉強になりました。
ありがとうございました。

皆様、重ね重ねありがとうございましたo(・∇・o)(o・∇・)o。

11245 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free