• ベストアンサー

エクセル・マクロ(VBA)で、指定範囲を保存したい。

エクセルマクロ(VBA)で、セル範囲を指定してその指定した部分だけをファイルに保存したいのですが、どのようにしたらよろしいのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

私が考えていたのと、ちょっと趣旨がちがっちゃったですね。 #1 のレスについていたのをちょっと付け足して、変更してみました。 Sub test_1() Worksheets("sheet1").Range("A1:F12").Copy With Workbooks.Add  ActiveSheet.Paste  Application.DisplayAlerts = False '同じ名前があった時上書き  ActiveWorkbook.SaveAs Filename:= _   "C:\Documents and Settings\システム\" & Date$ & ".xls" _  , FileFormat:=xlNormal _  , Password:="00000000" _  , WriteResPassword:="11111111" _  , ReadOnlyRecommended:=True _  , CreateBackup:=False  Application.DisplayAlerts = True  .Close False '閉じる End With End Sub '***************************************** 以下は、私が考えたものです。参考にしてみてください。 つまり、同名のファイルがあった時の処理を考えてみました。 少しは、参考になるかもね。(^^; Sub Selection_CopySave()  Dim Rng As Range  Dim rtn As Boolean  Set Rng = Selection 'マウスで複数のセルを選択してください。  If Rng.Count = 1 Then Exit Sub  Rng.Copy  With Workbooks.Add   ActiveSheet.Paste   Do    rtn = FileCheck   Loop While rtn = True   .Close False '閉じる  End With  Application.CutCopyMode = True End Sub Private Function FileCheck() As Boolean Dim Fname As String Dim rtn As Integer Dim flg As Boolean   flg = False   Fname = Application.GetSaveAsFilename(Date$, "エクセルブック (*.xls), *.xls")   If Fname <> "False" Then    If Dir(Fname) = "" Then     Application.DisplayAlerts = False     ActiveWorkbook.SaveAs Fname _      , FileFormat:=xlNormal _      , Password:="00000000" _      , WriteResPassword:="11111111" _      , ReadOnlyRecommended:=True _      , CreateBackup:=False     Application.DisplayAlerts = True     Else     rtn = MsgBox("同名のファイルがあります。上書きしますか?", vbYesNoCancel)     If rtn = vbYes Then      ActiveWorkbook.Save     ElseIf rtn = vbNo Then      flg = True     ElseIf rtn = vbCancel Then      FileCheck = False      Exit Function     End If    End If   End If   FileCheck = flg End Function

yoppy_mmn
質問者

お礼

たった今、拝見したばかりですので、よく見させていただきます。 取り急ぎご挨拶まで。 VBAは、初めてで、これからいろいろと作成していきたいものがありますので、参考に致します。 また、お世話になることがあると思いますが、よろしくお願いいたします。

その他の回答 (4)

  • at121
  • ベストアンサー率41% (85/206)
回答No.5

sheet2 sheet3 がつくのがいやな場合 保存先パスは定時・定型業務に応じて固定 Sub 選択範囲を新規Book_YYYYMMDDに保存() ' 保存先パス = ".\" '保存先パス = "C:\Documents and Settings\システム\" 保存新規Book名 = Format(Now, "データYYYYMMDD") & ".xls" 保存シート名 = Date$ If Dir(保存先パス & 保存新規Book名) <> "" Then If MsgBox(保存新規Book名 & vbCrLf & "既存のFileを削除・新規上書きします。 ", vbOKCancel) = vbOK Then Kill (保存先パス & 保存新規Book名) Else Exit Sub End If End If Selection.Copy Sheets.Add before:=Sheets(1) ActiveSheet.Paste Application.CutCopyMode = False Sheets(1).Move Sheets(1).Name = 保存シート名 ActiveWorkbook.SaveAs Filename:=保存先パス & 保存新規Book名 ActiveWindow.Close End Sub

yoppy_mmn
質問者

お礼

回答いただきまして、大変ありがとうございました。 素人同然の小職に回答下さいまして感謝しております。 今後も、皆様にご迷惑をお掛けすることもあるとおもいますが、よろしくお願いいたします。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#1です。 あらら、、出遅れましたね。ほとんどWendy02さんと同じですが、、 違いは、 Selection.Copy Worksheets("sheet1").Range("A1:F12").Copy ですかね。 Wendy02さんがコメントされてますが、私も同名ファイルがあった場合の処理を考えた方が良いと思います。 Sub Sample()   '選択範囲コピー   Selection.Copy   '新規ブックの追加   Set WB = Workbooks.Add     '一応新規ブックをアクティブにする     WB.Activate     'アクティブシートに貼り付け     ActiveSheet.Paste     '保存する     WB.SaveAs _       Filename:="C:\Documents and Settings\システム\" & Date$ & ".xls", _       FileFormat:=xlNormal, _       Password:="00000000", _       WriteResPassword:="11111111", _       ReadOnlyRecommended:=True, _       CreateBackup:=False   '変数の解放   Set WB = Nothing   Application.CutCopyMode = False End Sub

yoppy_mmn
質問者

お礼

たった今、拝見したばかりですので、これからよく見させていただきます。 VBAは、初めてで、これからいろいろと作成していきたいものがありますので、参考に致します。 小職のような者のために、皆様に助けていただきたい変換謝しております。 また、お世話になることがあると思いますが、よろしくお願いいたします。

回答No.2

