• ベストアンサー

エクセルVBAでセルにある文字を新規ブックのファイル名にして、今あるフォルダに保存するには

教えてください。msというシートのS2に文字列があり、それを新規ブックの名前にして、いま入れているフォルダの中に保存したいのですが、エラーになってしまいます。どこが間違ってますか? ActiveWorkbook.SaveAs (ThisWorkbook.Path & \ ms.Range("S2").Value)

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こうかな? ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value

reprogress
質問者

お礼

ありがとうございました。できました。

関連するQ&A

  • エクセルVBA 文字列の結合で教えてください

    また、お世話になります。 前に下のような質問をさせていただき、うまくできました。今度は、文字列と、変数msとしたシートのS2の文字列 たとえば、 S2に2007年 とあるとして、 「2007年06月売上リスト」 と別ブックに保存したいのですが、先ほどご回答いただいたものを参考にさせていただいても答えをだませんでした。よろしくお願いします。 【前回の質問】 教えてください。msというシートのS2に文字列があり、それを新規ブックの名前にして、いま入れているフォルダの中に保存したいのですが、エラーになってしまいます。どこが間違ってますか? ActiveWorkbook.SaveAs (ThisWorkbook.Path & \ ms.Range("S2").Value) 答え ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value

  • ExcelのVBAでブックの保存

    ExcelのVBAでブックを追加し保存を行っています。 その際、保存は、どこに行うのがよいのですか bookですか。sheetですか。 両方で、SaveAsができまが、使い分けがあるのでしょうか。 どのように使い分けするのでしょうか。 Workbooks.Add ActiveSheet.Name = "サンプル" ActiveSheet.SaveAs OutFileName ActiveWorkbook.SaveAs OutFileName ActiveWorkbook.Close

  • エクセルでセル値をファイル名にして保存しようと思っています。

    エクセルでセル値をファイル名にして保存しようと思っています。 エクセル2003では以下の方法でセル値を取得して保存しています。 'Cell値を取得 strName2 = Sheets("#######").Range("A1").Value strName3 = Sheets("*******").Range("B2").Value 'strName2の値が空の場合、現在のブック名を代入 If strName2 = "" Then strName = ThisWorkbook.Name 'セル値の結合 sName = strName3 + strName2 '名前を付けて保存] ダイアログ ボックスを表示 fName = Application.GetSaveAsFilename(InitialFileName:=sName, fileFilter:="Excel(*.xls), *.xls") 'ファイル名を取得したら保存 If fName <> False Then ActiveWorkbook.SaveAs fName 同様の操作を2007以降で「マクロを有効にして保存」を行いたいのですが、どの様にすればいいのでしょうか? (自動保存では以下の様になる状態の事です。) ActiveWorkbook.SaveAs Filename:="#:\*******.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 2007の時の「'名前を付けて保存] ダイアログ ボックスを表示」の方法が分かりません。 共通の命令文では出来でしょうから、最終的にはエクセルのバージョンを取得して、IFで分岐させようと思っています。 宜しくお願い致します。

  • Excelシート1シートのみを指定フォルダへ保存

    Excelのシート1のみを、本日の日付と名前の入ったセル(I7)を保存する時の名前にして指定したフォルダへ保存したいと思っています。 1、シートは本日の日付+I7セルに入っている値を名前にする。 2、フォルダはCではなくV:\○○\○○\○○\○○\○○\○○\○○に格納 3、シート1以外のシート2、シート3は保存せず閉じる 4、格納後○○に保存しました。と表示 試行錯誤し、下記のように記述してみたのですが、 Sub Macro1() 'Option Explicit Sub Sample() Dim xSheet As Worksheet Dim myFile As String Dim myName As String Set xSheet = ActiveSheet ThisWorkbook.Worksheets("シート名").Copy 'myName = ActiveWorkbook.Worksheets(1).Name 'myFile = ThisWorkbook.Path & "\" & myName & ".xls" myFile = ThisWorkbook.Path & "\" & xSheet.Range("I7").Value & ".xls" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=myFile Application.DisplayAlerts = True ActiveWorkbook.Close End Sub 日付を指定して保存 Sub test()  Dim Filename As String  Filename = Format(Date, "yyyy年mm月dd日") & ".xls"  ActiveWorkbook.SaveAs "C:\My Documents\" & Filename End Sub 日付とI7セルの名前を合せてブックの名前としたい場合どうVBEで記述すればいいのかわからないので詳しい方がおられましたら、 よろしくお願いいたします。 あまり詳しくないので、そのままコピーできるか、○○の部分を指定フォルダ名に変えてください。等の注釈を付けていただけると助かります。

  • エクセルVBA フォルダ内のどんなシート名であっても読み込みたい

    フォルダ内の別ブック(D3で指定)の「情報」シートを読み込んで対象年月日に該当するデータを抽出して別ブックに貼り付けるものなんですが、下のコードではSet ws = wb.Worksheets("情報")と、なっていて、限定しているのですが、これをD3のファイルのどんなシート名であっても読み込みたいのですが、どのようにコードにしたらいいでしょうか?D3で指定するブックには必ずひとつのシートしかありません。 よろしくお願いします。 Sub test_1() Dim wb As Workbook Dim ws As Worksheet Dim ms As Worksheet Dim nb As Workbook Dim r As Long Set ms = ThisWorkbook.Worksheets("メニュー") Set wb = Workbooks.Open(ms.Parent.Path & "\" & ms.Range("D3").Value) Set ws = wb.Worksheets("情報") Set nb = Workbooks.Add With ws .Range("Q1").AutoFilter _ Field:=17, _ Criteria1:=">=" & ms.Range("D5").Text, _ Operator:=xlAnd, _ Criteria2:="<=" & ms.Range("F5").Text With .AutoFilter.Range r = .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count If r = 1 Then MsgBox "抽出対象データ無し。" wb.Close False nb.Close False Set wb = Nothing: Set ws = Nothing Set ms = Nothing: Set nb = Nothing Exit Sub End If .Copy End With End With With nb.Worksheets(1) .Paste With .Range("A1:AG1") .Interior.ColorIndex = 6 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With End sub

  • セルの値をファイル名にするには

    現在下記のマクロを入力しています。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub この時 ファイル名を SHEET1のA1 セルの値を利用してファイル名にするために下記の内容を入れてブックを保存したいと考えています。 上記のマクロが入っていないときは上手く行くのですが下記を追加するにはどうすればいいかご指導いただけませんでしょうか。 宜しく御願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub

  • Excel VBA 別ブックへの登録

    お世話になります。 今お仕事でExcelのVBAで同じフォルダ内の別ブックにデータを書き込みたくて いろいろやって見たのですが、上手くできません。 お力を頂ければと・・・・ <詳細> やりたいこと サーバー内に各個人の見積フォルダがあり、そのフォルダの中に見積作成と見積データの各ファイルが2つあります。 見積作成で作成したデータが登録ボタン(VBA)により見積データに登録されるようにしたい。 今までは同じブック内の別シートへデータを登録していました。 今回は同じフォルダ内の別ファイルへのデータ登録です。 ここまではできました・・・・ Sub 見積データ取得() Dim wSheet As ThisWorkbook Dim idx As String 'データ保存用シートを取得 Workbooks.Open Filename:=ThisWorkbook.Path & "見積データ.xls" Set wSheet = ThisWorkbook.Sheets(見積作成.xls) '空白行を取得 idx = CStr(wSheet.UsedRange.Row(wSheet.UsedRange.Rows.Count).Row + 1) '明細を取得 Dim wRange As Range Set wRange = ThisWorkbook.Sheets("見積作成").Range("B7:Q175") Dim i As Integer For i = 1 To wRange.Rows.Count If wRange.Cells(i, 6).Value <> "" Then '作成日 wSheet.Range("A" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("H2").Value '見積NO wSheet.Range("B" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("H5").Value '見積名 wSheet.Range("C" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("C1").Value '提出先NO wSheet.Range("D" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("B3").Value '提出先 wSheet.Range("E" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("C3").Value '提出先フリガナ wSheet.Range("F" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("Y5").Value '担当者 wSheet.Range("G" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("H1").Value '備考欄 wSheet.Range("S" & idx).Value = ThisWorkbook.Sheets("見積作成").Range("C31").Value 'メーカー名 wSheet.Range("H" & idx).Value = wRange.Cells(i, 10).Value '商品NO wSheet.Range("I" & idx).Value = wRange.Cells(i, 1).Value '商品名 wSheet.Range("J" & idx).Value = wRange.Cells(i, 2).Value '入数 wSheet.Range("K" & idx).Value = wRange.Cells(i, 9).Value '数量 wSheet.Range("L" & idx).Value = wRange.Cells(i, 3).Value 'A価 wSheet.Range("M" & idx).Value = wRange.Cells(i, 5).Value '金額 wSheet.Range("N" & idx).Value = wRange.Cells(i, 6).Value 'C価 wSheet.Range("O" & idx).Value = wRange.Cells(i, 14).Value 'D価 wSheet.Range("P" & idx).Value = wRange.Cells(i, 16).Value '数量 'wSheet.Range("K" & idx).Value idx = CStr(CInt(idx) + 1) End If Next でも上手くいきません・・・ よろしくお願いいたしますm(_ _)m

  • エクセルVBAでブックを相対パスで保存する

    お世話になります。 苦労しながらもエクセルVBAをいじっています。仕事の効率を上げるために、VBAで自動化をしていますが、わからないことがありますので教えてください。 月ごとのシートを作成して、その月に完成させたプロジェクトのリストを入力するブックを作り、各契約者に配りたいと思っています。そのブックには、報告書提出を簡素化できるように、作成したい該当月のシートだけを抽出して決められた名前で保存し、電子メールに添付して送信できる状態にした報告書作成のプログラムを組んでいます。が、抽出されたシートだけのブックを、オリジナルのブックがあるフォルダと同じところに保存したいんです。"名前を付けて保存"をVBAに設定すると、絶対パスが必要な要ですし、もしも指定しなければ作業フォルダ(カレントフォルダ)に保存されるようですが、何とかしてオリジナルのブックと同じフォルダに保管できないものでしょうか。 どうぞよろしくお願いします。 ちなみに、下記が自分なりにやってみたものです。 --------------------------------- Private Sub CommandButton1_Click() Dim myName As String Dim pasu As String With ListBox1 If (.ListIndex = -1) Then MsgBox "提出用報告書を作成するシートを選択してください" Else Worksheets(.List(.ListIndex)).Select pasu = ActiveWorkbook.Path ActiveSheet.Copy myName = ActiveSheet.Name ActiveWorkbook.SaveAs Filename:= _ "" & myName & "" & Application.UserName & ".xls" _ , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Unload UserForm2 End If End With End Sub

  • エクセルのファイルを、A2セルに入っている日付をファイル名として、保存したい。

    エクセルのVBAでファイルに名前を付けて、指定場所に保存したいのですが、過去の質問を読んでもよく分からなかったので教えてください。 A2セルに、2007/07/26 という日付が入っています。 この日付をファイル名として保存したいのですが、日付の形式は20070726とか、070726にしたいです。 ファイルの保存場所パスは、例えば、 S:\AAA\BBB\CCC\DDD というフォルダの中です。 ActiveWorkbook.SaveAs のあとにどのように続ければよいのでしょうか? 丸投げで申し訳ありませんがよろしくお願いいたします。

  • Excel VBA 複数のブックの複数シートから

    Excel VBA 複数のブックの複数シートからデータをコピーするマクロを作成したのですが、 コピー部分が上手く作動せず、訳の解らないデータが貼り付いてしまいます。 ちゃんとファイルは読み込んでいます。 、 VBA超初心者なので、うまく動作しませんでした。 どこが悪いのか教えて頂けないでしょうか。 やりたいことは ・同一フォルダ内に複数のExcelファイルがある ・各ファイル内には複数のシートがあり、シート数はファイル毎にばらばら ・各シートの構造は全て同じ ・VBAを保存してあるExcel(貼り付け用.xls)も同じフォルダに置いて作業します ・JEまとめ.ファイルの原本シートをコピーして、シート名に日付を入れたシートに ・全シート下記のセルのコピー(値、縦横変換)を日付をいれた原本コピーのシートに B1~3セル→A~C B4~5セル→G~H B6セル→J J22~24→D~F をシートの一番最初の行は見出しなので、その後上から順に値の貼付けをしたいのです。 エクセルは2003です。 宜しくお願いいたします。 Sub 集計コピー操作() Dim 集 As Workbook, 開 As Workbook Dim 原 As Worksheet, コピー As Worksheet Dim パス As String, フォルダ As String Dim 日付 As String Dim 紙 As Integer Dim 終 As Integer Dim 数 As Long '書込み行 '日付取得 日付 = Format(Date, "yyyymmdd") '新規シート追加 'シート名チェック Set 集 = ThisWorkbook For Each 原 In 集.Worksheets If 原.Name = 日付 Then 原.Activate Exit For End If Next 原 'シート作成 If 原 Is Nothing Then 'シート名が存在しない場合は作成 Sheets("原本").Copy Before:=Sheets(1) Set 原 = ActiveSheet 原.Name = 日付 Else End If 'Application.ScreenUpdating = False '画面ちらつき防止 'ファイル名設定 Set 集 = ThisWorkbook 'このbookをまとめとする。 パス = ThisWorkbook.Path 'このbookのパスを取得 フォルダ = Dir(パス & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until フォルダ = Empty '全て検索 If フォルダ <> 集.Name Then 'book名がこのbookの名前でなければ 'コピーブックの設定 Set 開 = Workbooks.Open(パス & "\" & フォルダ) '開ファイルとする。 紙 = Worksheets.Count 'シートカウント For 終 = 1 To 紙 数 = 数 + 1 'シートループ処理 For Each コピー In 開.Worksheets With WorksheetFunction 原.Cells(数, "A").Value = コピー.Range("B1").Value 原.Cells(数, "B").Value = コピー.Range("B2").Value 原.Cells(数, "C").Value = コピー.Range("B3").Value 原.Cells(数, "G").Value = コピー.Range("B4").Value 原.Cells(数, "H").Value = コピー.Range("B5").Value 原.Cells(数, "J").Value = コピー.Range("B6").Value 原.Cells(数, "D").Value = コピー.Range("J22").Value 原.Cells(数, "E").Value = コピー.Range("J23").Value 原.Cells(数, "F").Value = コピー.Range("J24").Value End With Next Next 'ブッククローズ処理 開.Close (False) '保存せずに閉じる End If フォルダ = Dir 'フォルダ内の次のbookを検索 Loop Application.ScreenUpdating = True '画面ちらつき防止を解除 MsgBox 紙 & "件のファイルをコピーしました。" End Sub

専門家に質問してみよう