マクロでの自動保存

このQ&Aのポイント
  • エクセルで作ったデータをボタン一つで自動的に特定のフォルダーに保存するマクロを作りたいです。
  • 保存名前を付けて保存するプログラムまでは組めたのですが、特定のフォルダに保存していくプログラムがうまく動きません。
  • 下記に作成したコードを記載するので、アドバイスをお願いします。
回答を見る
  • ベストアンサー

マクロでの自動保存

エクセルで作ったデータをボタン一つで自動的に特定のフォルダーに 保存するマクロを作りたいのですが、色々なサイトを参考に保存名前を 付けて保存するプログラムまでは組めたのですが、特定のフォルダに 保存していくプログラムがうまく動きません。 下記に作成したコードを記載するので、アドバイスお願いします。 Sub データ保存() Sheets("シート名").Select パス = ActiveWorkbook.Path 別名 = Application.InputBox(prompt:="入力例.12345", _ Title:=" ファイル名を入力して下さい", Type:=2) 別名 = パス & "\" & 別名 & ".xls" Sheets("シート名").Copy ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close End Sub

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ご質問がいまいちよくわからないのですが、ご提示のコードはそのマクロを書いたBOOKが保存されているフォルダー内にあたらしく保存させるものです。 それを別の指定したフォルダーに変えたいということでしょうか? そうであれば、以下のように パス = "C:\Documents and Settings\merlionxx\デスクトップ" のように直接していするのが簡単です。 Sub データ保存() Dim パス As String, 別名 As String Sheets("シート名").Select パス = "C:\Documents and Settings\merlionxx\デスクトップ" 別名 = Application.InputBox(prompt:="入力例.12345", _ Title:=" ファイル名を入力して下さい", Type:=2) 別名 = パス & "\" & 別名 & ".xls" Sheets("シート名").Copy ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close End Sub

その他の回答 (2)

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

>ボタン一つで自動的に この意味はどういうこと。ボタンのクリックをキッカケにプログラムを走らすのか。 Googleででも「VBA CommandButton Click」で照会すること。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_130_02.html >自動保存 これもあいまい。 人手の操作を経すに、という意味か。 保存するタイミングはどうする。質問のコードでは、質問のコードを実行するとき、となる。 これをボタンをクリックしたとき、などにしたいのか。簡単だが。 >特定のフォルダーに保存するマクロ この点に主眼があるのか。 フォルダ指定をどのようにさせたいのか。 (1)INPUTBOXなどで応答指定(質問の場合もこれ) (2)ファイル指定のダイアロウグで選択で行わせる) (3)プログラムの中に書き込んで固定指定、 (4)その他 など、在りそうだが、どれかあいまいだ ーー 上記(1)の方法で、ファイル名を含めた「パス」も指定の対象にすれば仕舞いのようでも在る。 ーー 質問表現を丁寧に(その元になる質問者の思考をしっかりと)すること。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

ANo1です。 ひょとして保存先ホルダーを自分で選びたいということだったのでしょうか? それなら Sub データ保存02() Sheets("シート名").Copy If Application.Dialogs(xlDialogSaveAs).Show Then ActiveWorkbook.Close End If End Sub でできます。

