- ベストアンサー
エクセルVBAの保存
毎月異なった新しいエクセルファイルに同じような加工を施すため、VBAを書きました。対象はActivesheetとしています。 で、質問は、この新しいエクセルファイルの標準モジュールにいちいちこのVBAをコピーペーストせずに実行する方法です。 きっと何かあるとは思うのですが・・・・。 VBAは次のような簡単なものです。 Sub 加工1() Dim e As Integer, s As String, n As String e = Range("A4").End(xlDown).Row s = Replace(Mid(Range("A2"), 8, 5), "年", "") & "-" n = Replace(Mid(Range("A2"), 19, 5), "年", "") & "-" Range("A1:C2").MergeCells = False Columns("B:B").Select Selection.Insert Shift:=xlToRight Columns("A:A").Select Selection.Insert Shift:=xlToRight Columns("C:C").Select Selection.NumberFormatLocal = "G/標準" Range("B3").Select Selection.AutoFill Destination:=Range("B3:C3"), Type:=xlFillDefault Range("B3").Select ActiveCell.FormulaR1C1 = "商品番号1" Range("C4").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C" & e), Type:=xlFillDefault Range("A3").Select ActiveCell.FormulaR1C1 = "抽出年月日" Range("A4").Select ActiveCell.FormulaR1C1 = s & n & 1 Range("A4").Select Selection.AutoFill Destination:=Range("A4:A" & e), Type:=xlFillDefault Rows("3:3").Select Selection.Insert Shift:=xlDown Range("B1:E1").MergeCells = True Range("B2:E2").MergeCells = True ActiveSheet.Name = "提出用" End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロの記録で、「個人用マクロブック」に記録を使う(マクロブックを作ることが目的なので内容はなんでもいい、後で削除)でマクロブックを作れば、 新しいエクセルファイルに自動的に読み込まれますので、そこにマクロを書き写しておけば、次からは、そのまま使えます。 場合によっては名前の修飾が必要かもしれません(http://okweb.jp/kotaeru.php3?qid=1129270)
その他の回答 (1)
- shishishishi
- ベストアンサー率39% (362/921)
もう回答も出てうまくいったようですので、お書きになったVBAの方をちょっと簡素化してみました。 いかがでしょう? Sub TEST() With ActiveSheet Dim e As Integer, s As String, n As String e = .Range("A4").End(xlDown).Row s = Replace(Mid(.Range("A2"), 8, 5), "年", "") & "-" n = Replace(Mid(.Range("A2"), 19, 5), "年", "") & "-" .Range("A1:C2").MergeCells = False .Columns("B:B").Insert Shift:=xlToRight .Columns("A:A").Insert Shift:=xlToRight .Columns("C:C").NumberFormatLocal = "G/標準" .Range("B3").AutoFill Destination:=.Range("B3:C3"), Type:=xlFillDefault .Range("B3") = "商品番号1" .Range("C4").FormulaR1C1 = "=LEFT(RC[-1],10)" .Range("C4").AutoFill Destination:=.Range("C4:C" & e), Type:=xlFillDefault .Range("A3") = "抽出年月日" .Range("A4") = s & n & 1 .Range("A4").AutoFill Destination:=.Range("A4:A" & e), Type:=xlFillDefault .Rows("3:3").Insert Shift:=xlDown .Range("B1:E1").MergeCells = True .Range("B2:E2").MergeCells = True .Name = "提出用" End With End Sub
お礼
わざわざご親切にありがとうございました。 すっきりしましたね。
お礼
「個人用マクロブック」ですか。 ありがとうございました。 うまく出来ました。