- ベストアンサー
エクセル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
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 これで、どうですか? Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value & "06月売上リスト"
その他の回答 (7)
- pkh4989
- ベストアンサー率62% (162/260)
お早うございます。 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
お礼
いろいろありがとうございました。なぜか私のパソコン以外ので試したところできました。新たな技まで教えていただきありがとうございます。
- ka_na_de
- ベストアンサー率56% (162/286)
#2です。 FileFormat(ファイルを保存するときのファイル形式)は省略可能です。 新しいファイルでは、現在使用されている Excel のバージョンでのファイル形式が既定のファイル形式となります。 参考までに。
- vvooo
- ベストアンサー率33% (3/9)
下記コードでは保存できます。 Sub Test() Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & _ ms.Range("S2").Value & "06月売上リスト" & ".xls" End Sub
お礼
このコードでできました。なぜか私のパソコン以外ので試したところできました。お騒がせいたしました。ありがとうございました。
- vvooo
- ベストアンサー率33% (3/9)
コードが小出しなのでよく分りませんが 拡張子が抜けているのではないですか? 最後に ・・・& ".xls" が必要なのでは?
補足
ありがとうございます。 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ms.Range("S2").Value & "06月売上リスト" & ".xls" としてみましたが、同じように「オブジェクト変数またはWithブロック変数が設定されていません」となります。 Dim ms As Worksheet Set ms = ThisWorkbook.Worksheets("メイン") と定義しているのですが、ここがきちんと処理されてないんでしょうか?
- vvooo
- ベストアンサー率33% (3/9)
Worksheets("ms") ↓ Worksheets(ms) では?
補足
こんばんは。やってみたところ「型が一致しません」となりました。 ひとつ思ったのですが、関係あるのかなぁ? ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" ~ としていて、 その時点でアクティブになっているブックは、新規にコピーしたブック(仮に「Book1」)であり、変数をmsとしているブックと違いますよね? それって関係ないでしょうか?
- ka_na_de
- ベストアンサー率56% (162/286)
質問は文字列の結合ということなので、以下でどうでしょうか? ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Worksheets("ms").Range("S2").Value & "06月売上リスト"
補足
ありがとうございました。やってみましたが、エラーになりました。 「インデックスが有効範囲にありません」となりました。 変数 msは、 Dim ms As Wrksheet Set ms = ThisWorkbook.Worksheets("メイン") としています。これには関係してきますか?
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 以下のように変更してみてください。 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Worksheets("ms").Range("S2").Value
補足
ありがとうございました。 今回は、たとえば S2に2007年 とあるとして、 「2007年06月売上リスト」 とブックを作成できるようにしたいと思っています。
お礼
いろいろありがとうございました。できました!なぜか私のパソコン以外ので試したところできました。どうしてかわかりませんが。。。 お騒がせいたしました。