関連するQ&A

  • 保存場所を指定する(VBA)

    エクセルでVBAを使用し、業務書類を作っていますが、 書類を保存する際に、指定場所に自動で保存させたいと思っています。 現在使用しているものは、下記の通りですが、 これでは、元ファイルと同じ場所に保存されてしまうので 元ファイルを削除されてしまうなどの恐れがあります。 そこで、フォルダを作りそのフォルダに自動的に保存したいと 思っています。フォルダは元ファイルがある下に作りたいと思います。 宜しくお願いします。 下記現在のものです。 Sub 保存() タイトル = "確認" メッセージ = "ファイルを保存します。よろしいですか?" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then Sheets("新築").Select パス = ActiveWorkbook.Path 別名 = Application.InputBox(prompt:="拡張子(.xls)は不要です", _ Title:="保存用のブック名を入力してください", Type:=2) ' 別名 = パス & "\" & 別名 & ".xls" Sheets(Array("見積新築")).Copy ActiveWindow.DisplayWorkbookTabs = False ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close MsgBox "書類を保存しました。", vbInformation, "保存完了" End If End Sub

  • エクセルマクロで保存をする際の質問

    エクセル2003をXPで使っています。 あるシートに入力をしたあと、セルA1(変数を"number"としています)に入力させたデータをファイル名にして特定のフォルダに保存させています。 具体的なことは下記の通りです。 ActiveWorkbook.SaveAs Filename:="C:\入力済みデータ\" & number & ".xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False ActiveWorkbook.Close ところが、C:\入力済みデータフォルダに同じ名前のファイルが存在していたとき、 "○○というデータがすでに存在します。置き換えますか?"と聞かれますよね。 そのときに"いいえ"を選択するとエラーになります。 "いいえ"を選択したとき、別名をつけられるようにするにはどうしたらいいでしょうか。 よろしくご教示ください。お願いいたします。

  • 新しいブックの保存先について

    はじめてこちらに質問させていただいております。 私は、Excelについて全くの素人ながら会社の月次資料の集計作業などに従事することになりました。現状、マクロの走った演算結果を下記"閲覧ファイル(xx月分)に反映させているのですが、このシートを新しいブックとして保存したいと思っています。しかし、下記マクロの意味がほとんどわからないままコピー・ペーストして使っているため、保存先が作業ファイルしか指定出来ずに困っております。ActiveWorkbook.Passと入れなければ規定のカレントフォルダに保存されてしまうという事だけはかろうじて分かりました。 保存先の指定をどのようにしたらいいのか(デスクトップなりサーバーの特定のフォルダ内)ご指導いただけましたら幸いです。 全くの素人で、真に申し訳ございませんが宜しくお願いいたします。 ------------------------------------------------------------------------------ Sub Macro1() Sheets("閲覧ファイル(xx月分").Select Pass = ActiveWorkbook.Path Rename = Application.InputBox(prompt:="保存名を入力して下さい",_ Title:=" 新しいブック", Type:=2) Rename = Pass & "\" & Rename & ".xls" Sheets("閲覧ファイル(xx月分").Copy ActiveWorkbook.SaveAs Filename:=Rename    ActiveWorkbook.CloseEnd Sub

  • エクセルマクロの別名保存時のパス区切り文字

    エクセルマクロでセル内のパスとファイル名を繋げて別名保存したいと思ってます。 「/」と「\」のどちらを入力されるか分からないため 繋げたパスが「\\パソコン名/共有フォルダ名\ファイル名.xls」となるように入力した所"1004"のエラーが出ました。 デバッグした所 「ActiveWorkbook.SaveAs filename:=繋げたパス」 で落ちてました。 マクロを使わずに別名保存で「/」と「\」を使用した場合は保存されたのですが、なぜマクロだとエラーになってしまうのでしょうか? 入力されたパスの区切り文字をすべて「\」へ変更する処理を加えたので急ぎではないですが、どなたかご教授下さい。

  • 同じフォルダーに保存したい。

    報告書.xlsを一部加工後に実行するVBマクロで教えてください。同じフォルダー内で報告書.xlsを上書き保存しさらに4個のsheet(報告書、詳細、依頼書、関連写真)の内、2個のsheet(依頼書、関連写真)を削除した後にsheet(報告書)のセル"Z1"の名前で保存すべく作成したのですが(Z1).xlsが同じフォルダーに作成できません。マイドキュメントに出来てしまいます。 Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 Application.DisplayAlerts = False strFileName = "報告書" ThisWorkbook.SaveAs strFilePath & strFileName Sheets("関連写真").Select ActiveWindow.SelectedSheets.Delete Sheets("依頼書").Select ActiveWindow.SelectedSheets.Delete Sheets("報告書").Select strFilePath = ThisWorkbook.Path & "\" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveSheet.Range("z1").Value End Sub

  • 他のPCでも保存できるパス

    エクセルシート1~5のうち 5シート(シート名:一覧)だけを保存したいので マクロを作りました。 Sub 一覧保存() ' ' 一覧保存 Macro ' ' Sheets("一覧").Select Sheets("一覧").Copy ActiveWorkbook.SaveAs Filename:="C:\Users\●●●\Desktop\データー\一覧.xlsm" _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub これを使って自分のPCでは保存出来るのですが 他のPCに持って行くと●●●(PC名)部分が違うので保存が出来ません。 これを他のPCでも使えるように書き換えたいのです。 マクロボタンでどのPCにも対応できるマクロを書きたいのですが。。 あと保存名を同時に自動でカウント?(日付や連番など)できるようにするにはどうすればいいでしょうか。 よろしくお願いします。

  • CSV保存マクロ 日付が逆になり困っています。

    マクロに詳しい方、お願いいたします。 エクセルのシートで2018/1/21とセルに記載したものを 下記マクロ(標準モジュールにコード記載)して、CSVで保存しています。 実行後CSVを開くと、21/1/2018になって逆になります。 調べてもわかりません。よろしくお願いします。 Sub Macro1() Application.DisplayAlerts = False main_f = ActiveWindow.Caption out_pass = ActiveWorkbook.Path & "\" Out_name = ActiveSheet.Name Sheets(Out_name).Select Sheets(Out_name).Copy ActiveWorkbook.SaveAs Filename:= _ out_pass & Out_name & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWindow.Close Application.DisplayAlerts = True End Sub

  • エクセル:シートを保存するマクロ

    あるエクセルファイルFile.xls内に、4つのシートSheet1,Sheet2,Sheet3,Sheet4があるとして、 4つのシートを個別にcsvファイルとして保存するようなマクロを作りたいです。 ▼ソースです  (ここまでのコードで、Pathに保存先のディレクトリ名を取得する部分があるとお考えください)  Filename = "Sheet1" '保存するシート名は、Sheet1~4 GoSub Save1 Filename = "Sheet2" GoSub Save1 Filename = "Sheet3" GoSub Save1 Filename = "Sheet4" GoSub Save1 '保存完了後は、File.xls内Sheet1のCells(4, 1)にカーソルを配置。 Sheets("Sheet1").Select Cells(4, 1).Select Exit Sub Save1: Sheets(Filename).Select fname = Path & "\" & Filename & ".csv" ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, CreateBackup:=False Return End Sub 以上のソースで実行すると、 指定したディレクトリにsheet1.csv、sheet2.csv、sheet3.csv、sheet4.csvの4ファイルができます。 ここまでは問題ないのですが、 マクロを実行後、Sheet4.csv(最後に保存したファイル)が開かれた状態になってしまいます。 しかも、ファイル名はSheet4.csvなのに、シートSheet1~4を持っている状態です。 普通にSheet4.csvファイルを開くと、シートはSheet4しかありません。 状態が伝わるでしょうか? File.xlsのマクロを実行しているので、実行完了後もFile.xlsを開いておきたいのですが、 どのような記述を加えればよいでしょうか? マクロ(VBA)は使い始めたばかりなので説明されても理解できないかもしれませんが、 できればよろしくお願いいたします。

  • エクセル マクロでシートをデスクトップに保存する

    ファイルにある複数のシートの中から、Bシートだけを抜き出してデスクトップに保存するマクロがわかりません。 他のサイトで以下のVBAがあったので参考にしたのですが Cドライブのマイドキュメントに保存されます。 デスクトップに直接保存したいです。 Sub シートコピーR() ' 1.保存したいシートをシートコピーする。 Sheets("Sheet1").Copy ' 2.アクティブシートのセル全体に対して、コピー&値のみ貼り付けをする。 ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 'ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' 3.アクティブブックを保存する。 ActiveWorkbook.SaveAs FileName:="C:\ファイル名.xls" End Sub 教えてください。

  • ファイル すべてのシート 値だけ 別のシート

    ファイルAのすべてのシートに関数式が含まれています。 このシートを別フォルダーに分割し書き出すことは出来たのですが 関数式まで貼り付けられます。 これを値のみにしたいのですがご教授御願いします。 マクロはこれです。 Sub シート分割() Const path As String = "C:¥" Dim bk As Workbook Set bk = ActiveWorkbook Dim st As Worksheet For Each st In bk.Sheets Workbooks.Add st.Copy Before:=ActiveWorkbook.Sheets(1) ActiveWorkbook.SaveAs path & st.Name & ".xls" ActiveWorkbook.Close Next End Sub

専門家に質問してみよう