[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロの複写について』(hiro)
ファイルが十数個有り、各々シートが1月から12月まであります。
各々のファイルの11月を一番左に移動し
新規シート作成しそこに縦横入れ替えて保存するマクロを作りました。
今後、他の月も10月でしたら10月だけ同じようにしたいのですが
マクロの事態の複写ってどうすればできるのでしょうか?
今はマクロ名は「Macro11」といのがあります
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
Dim NMh
NMh = Month(Now()) & "月"
Sheets(NMh).Select
Call Macro11
End Sub
(Q::) 2017/12/05(火) 13:39
・
・
・
よろしくお願いします。
(hiro) 2017/12/05(火) 14:09
Sub Macro11()
Dim NMh
NMh = Month(Now()) & "月"
Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1)
End Sub
Sub Macro12()
Dim NMh
NMh = Month(Now()) & "月"
Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1)
End Sub
Sub Macro1()
Dim NMh
NMh = Month(Now()) & "月"
Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1)
End Sub
Sub Macro2()
Dim NMh
NMh = Month(Now()) & "月"
Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1)
End Sub
(Q::) 2017/12/05(火) 14:25
別件ですが、BOTさんではなかったでしょうか?
『マクロの複写について』(hiro) >>BOT
とあったものですから。
(hiro) 2017/12/05(火) 14:47
先ず
1月 2月〜12月のシートが有るのですよね
下記のマクロは 当月のマクロを選択して 当月シートを左に移動するマクロです
Sub Macro2()
Dim NMh NMh = Month(Now()) & "月" Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1) End Sub
此処から下記マクロを挿入すればいいと思います
>新規シート作成しそこに縦横入れ替えて保存するマクロを作りました
(Q::) 2017/12/05(火) 15:37
'
ActiveWindow.ScrollWorkbookTabs Sheets:=-1 ActiveWindow.ScrollWorkbookTabs Sheets:=-1 ActiveWindow.ScrollWorkbookTabs Sheets:=-1 ActiveWindow.ScrollWorkbookTabs Sheets:=-1 Sheets("11月").Select Sheets("11月").Move Before:=Sheets(1) Sheets("11月").Select Sheets.Add Sheets("11月").Select Range("B5:AG22").Select Selection.Copy Sheets("Sheet1").Select Range("A2").Select ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.Copy Range("A22").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Rows("1:21").Select Range("A21").Activate Application.CutCopyMode = False Selection.Delete Shift:=xlUp ActiveWorkbook.Save End Sub
よろしくお願い致します。
(hiro) 2017/12/05(火) 15:57
こんな感じ? これで動くと思うけど
ただ 自動記録に乗っけただけだから
かなり無駄が多いかな
Sub Macro11()
'
' Macro11 Macro
'
Dim NMh NMh = Month(Now()) & "月" Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1) Sheets.Add Sheets(NMh).Range("B5:AG22").Copy
Sheets("Sheet1").Range("A2").Select ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.Copy Range("A22").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Rows("1:21").Select Range("A21").Activate Application.CutCopyMode = False Selection.Delete Shift:=xlUp ActiveWorkbook.Save End Sub (Q::) 2017/12/05(火) 16:11
余計な枝葉を切っていくと、こんな感じでしょうか?(コピー先は毎月ずらす、とかあります?) なお、コピー対象のシートをアクティブにしてからマクロを実行すれば良いので、1つのマクロだけで全月対応できますよ。
Sub test() Dim wk1 As Worksheet Dim wk2 As Worksheet
Set wk1 = ActiveSheet wk1.Move Before:=Sheets(1)
Set wk2 = Sheets.Add wk1.Range("B5:AG22").Copy wk2.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True
ActiveWorkbook.Save Application.CutCopyMode = False End Sub (???) 2017/12/05(火) 16:25
A22にも貼り付けてません?
>Range("A22").Select
>Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
>False, Transpose:=True
Rows("1:21").Selectして さくじょしてますよね Selection.Delete Shift:=xlUp
重複作業して
結果 A1に貼り付けた って事なのか
笑い
(Q::) 2017/12/05(火) 16:45
ちゃんと読んでくださって
って書くの忘れてました
(Q::) 2017/12/05(火) 16:46
Set wk1 = ActiveSheet
上記になってますので
当月をまず アクティブしないと
うまく行かないかないので
ここだけは 注意ですかね
(Q::) 2017/12/05(火) 16:53
アクティブシートを対象とし、追加シート名がSheet1でなくとも良いようにしたので、使いやすくなったかと思いますよ。 後は、1月は年変わりで違う処理がありそうですが、1月のマクロを貼ってくれていないので、書けませんでした。まぁ、If文でシート名を調べて、1月だったら何々、という処理を追加するだけですが。
(???) 2017/12/05(火) 17:18
どうなるか試してみます。ありがとうございます。
(hiro) 2017/12/05(火) 17:26
(hiro) 2017/12/05(火) 17:48
もし壊れたら
名前を元に戻せばいいとおもいます
データーも大切でしょうから
(Q::) 2017/12/05(火) 17:54
バックアップといいましても編集画面で中身を書き換えてますので、結局マクロ名は
「PERSONAL.XLSB!Macro11」一つしかありませんが・・・
(hiro) 2017/12/05(火) 18:14
Sub test() Dim wk1 As Worksheet Dim wk2 As Worksheet
Set wk1 = ActiveSheet wk1.Move Before:=Sheets(1)
Set wk2 = Sheets.Add wk1.Range("B5:AG22").Copy wk2.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True
ActiveWorkbook.Save Application.CutCopyMode = False End Sub
こちらは値が変わってしまってダメでした。
Sub Macro11()
' ' Macro11 Macro '
Dim NMh NMh = Month(Now()) & "月" Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1) Sheets.Add Sheets(NMh).Range("B5:AG22").Copy
Sheets("Sheet1").Range("A2").Select ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.Copy Range("A22").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Rows("1:21").Select Range("A21").Activate Application.CutCopyMode = False Selection.Delete Shift:=xlUp ActiveWorkbook.Save End Sub
こちらは値はちゃんと取れましたが現在の月が強制されてしまい
希望のシート月が選べませんでした。
(hiro) 2017/12/05(火) 18:19
(hiro) 2017/12/05(火) 18:26
(γ) 2017/12/05(火) 22:06
Sub test() ’マクロ名 test
Dim wk1 As Worksheet ’ 宣言 wk1 wk2はワークシートです Dim wk2 As Worksheet Set wk1 = ActiveSheet 'wk1に現在選択しているシートをあてがいます wk1.Move Before:=Sheets(1) 'wk1 (現在選択しているシート)を左移動 Set wk2 = Sheets.Add '新しいシート作ってwk2とします wk1.Range("B5:AG22").Copy 'wk1(現在選択しているシート)のB5からAG22までコピーします wk2.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True 'wk2(新しいシート)に立横変えて貼り付 ActiveWorkbook.Save 'ファイルを上書き Application.CutCopyMode = False 'コピーモードを中止 End Sub >こちらは値が変わってしまってダメでした。 処理したい月のシートを選択してないからと思います
正直私の書いたのは
前回も説明してますが当月処理前提です
それが 下記の命令です
NMh = Month(Now()) & "月" Sheets(NMh).Select Worksheets(NMh).Move Before:=Worksheets(1)
(Q::) 2017/12/06(水) 10:08
Sub Macro1()
Sheets("1月").Move Before:=Sheets(1) Sheets("1月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub
Sub Macro2()
Sheets("2月").Move Before:=Sheets(1) Sheets("2月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub Sub Macro3()
Sheets("3月").Move Before:=Sheets(1) Sheets("3月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub
Sub Macro7()
Sheets("7月").Move Before:=Sheets(1) Sheets("7月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub Sub Macro8()
Sheets("8月").Move Before:=Sheets(1) Sheets("8月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub
Sub Macro11()
Sheets("11月").Move Before:=Sheets(1) Sheets("11月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub
Sub Macro12()
Sheets("12月").Move Before:=Sheets(1) Sheets("12月").Range("B5:AG22").Copy Sheets.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save End Sub (Q::) 2017/12/06(水) 10:23
ちなみに、標準モジュールに書いたマクロの保存ならば、マクロ編集画面で左のツリーから該当するモジュール(ダブルクリックすると、今使っているマクロが表示されるもの)を右クリックし、「ファイルのエクスポート」機能で名前を付けて保存しても良いです。 今後環境が変わる等によりマクロが失われた場合は、同じようにツリーを右クリックしてから「ファイルのインポート」を使って読み込めばOK。
(???) 2017/12/06(水) 10:36
(Q::) さんのを試しますとやはり値が#REFとかなったりしてダメでした。
(???)さんの言う「アクティブ状態にしてから実行」という意味が分からなかったので
多分同じ事が原因なのかなと思いました。
只、(Q::) さんのをコピペした時に気づいたのですが、自動的にマクロ名がSub Macro12()
とかで出来上がるのですね。これがわかれば12回コピペして11月の所を1月から12月
まで数字を変えてあげるだけなので望んでいたものが直ぐに作れます
有難うございました。
(hiro) 2017/12/07(木) 09:59
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1313238988
(Q::) 2017/12/07(木) 11:07
(hiro) 2017/12/07(木) 11:34
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.