• ベストアンサー

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

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.5

#2です。 これで、どうですか? Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value & "06月売上リスト"

reprogress
質問者

お礼

いろいろありがとうございました。できました!なぜか私のパソコン以外ので試したところできました。どうしてかわかりませんが。。。 お騒がせいたしました。

その他の回答 (7)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.8

お早うございます。 No1です。 文字列「06月売上リスト」をそのまま付けて保存すると、7月になっても同じ「06月売上リスト」として 保存されますので、月は自動設定するようにしました。 Sub ブック保存()   Dim ms As Worksheet   Dim wPath As String   Dim wFlName As String   '   Set ms = ThisWorkbook.Worksheets("メイン")   wPath = ThisWorkbook.Path & "\"   wFlName = ms.Range("S2").Value & Format(Now, "mm月") & "売上リスト"   ActiveWorkbook.SaveAs wPath & wFlName End Sub ちなみに、セル「S2」の「2007年」も、参照する必要はないと思いますが・・・ 以下のようにすれは、良いのでは・・・ Sub ブック保存()   ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Now, "yyyy年mm月") & "売上リスト" End Sub

reprogress
質問者

お礼

いろいろありがとうございました。なぜか私のパソコン以外ので試したところできました。新たな技まで教えていただきありがとうございます。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.7

#2です。 FileFormat(ファイルを保存するときのファイル形式)は省略可能です。 新しいファイルでは、現在使用されている Excel のバージョンでのファイル形式が既定のファイル形式となります。 参考までに。

  • vvooo
  • ベストアンサー率33% (3/9)
回答No.6

下記コードでは保存できます。 Sub Test() Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & _       ms.Range("S2").Value & "06月売上リスト" & ".xls" End Sub

reprogress
質問者

お礼

このコードでできました。なぜか私のパソコン以外ので試したところできました。お騒がせいたしました。ありがとうございました。

  • vvooo
  • ベストアンサー率33% (3/9)
回答No.4

コードが小出しなのでよく分りませんが 拡張子が抜けているのではないですか? 最後に ・・・& ".xls" が必要なのでは?

reprogress
質問者

補足

ありがとうございます。 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value & "06月売上リスト" & ".xls" としてみましたが、同じように「オブジェクト変数またはWithブロック変数が設定されていません」となります。 Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") と定義しているのですが、ここがきちんと処理されてないんでしょうか?

  • vvooo
  • ベストアンサー率33% (3/9)
回答No.3

Worksheets("ms")  ↓ Worksheets(ms) では?

reprogress
質問者

補足

こんばんは。やってみたところ「型が一致しません」となりました。 ひとつ思ったのですが、関係あるのかなぁ? ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" ~ としていて、 その時点でアクティブになっているブックは、新規にコピーしたブック(仮に「Book1」)であり、変数をmsとしているブックと違いますよね? それって関係ないでしょうか?

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

質問は文字列の結合ということなので、以下でどうでしょうか? ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Worksheets("ms").Range("S2").Value & "06月売上リスト"

reprogress
質問者

補足

ありがとうございました。やってみましたが、エラーになりました。 「インデックスが有効範囲にありません」となりました。 変数 msは、 Dim ms As Wrksheet Set ms = ThisWorkbook.Worksheets("メイン") としています。これには関係してきますか?

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんにちは。 以下のように変更してみてください。 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Worksheets("ms").Range("S2").Value

reprogress
質問者

補足

ありがとうございました。 今回は、たとえば S2に2007年 とあるとして、 「2007年06月売上リスト」 とブックを作成できるようにしたいと思っています。