データをどのように利用することを考えておられるのかわかりませんが、 マクロでWorksheetの部分データをCSV形式又はTXT形式で書出す、それを読み込むことが出来ます。 Sampleを呈示することも出来ますが、利用方法を教えて下さい。 下記にVBAに関するサイトの一部をあげておきます。 特に参考URLのサイトにはご希望に近い内容が含まれているようです。ご参考に。 http://www.voicechatjapan.com/excelvba/ http://www.max.hi-ho.ne.jp/~happy/YNxv8316.html http://www2.moug.net/app/bbs/thread.php?cat=acm_v http://homepage3.nifty.com/bear/

参考URL:
http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBASAMP/
yoppy_mmn
質問者

お礼

ありがとうございました。 今後、参考とさせていただきます。 VBAは、初めてで、これからいろいろと作成していきたいものがありますので、参考に致します。 また、お世話になることがあると思いますが、よろしくお願いいたします。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 ご質問の意味がわかりません。 >ファイルに保存したい どのように保存するのですか?新規ブック?テキスト? >セル範囲を指定してその指定した部分だけ 連続しない(とびとびの)セルが選択されている場合は、どうするのですか? もっと具体的に「やりたいこと」を示していただかないと回答できないと思いますよ。 まず、「やりたいこと」を「新しいマクロの記録」で記録してみたらどうですか? その上で、 ・記録されたコード ・具体的にやりたいこと ・マクロの記録で作成されたマクロでは上手く機能しない部分 を補足して下さい。

yoppy_mmn
質問者

補足

済みませんでした。 ワークシート内の指定した範囲内だけを新規ブックとして保存したいのです。なお、連続しないセルは無い状態です。 マクロ記録を行ってみたのですが、ブック全体を保存してしまい、指定した部分だけを保存するという方法がわかりませんでした。 記録したマクロは、以下の通りです。 With Worksheets("sheet1")  .Range.Cells("A1:F12").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\システム\("&Date$   & ").xls" _  , FileFormat:=xlNormal  , Password:="00000000"  , WriteResPassword:="11111111"  , ReadOnlyRecommended:=True  , CreateBackup:=False End With 『ActiveWorkbook.SaveAs ・・・』の部分を『ActiveCells.saveAs ・・・』に変更してみたのですが、うまく動きませんでした。

関連するQ&A

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • Excel VBA 指定したセル範囲のみ保存

    指定したセル範囲のみをエクセルファイル形式で保存したいのですが、わかりません。御教授下さい。よろしくお願いします。

  • Excelで指定範囲だけを(.prn)保存する

    Excelで(.prn)(スペース区切りテキストファイル)保存する際、指定範囲だけを保存する方法はないでしょうか?。もちろん、余計な範囲を削除する方法では、他のセル参照などマクロが狂ってくるので、そんな単純な方法ではありません。この機能はロータス123にあった機能で、Excelで色々と試しているのですが、どなたかご存じでしたらご教示をよろしくお願いします。

  • Excel2007、pdfで保存範囲を指定する方法

    VBAでの質問です。 Excel2007の名前を付けて保存のpdfでExcelファイルブック全体を保存したいのですが、 各シートの余白に計算用のセルが多数存在しており、そのまま保存を行うと それもpdf化されてしまいます。 余白を除いた部分をきれいにまとめたものを、配布用のpdfにしたいのですが VBAでpdfの保存範囲を指定することは可能でしょうか? 印刷範囲の指定は聞いたことがありますが、保存範囲の指定は聞いたことがありません。 ご存知の方がいらっしゃいましたら、ご教授お願い致します。

  • EXCEL VBA で指定した範囲に入力があるかどうか?

    こんばんは!! EXCEL VBAを使い出して、初日からつまずいてます・・・。 みなさん、アドバイスよろしくお願いします!! で、早速、質問なんですけど、 指定したセル範囲のいずれかに入力があるか調べたいんですけど、それができるプロパティとかってあるんでしょうか? 地道にセル毎にチェックするしかないいんでしょうか?? たとえば、範囲をA1:H1として、その範囲内のセルに何か入力があったらTrueが返ってくるとか・・・。 もし、知ってる方がいらっしゃたら教えてください!! よろしくお願いします!!!!!

  • Excel VBAでファイルを開くとマクロを実行させるにはどのように記

    Excel VBAでファイルを開くとマクロを実行させるにはどのように記述すればいいのでしょうか? 例えば、ファイルを開くと指定のセルの削除させるような。 よろしくお願いします。

  • エクセル VBA 範囲指定方法

    エクセルVBA初心者です。 以下の範囲指定について教えてください。 一つの表のK列の一番下のセル(不定)を選択→Range("K65536").End(xlUp).Select その選択されたセルからA3(固定)まで範囲を選択したいのですが、不定セル:固定セル の範囲指定方法が分かりません。 よろしくお願いいたします。

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • 《エクセル》 マクロ-セルの範囲指定の式

    いつもお世話になります。 2つお聞きしたいのですが、エクセルで、 ・「A列のデータのあるセル範囲のみを指定する」と、 ・「A列のデータのあるセル範囲の、隣(B列)のセルを指定する」 というマクロの式はどのように書けば良いのでしょうか。

  • EXCEL VBAでのセル高の範囲指定コピーについて

    いつも活用させて頂いております。 ExcelのVBAで、範囲指定したセルのコピーを行い、コピー先のセルに コピー元のセルの高さをコピーさせるロジックを組みました。 始めは、範囲指定してセル高もコピーしようとしたのですが、 上手く行かなかったので、現在は、ループさせて1行ずつ行っています。 できれば、範囲指定して一括で行いたいのですが、 そのような事は可能なのでしょうか? ご教授願います。

専門家に質問してみよう