プロが教える店舗&オフィスのセキュリティ対策術

あと少しなんですが、ご教授お願いします

■入力用シートのデータを、データシートに転記し
それをコピーして結果シートを追加していく
(データシートは毎回クリアし再利用)

ブック---------------------------------------------
入力用シート(測定日セル、測定結果セル、商品セル)
データシート(ひな形)
結果シート1
結果シート2


---------------------------------------------------

■この時点で、月末までは測定日、測定結果しか分からないので
とりあえず結果シートを先に作成しておく
■マクロ
結果シート追加までは問題なく作成できました
次の処理ですが、入力用データに
セル1(使用する結果シート名指定)
セル2(商品番号1)
セル3(商品番号2)


月末に入力用シートから、指定の結果シートに商品番号、他を付加し
商品シートとして追加し印刷
(結果シート一枚に対して、商品番号が違うだけの商品が多数あるため)

ブック----------------------------------------


商品シート1(印刷)
商品シート2(印刷)
入力用シート(測定日セル、測定結果セル、商品セル)
データシート(ひな形)
結果シート1(シート名は測定日)
結果シート2


----------------------------------------------
それ以降のコードです
For Each Ws In Worksheets
If Ws.Name Like 結果シート Then
Ws.Copy Before:=入力用シート
Ws.Name = 商品番号1
With Ws
データ付加
   End With
Ws.PrintOut
End If
Next
---------------------------------------------
問題点1
上記コードは新たな商品シート1が追加されエラーなく印刷されましたが、
コピーした結果シート名に(2)が付加され、シート名が変わってしまいました。
これを回避する方法がわかりません
問題点2
結果シート1枚に対し、商品番号だけ違う複数の同じシートを使うので
セル2~セル10のよう商品数分、連続出力できるようにループさせたいのですが、、

A 回答 (1件)

こんにちは



>シート名が変わってしまいました。
>これを回避する方法がわかりません
手作業でも同じはずですが、すでに存在するシートと同じシート名を付けることはできません。
ご質問の事象が起きるのは、同じ名前のシートがすでに存在している時ではないのですか?

回避したいのであれば・・・
1)新しくシートを作らずに、ひとつのシートを使いまわす
 (必要なら、以前の内容は他のシートに回避する)
2)同じ名前のシートが存在する場合はそちらの名前を変えてから、新しくシートを作成する
 (不要であるなら、古いシートを削除してからシートを作成する)
などの手順が考えられると思います。
結果的には、どちらも同じような状態になりますが、考え方は少し違うので、コードは異なるものになります。


>連続出力できるようにループさせたいのですが
処理から出力までの全体をループすれば良いと思いますが、何が障害なのでしょうか?
上には記しませんでしたが、10種類のシートを作成したいのであれば、連番を振るなどして集計シートを10種類作成するという考え方もあると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!