関連するQ&A

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

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

  • VBAでVBAを削除?

    作業中のブックから一枚のシートを以下のSub 別ファイル保存()プロシージャで別のブックとして保存します。それはうまくいったのですが、この元になるシートには Private Sub Worksheet_SelectionChange(ByVal Target As Range) '途中略 End Sub と Private Sub Worksheet_Deactivate() '途中略 End Sub の二つのVBAが記述してあり、これまで一緒に別のブックに入ってしまいます。 これを防ぐにはどのようにすればよいのでしょうか? Sub 別ファイル保存() mypath = ThisWorkbook.Path fn = Sheets("Declarations").Range("H15").Value & Format(Date, "yymmdd") ffn = mypath & "\" & fn & ".xls" Sheets("Declarations").Copy ActiveWorkbook.SaveAs Filename:=ffn ActiveWorkbook.Close End Sub

  • エクセルVBAについて

    <sheet1>フォーマット(コピーするシート) <sheet2>    A列    B列 ○○支店  15 △△支店  10 ××支店  28 ■■支店  25 ◎◎支店  18 sheet1のフォーマットをsheet2のB列の数コピーして、sheet2のA列の支店別に新しいブックへ保存するという作業のマクロを組みたいのですがどのようにしたらよいでしょうか?お教えください。VBAに関しまして初心者で、勉強しているのですがいまいちわかりません。どうぞよろしくお願いします。 今、一つだけコピーして保存するということはできていますが、上記のように全部を自動的にしたいのですが・・・ Sub グラフをコピーして別ブックへ保存() Dim mySheet As Worksheet Set mySheet = ActiveWorkbook.Worksheets("グラフ") mySheet.Copy ActiveWorkbook.SaveAs Filename:="大阪第一" '別名を付けてブックを保存する ActiveWorkbook.Close '別名ブックを閉じる End Sub よろしくお願いします。

  • ExcelのVBAでブックの保存

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

  • アドバイスをお願いします(VBAで・・・)

    Excel2010を使用。 現在".xlsm"ファイルに シートが複数あります。 この中の一つのシートだけを新たなBookにコピーして、 名前を付けて保存する際、Book名を、"L5"セルにある文字列に したいと思い、ググった結果、下記のコードにたどりつきました。 このコードだけだと"close"の時にダイアログがでてくるので、 これに ActiveWorkbook.SaveAs Filename:="フォルダ名" & Range("L5").Value & ".xlsx" をCloseの前に挿入してみたのですが、Range("L5").Value=Empty値となり エラーがでてしまいます。 VBA初心者であるため、改善策がわからず苦戦しております。 申し訳ありませんが、アドバイスいただけないでしょうか? Sub サンプル() Dim sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー Workbooks.Add 'ブック追加 Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け Sheets("Sheet1").Name = "コピー" Application.CutCopyMode = False Application.SheetsInNewWorkbook = sc ActiveWorkbook.Close ThisWorkbook.Activate End Sub 参考URL:http://okwave.jp/qa/q2167570.html ※コピーしたいのは、シートの中のデータ、書式だけなので マクロを必要としません。

  • (VBA)書式が変更されてしまいます

    ↓SaveAsで保存すると書式が変更されてしまいます。 ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close False ネットで↓の回避策を見つけたのですがうまくいきません。 **************************************************************** Sub CSV_Save() 'Sheet1をCSV形式で保存します。 With ActiveWorkbook.Sheets(1) 'A1:A10まで日付あるいは通貨設定のデータが入っているとします。 For Each rng In Range("A1:A10") 'テキスト文字列に変更します。 rng.Value = "'" & rng.Text Next rng End With ActiveWorkbook.SaveAs FileName:="C:\test.csv", FileFormat:=xlCSV End Sub **************************************************************** ご指導お願いします。

  • 別ブックにして保存する際、関数が設定してあるためデータが参照できなくなります。

    別ブックにあるシート(元シート)をコピーしていますが、そのシートは他のシートから関数を入れて参照しているため、別ブックにするとデータがおかしくなります。すべて値にして別ブックにするにはどのようにしたらいいでしょうか? いま書いているコードは次のように書いています。 Sub 保存() Application.ScreenUpdating = False Worksheets("元").Copy ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" _ & Range("A1").Text & "-" & Range("F2").Text & "・" & Range("J2").Text & ".xls" Application.ScreenUpdating = True End Sub

  • エクセル2000 VBA

    ウィンドウズ2000 エクセル2000です。 ブックの中のシートを一枚だけコピーして別のブックに名前を付けて保存したいと思っています。 「'コピーするシートを選ぶ Sheets("概要表").Select '全部選んでコピー Cells.Select Selection.Copy '新しいブックを選ぶ Workbooks.Add Cells.Select '新しいブックにコピーを貼り付ける。 ActiveSheet.Paste Application.CutCopyMode = False」 ここまでは順当に動いています。 質問は アクティブになった新しいブックを保存したいです。 一行から二行目にかけて設定しているファイルネームを、 メッセージボックスを表示させてそこに入力した文字列 をファイルネームとして(現在****)保存したいのですが。 ActiveWorkbook.SaveAs Filename:= _ "**********.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False どなたかよろしくお願いします。

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • VBA 別シートのセルから、文字列を参照するには?

    Excel VBAに於いて 同BOOKのSheet1から、Sheet2の文字列を変数に入れよとするとエラーになります。 何故でしょうか。 また、その対処法を、御教示ください。 Dim objWBK As Workbook Dim objSH As Worksheet Set objWBK = ThisWorkbook Set objSH = objWBK.Sheet2 Dim cnsFILENAME As String cnsFILENAME = objSH.Range("a4")     ← ここで、「オブジェクトは、このプロジェクトでサポートされていません。」と、エラーメッセージが出る。 Sheet2.Range(”A4”)には、文字列を入れてある。 以上、よろしくお願いします。

専門家に質問してみよう