• 締切済み

表を新しいブックに保存

Sub 表を新しいブックに保存反映日ごと() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Do While Range("A2") <> "" Range("A1").Select '一番上の発売日の範囲を取得 Range("A2").Select Dim 列 As Long Dim i As Long 列 = 1 '列数を取得 Do While Cells(1, 列) <> "" 列 = 列 + 1 Loop 列 = 列 - 1 '発売日ごとのデータ量を取得 i = 2 Do Until Cells(i, 1) <> Range("A2").Value i = i + 1 Loop i = i - 1 '発売日のまとまりのデータ範囲を選択 Range(Cells(1, 2), Cells(i, 列)).Select '発売日ごとのデータをコピー Selection.Copy '発売日を取得 Dim 発売日 As Long 発売日 = Range("A2").Value '新しいブックを追加してシート名を発売日に設定 Workbooks.Add ActiveSheet.Name = 発売日 新ファイル名 = ActiveSheet.Name Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & "メンテ_" & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select '保存された発売日分のデータを削除 Range(Cells(2, 1), Cells(i, 列)).Select Selection.Delete Shift:=xlUp Loop '不要になった表転記用ブックを閉じる Application.DisplayAlerts = False ActiveWindow.Close Application.DisplayAlerts = True Range("A1").Select Application.ScreenUpdating = True End Sub Sub 表を新しいブックに保存() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, Password:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select Application.ScreenUpdating = True End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

何がしたいか文章に独立して記述せずに、回答者にこんな長いコードを読ませて、意図を解析させるのは、おかしいのではないか。 雇われVBAの教師ではない。 ーー 日々積み重なるデータを別シートにして、シートが多数ある場合は、指定シート1つだけを含んだ、独立ブックにする機能(VBAでも)はない。 ーー ビジネスでは、普通は色んな意味とか、必要性から、各日のデータをシートなりに収めて、保存する(ブック)のではないか。 システムの専門家(エクセルなど使わないにしろ)にどうすべきか、相談したら。エクセルのVBAのことよりも、上位の必要かどうかの重要事項だと思う。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

Sub Anser()   MsgBox "それで、質問は何でしょう?" End Sub

