電子書籍の厳選無料作品が豊富!

エクセル2010を使用しております。

シートBを営業日が終了したらコピーして別シートCに保存したいのですが

リンクして数字をひっぱっているので そのリンク元(シートA)は 営業日が終了した時点で

数字をクリアして 翌営業日に使用しています。

ですので シートBをコピーしても リンク元(シートA)をクリアすると

入力されていた数字も同時に消えてしまうし

また あたり前ですが、元のシートAに数字をいれると 違う数字になってしまいます。

そこで 画像としてコピーして保存するか 

印刷して データを打ち直すかしか 考えが 浮かびませんが・・・

マクロを使って いい方法はないものでしょうか?

シートを新規に作成→シートBの印刷エリアをコピー→シートCに形式を選択して画像として貼り付け
→画像を適切な大きさに縮小する。

上の一連の流れをマクロで できるのか?考えてみましたが、

できれば 画像ではなく コピーして新規シートに作成したいんですが

毎日の作業なので頭がいたいです。もっと絶対いい方法があるとおもいますが。

詳しい方、お願いします。

A 回答 (5件)

いや,こっちにしましょう。



sub macro3()
 worksheets("集計表").copy after:=worksheets("集計表")
 activesheet.usedrange.value = activesheet.usedrange.value
 on error resume next
 activesheet.name = format(date - 1, "yyyymmdd")
end sub

この回答への補足

keithinさん たびたびの回答ありがとうございます。

自宅に帰り、コード試さしていただきます。

もうしわけありませんでした。

補足日時:2012/01/07 20:48
    • good
    • 0

まず、マクロに慣れることからされたらいかがでしょうか。


そうすれば質問も具体的に出来ると考えます。

EXCELでは「マクロの記録」という機能(マウスで行った操作が記録されます)があります。

(0)マクロ記録をこれを開始します(小さな記録終了ボタンだけになって終わるのを待っています)。
(1)オリジナルシートを新しいシートをにピーする。
 シートタブを右クリックしてシートのコピーをさせることになるのでしょう。
(2)オリジナルシートを選択して、コピーします。
(3)新しく作成したシートに形式を選択して貼り付けを選び、「値」だけを貼り付けます。
(4)マクロ記録を終了させます。

出来上がったマクロは固定的なものですが使えると思います。
後はマクロをダイレクトに呼び出すか、ボタンコントロールを作り、マクロを対応させるなどすれば良いのではないでしょうか。
※ボタンの作り方にはたしか2通りあるので正しい方を使ってください。ボタンの右クリックでマクロの登録?が出るのが正しい方です。
    • good
    • 0

なぜ同じ事を二回もご説明しなきゃならないのでしょうか。



アナタがやりたかったこと:
>集計表シートをコピーしてシート名は、前日の日付 01/06/12
>などと 日々蓄積コピーできればいいと考えております。
>考えております。


回答済み内容:
集計表に一日分溜まったら,別のシート2に転記したい
次の日に集計表にまた一日溜まったら違うシート3に転記して,毎日の集計表シートを蓄積したい

sub macro2()
 worksheets("集計表").usedrange.copy
 worksheets.add after:=worksheets("集計表")
 activecell.pastespecial xlpastevalues
 acftivesheet.name = format(date -1, "yyyymmdd")
end sub
    • good
    • 0

ご相談では,毎日のデータを「どこに(どんな具合に)貼り付けたい」のか,一番肝心な事が書かれていません。


二番目に大事な,「どこのセルからコピーしたい」のかも説明が抜けてます。
具体的なマクロの作成に必要になる,それぞれのシートの名称も不明なままです。


アナタがやりたかったのはこういうことですか?その1:
シート1の例えばA1:J20が元の範囲だとして
これを丸ごとシート2にまず最初の20行分を貼り付けたら,明日はその下に20行下げたところに貼って,蓄積していきたい

具体的な手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
worksheets("Sheet2").cells.specialcells(xlcelltypelastcell).offset(1).end(xltoleft).range("A1:J20").value = worksheets("Sheet1").range("A1:J20").value
end sub

ファイルメニューから終了してエクセルに戻る
ALT+F8を押して(あるいはオートシェイプなどでボタン絵柄を配置して右クリックしてマクロの登録を行い)マクロを実行する


#実際には
具体的に蓄積したいセルを特定して,その値だけを転記して蓄積していきます



アナタがやりたかったのはこういう事ですか?その2:
シート1に一日記入したら,別のシート2に転記したい
次の日にシート1にまた一日記入したら違うシート3に転記して,毎日の日報シートを蓄積したい

sub macro2()
worksheets("Sheet1").usedrange.copy
worksheets.add after:=worksheets("Sheet1")
activecell.pastespecial xlpastevalues
end sub

この回答への補足

keithinさん 説明不足ですみません。


集計表 というのが sheets名で A1:H37 が 元の範囲となります。

こちらが 日報 という 日々入力しているsheetsから

いくつかの数字を リンクして 表示しております。

希望するのは 日々の日報シートを蓄積したいという方であります。



毎日 朝9時に 日報を閉めクリアーにしております。

おのずと 日報をクリアーすると集計表のリンクしている数字は消えますので

クリアする前に 集計表は印刷するように現在はしております。

そのあとで 集計表のひな形に日付と シート名を変えて 中の数字を入れなおしております。


ですので大変作業効率がわるいので改善したく質問させていただきました。



集計表シートをコピーしてシート名は、前日の日付 01/06/12

などと 日々蓄積コピーできればいいと考えております。

考えております。

可能でしょうか?何度も大変もうしわけありませんが、できればアドバイスお願いします。

補足日時:2012/01/07 17:15
    • good
    • 0

こんな感じでどうでしょうか?


試しにB2~G24をコピーするようにしてみました。
画像ではなく、セルの値と書式を貼付けるので、元の数値が変化してもコピー先は変化しません。

Sub test()
日付 = Format(Now(), "yymmdd")
Range("B2:G24").Copy
Worksheets.Add
ActiveSheet.Name = 日付
With Range("B2:G24")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
End With
End Sub

この回答への補足

BATIBACHIさん回答ありがとうございます。

テストコードはこれから やらさせていただきますが、説明不足がいなめないので 補足させていただきます。


集計表 というのが sheets名で A1:H37 が 元の範囲となります。

こちらが 日報 という 日々入力しているsheetsから

いくつかの数字を リンクして 表示しております。


毎日 朝9時に 日報を閉めクリアーにしております。

おのずと 日報をクリアーすると集計表のリンクしている数字は消えますので

クリアする前に 集計表は印刷するように現在はしております。

そのあとで 集計表のひな形に日付と シート名を変えて 中の数字を入れなおしております。


ですので大変作業効率がわるいので改善したく質問させていただきました。



集計表シートをコピーしてシート名は、前日の日付 01/06/12

などと 日々蓄積コピーできればいいと考えております。

考えております。

時間があれば アドバイスいただければと思います。

補足日時:2012/01/07 17:18
    • good
    • 0

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