• ベストアンサー

エクセル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

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

マクロの記録で、「個人用マクロブック」に記録を使う(マクロブックを作ることが目的なので内容はなんでもいい、後で削除)でマクロブックを作れば、 新しいエクセルファイルに自動的に読み込まれますので、そこにマクロを書き写しておけば、次からは、そのまま使えます。 場合によっては名前の修飾が必要かもしれません(http://okweb.jp/kotaeru.php3?qid=1129270

error123
質問者

お礼

「個人用マクロブック」ですか。 ありがとうございました。 うまく出来ました。

その他の回答 (1)

回答No.2

もう回答も出てうまくいったようですので、お書きになった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

error123
質問者

お礼

わざわざご親切にありがとうございました。 すっきりしましたね。

関連するQ&A