関連するQ&A

  • 【VBA】ExcelマクロでCSVファイルに保存したデータが""で囲まれてしまう

    添付図のような、Excel2003で作成した表内のデータを CSVで保存するマクロを作成したのですが、 図のように、CSVファイルに「""」で値が囲まれた状態で、 保存されてしまいます。 下記にマクロを記載しますので、 どうすれば文字列が「""」で囲まれずに、 カンマ区切りだけのデータで出力されるのか、 ご存知の方おられましたら、ご教示お願い致します。 Sub csv保存() Dim フォルダ名 As String Dim パス名 As String Dim ファイル名 As String Dim データ As Variant Dim 行数 As Long, 列数 As Integer Dim i As Integer, j As Long, k As Long ファイル名 = "test.csv" フォルダ名 = "csv" パス名 = ActiveWorkbook.Path & "\" & _ フォルダ名 'csvフォルダが存在しなければ作成する If Dir(パス名, vbDirectory) = "" Then MkDir パス名 End If ChDir パス名 Open ファイル名 For Output As #1 For i = 1 To Worksheets.Count Worksheets(i).Activate Worksheets(i).Cells(1, 1).Select ActiveCell.CurrentRegion.Select 行数 = Selection.Rows.Count 列数 = Selection.Columns.Count For j = 1 To 行数 For k = 1 To 列数 - 1 データ = Selection.Cells(j, k) _ .Value Write #1, データ; Next k Write #1, Selection.Cells(j, 列数) _ .Value Next j Next i Close #1 End Sub

  • 複数のエクセルブックを統合し集計するマクロ

    各担当者の月毎の実績を集計するマクロを作ろうとしています。 *販売月、顧客名、金額などの見出しが各ブックの7行目まで、  8行目以降の行数は各担当者によって異なります。  (50行くらいの担当者もいれば300行くらいになる担当者も) *"E1"に販売月を入力し、4月から翌年3月までの実績、予算を入れるのですが、  担当者によっては空白の行を挿入しているため、  空白以降の行がカウントされず、うまく集計できません。 *各ブックの実績データの下で集計しているため、値の入っているセルを選択するのではなく、  実績データ部分だけコピーするにはどうしたら良いのでしょうか?  範囲に名前を付ければ良いのでしょうか?  マクロのことがよく分かっておらず、ネットや本を見て 使えそうなマクロを組み合わせて作ってみたのですが、 何か良い方法があれば教えて頂けると大変助かります。 説明も下手で恐縮ですが宜しくお願い致します。 ************************************ Workbooks.Open Filename:= _ "担当者A" _ , ReadOnly:=True '"貼付シート"にコピー、ファイルを閉じる Sheets(1).Select Cells.Select Selection.Copy Range("A8").Select Windows("貼り付けシートのあるブック").Activate Sheets("貼付シート").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select Windows(2).Activate ActiveWorkbook.Close SaveChanges:=False '貼付シートの各担当者の見出し行を削除 Rows("1:7").Select Range("A1").Activate Selection.Delete Shift:=xlUp "統合シート"シートを新しいシート(Sheet1)として追加 Sheets("統合シート").Copy Before:=Sheets("統合シート") Sheets("統合シート (2)").Name = "Sheet1" '行数取得 Dim 件数 As Integer Dim 行数 As Integer '前回までの行数用 Dim 行数_Total As Integer '最終行用 Sheets("貼付シート").Select 販売月セルで入力行数をカウント(必須入力項目の為) Range("E1").Select Selection.CurrentRegion.Select 件数 = Selection.Rows.Count 行数 = 件数 + 8 'Headder分(7行)の次の担当者のスタート行数を足す '貼付シートからデータをコピーして貼り付け Sheets("貼付シート").Select Range(Cells(1, 2), Cells(件数, 49)).Select Selection.Copy Sheets("Sheet1").Select Range("B8").Select '元ファイルから値と書式を貼付 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False '最終行を前回最終行エリアへ移動 行数_Total = 行数 '貼付シートをクリア Windows("統合シート").Activate Sheets("貼付シート").Select Cells.Select Selection.Delete Shift:=xlUp Range("A1").Select

  • Excel VBAを用いた一括ファイル処理方法

    Excelコマンドボタンを用いて、特定のフォルダ内に格納されたExcelファイルの一括処理をしたいのですが、おもうようにできません。 一括処理内容は、A列以外入力できないようにロックさせる処理になります。 (可能であればPW設定もつけたい。) いろいろサンプルコードやマクロの記録で繋げてみたのですが、おもうようにできません。 どうすればよいのか教えて頂きたく、どうぞよろしくお願いいたします。 <コード> Private Sub CommandButton1_Click() Dim fileNmCol As Collection 'ファイル名格納コレクション Dim folderPath As String 'フォルダのフルパス '作業用 Dim tempFileNm As Variant Dim fullPath As String Set fileNmCol = New Collection 'フォルダパス folderPath = "C:\TEST\" 'Dirにより、ファイル名を取得(xlsファイルのみ) 'フォルダ配下にあるファイル名を順次fileNmに格納する。 tempFileNm = Dir(folderPath + "*.xls", vbNormal) 'ファイル名をfileNmColに追加する Do While tempFileNm <> "" fileNmCol.Add (tempFileNm) tempFileNm = Dir() Loop 'ファイルの数だけ繰り返し For Each tempFileNm In fileNmCol 'ファイルのフルパスを設定指定して、Excelブックを開く fullPath = folderPath + tempFileNm Workbooks.Open fullPath Cells.Select Selection.Locked = False Selection.FormulaHidden = False Columns("I:I").Select Range(Selection, Selection.End(xlToLeft)).Select Columns("C:I").Select Range("I1").Activate Selection.Locked = True Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False Range("A1").Select ActiveWorkbook.Save 'ファイルを閉じる(アラートを無効にする) Application.DisplayAlerts = False Workbooks(tempFileNm).Close Application.DisplayAlerts = True Next End Sub

  • VBA 切り分けがうまくいかない

    A列のデータで切り分けるようプログラム作成しています。 あるデータをA列で切り分けることができましたが、切り分けた後のファイル内容を確認したら、E列以降の内容が元データと異なっていました。 E列にはプルダウンメニューを入れていますので、それが原因かと思い、プルダウンメニューを消した元データで切り分けてみましたが、解決できませんでした。 他のデータ(プルダウンなし・空欄なし)では問題なく正しい内容で切り分けることができています。 フルダウン入りや空欄があるデータだと、正確に切り分けることができないかどうかご教示いただけますと幸いです。 VBAを作った担当者は異動してしまったため、直すことができませんでした。 宜しくお願いします。 Sub Macro5() ' ' Macro5 Macro ' Dim txtFilename As String '元のファイル名 Dim txtS As String '分類名保存用 Dim htxtS As String '定形文保存用 Dim cRow As Integer '行数カウント用 Dim sRow As Integer '行数保存用 Dim eRow As Integer '最終行格納用 Dim h As Integer 'データ入力行保管用 Dim j As Integer 'データ入力開始列 Dim i As Integer '分類項目列保管用 Dim e As Integer '分類項目最終行数保管 i = Cells(18, 9).Value '分類項目列取得 j = Cells(14, 9).Value 'データ入力開始列 h = Cells(14, 11).Value 'データ入力行取得 htxtS = Cells(21, 9).Value '定型文取得 '元ファイル名(=同じフォルダ)を取得する txtFilename = Dir(ThisWorkbook.Path & "¥*.xlsx") 'ファイルを開ける Workbooks.Open ThisWorkbook.Path & "¥" & txtFilename Sheets(1).Activate '分類項目の最終行を取得する e = Cells(h, i).End(xlDown).Row '分類項目でソートを掛ける Cells(h - 1, j).Activate Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.AutoFilter ActiveWorkbook.Worksheets(1).AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets(1).AutoFilter.Sort.SortFields.Add Key:= _ Range(Cells(h - 1, i), Cells(e, i)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ :=xlSortNormal With ActiveWorkbook.Worksheets(1).AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With sRow = 0 cRow = h eRow = h '対象項目の行が無くなるまで繰り返す Do Until cRow > eRow '対象シートを新しいブックに貼り付ける Worksheets.Select Worksheets.Copy Sheets(1).Activate ' 項目名(=ファイル名)の退避 Cells(h, i).Select txtS = ActiveCell.Value '1つ目の分類項目を格納 ' 最終行の取得 eRow = Cells(h - 1, i).End(xlDown).Row cRow = h '分類項目が変わるまで繰り返す Do While txtS = Cells(cRow, i).Value cRow = cRow + 1 '1行加算 Loop '最終行が1行の時は削除されないように対象分類項目以下を削除をスキップする If cRow <> eRow + 1 Then '対象分類項目以下を削除 Rows(cRow & ":" & eRow).Select Selection.Delete End If '対象分類の行数を保存 sRow = cRow - 1 'ファイル名を指定して保存 Cells(1, 1).Activate Selection.AutoFilter With ActiveWorkbook .SaveAs ThisWorkbook.Path & "¥" & htxtS & txtS & ".xlsx" '元ファイルと同フォルダに保存する .Close End With '元のファイルに戻りファイル作成済みの項目を削除 Windows(txtFilename).Activate Sheets(1).Activate ActiveWindow.SelectedSheets(1).Select Rows(h & ":" & sRow).Select Selection.Delete Shift:=xlUp Cells(1.1).Activate Loop MsgBox ("ファイル分割処理が終了しました") '元ファイルを保存せずに閉じる Workbooks(txtFilename).Close SaveChanges:=False End Sub

  • EXCELマクロについて

    条件 シート名提供データE列の3行目からデータが入っています。    ブランク以外のデータをコピーしてシート名WorkのC列の2行目から貼り付けたいので下記のマクロを書いていますがおかしい所 はないのでしょうか。教えてください。 いまいちCellsの使い方がわかりません。 出来たら下記の意味を教えてください。 brank = Worksheets("提供データ").Cells(gyo, 5).Text Range(Cells(3, 5), Cells(gyo, 5)).Select Sub 貼付() Dim gyo, brank Sheets("提供データ").Select Range("e3").Select gyo = 2 Do gyo = gyo + 1 brank = Worksheets("提供データ").Cells(gyo, 5).Text Loop While brank <> "" Range(Cells(3, 5), Cells(gyo, 5)).Select Selection.Copy Sheets("work").Select Range("c2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • VBAの勤務割表の式を短く

     月間の勤務割表を作成しています。 1列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。 列に日付、行を個人名(max16名)とし1列3行を名前の定義で13種類作成してあります。 別シートの各セルの入力番号に応じて13種類を貼り付けていますが、式を簡単にできませんでしようか?  お教えくださいませんでしょうか?勉強不足は否めませんが。 尚名前の定義は、1行3列に1--で勤務1・""-""で日勤・""公休""で公等にしてあります。 OS Windows7 Office2010 Sub 図形の貼付け2() If Worksheets("メイン").Range("J9").Value Then Select Case Worksheets("メイン").Range("J9").Value 1人-1日 Case 1: ActiveSheet.Range("勤務1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 2: ActiveSheet.Range("勤務2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 3: ActiveSheet.Range("勤務3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("日勤1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("日勤2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("日勤3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select Else Select Case Worksheets("メイン").Range("I9").Value Case 2: ActiveSheet.Range("明け").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("夜勤").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("公").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("有").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 7: ActiveSheet.Range("特").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 8: ActiveSheet.Range("振").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 9: ActiveSheet.Range("欠").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select End If End Sub

  • VBA超初心者です

    皆さんのお知恵を拝借させてください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/12/1 ユーザー名 : 101 ' Dim pearend As Integer Dim code As Integer Dim codeend As Integer Dim sheet_name As String Dim dayend As Date Sheets("商品名").Select Range("A4").Select Selection.End(xlDown).Select pearend = Selection.Row() For l = 4 To pearend Step 2 For r = 2 To 3 Cells(l, r).Select code = Cells(l, r).Value Select Case code Case 1000 To 1999 sheet_name = "1000" Case 2000 To 2999 sheet_name = "2000" Case 3000 To 3999 ssheet_name = "3000" Case 4000 To 4999 sheet_name = "4000" Case 5000 To 5999 sheet_name = "5000" End Select Sheets(sheet_name).Select Range("B4").Select Selection.End(xlToRight).Select codeend = Selection.Column() Range("A5").Select Selection.End(xlDown).Select dayend = Selection.Row() For i = 2 To codeend If code = Cells(4, i).Value Then Range(Cells(dayend, i), Cells(5, i)).Select Selection.Copy Sheets("商品名").Select Range("K3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If Next Next Next End Sub というマクロをつくってみたのですが、何順目かあたりから For r = 2 To 3 のrがなぜか4になっています。正直知識がないのでさっぱりわかりません。どこに問題があるか詳しい方教えてください。

  • VBAでハイパーリンクをつける

    仕事で画像のファイル名をExcelに書き出し、書き出しものにハイパーリンクで見がうまくいきません。下記のものです。どこが悪いのでしょうか? Option Explicit Dim ドライブ As String Dim フォルダ As String Dim 拡張子 As String Dim 記入シート As String Dim パス As String Dim ファイル名 As String Dim 貼付行 As Integer Sub フォルダ中のファイル名をシートに書く() ドライブ = "C" フォルダ = "分析" 拡張子 = "*." & "JPG" 記入シート = "ファイル一覧" End Sub Private Sub 指定フォルダ中の指定拡張子のファイル名をシートに書く() Sheets(記入シート).Activate Cells.Clear Range("A1").Select パス = ドライブ & ":\" & フォルダ & "\" ファイル名 = Dir(パス & 拡張子) 貼付行 = 0 Do While ファイル名 <> "" 貼付行 = 貼付行 + 1 Cells(貼付行, 1).Value = ファイル名 ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=ファイル名, TextToDisplay:=ファイル名 ファイル名 = Dir() Loop End Sub 実行すると初めの一行だけリンクができ後は一行もできません。よろしくお願い致します。

  • CSV取り込み&集計

    '***************************************************************** ' GLOBAL変数の定義 '***************************************************************** Dim CurrentDir As String '現在のディレクトリ Dim ThisBook As String '現在のブック名 Dim WorkSheetName1 As String Dim WorkSheetName2 As String Dim ConfigSheetName As String Dim ListSheetName1 As String Dim ListSheetName2 As String Dim ListSheetName3 As String Dim ListSheetName4 As String Dim ListSheetName5 As String Dim ListSheetName6 As String Dim ListSheetName7 As String Dim ErrorFlag As Integer 'エラーフラグ 0:正常 1:エラー Sub 初期設定() CurrentDir = ActiveWorkbook.Path '現在のディレクトリ ThisBook = ActiveWorkbook.Name '現在のブック名 WorkSheetName1 = "work1" WorkSheetName2 = "work2" ConfigSheetName = "設定" ListSheetName1 = "****" ListSheetName2 = "****" ListSheetName3 = "****" ListSheetName4 = "****" ListSheetName5 = "****" ListSheetName6 = "****" ListSheetName7 = "****" Application.DisplayAlerts = False 'EXCELの警告を無視する End Sub Sub CSV取り込み() Dim LoadBook As String '読み込みブック名 Dim DataMaxCol As Integer '読み込みデータ有効最大カラム数 Dim WorkStartRow As Integer 'workシート開始行 Dim WorkEndRow As Integer 'workシート終了行 Dim ListMaxCol As Integer '一覧シート有効最大カラム数 Dim ListStartRow As Integer '一覧シート開始行 '初期設定コール Call 初期設定 'workシートをクリア DataMaxCol = Sheets(ConfigSheetName).Range("F2").Value WorkStartRow = Sheets(ConfigSheetName).Range("F3").Value WorkEndRow = Sheets(ConfigSheetName).Range("F4").Value Sheets(WorkSheetName1).Select Range(Cells(WorkStartRow, 1), Cells(WorkEndRow, DataMaxCol)).ClearContents '受注データファイルを選択しオープン SelectedPath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv") If SelectedPath <> "False" Then Workbooks.Open Filename:=(SelectedPath) Else 'キャンセル時は終了 Exit Sub End If LoadBook = ActiveWorkbook.Name '現在のブック名 '受注データの開始行をチェック I = WorkStartRow '受注データの最終行をチェック Do Until ActiveCell.Value = Null I = I + 1 Cells(I, 1).Select Loop WorkEndRow = I - 1 '受注データをコピー Range(Cells(WorkStartRow, 1), Cells(WorkEndRow, DataMaxCol)).Select Selection.Copy 'workシートへペースト Windows(ThisBook).Activate Sheets(WorkSheetName1).Select Range("A1").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False '受注データファイルをクローズ Windows(LoadBook).Close End Sub Sub 売上() ' Call CSV取り込み Range("K3:K19").Select Selection.Copy Sheets("売上").Select Range("K3:K19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 上記のようなプログラムを書いているのですが何度もはじかれてしまいます。何が原因なのかいまいちよくわからないのですがVBAに詳しい方助けてもらえませんでしょうか?

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

専門家に質問してみよう