• ベストアンサー

ExcelVBAを使ったファイルの保存について

ExcelVBAを使ってファイルを保存するときの、ファイル名のつけ方について教えてください。 一つのBOOKの中に複数のシートがあり、各々のシートには行数200程度、列数5程度のデーターが入っています。 このデーターを上から10行取り出して別の新規ファイルとして保存、更にその下10行を取り出して別のファイルとして保存、・・・これを5回繰り返す作業をVBAを利用して行っています。 そのときファイル名もVBAを使って付けたいのですが、やり方が良くわかりません。 もう少し具体的に書きます。 例えばシート名が「soft」だったとしたら、最初の10行を取り出したファイル名は「soft1」次の10行分のファイル名は「soft2」というようにシート名に連番を打つような形で新しいファイル名をつけていきたいのです。今は次のような形でInputBoxを開き手入力でファイル名を入れています。 FName = InputBox _ ("ブックを保存します") ActiveWorkbook.SaveAs FName これ以外の、もう少し省力化できる方法があればお教えください。 よろしくお願いいたします。

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

  • ベストアンサー
  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

ループに使っているカウンターをiとすれば、 FName="soft" & i でsoft1やsoft2 といった文字列がFNameにはいりますよ。 こういったのをループ内に入れるとよいと思います。

shishi16
質問者

お礼

見当違いの質問をしてしまい申し訳有りません。 やっと理解できましたし、解決できました。 どうもありがとうございます。

shishi16
質問者

補足

早速ご回答いただきありがとうございます。 一つ質問させてください。 シートが複数ある場合、例えば「soft」「hard」「pda」等の名前がついていた場合、FName="soft"と指定してしまうと、「hard」とか「pda」とかのシートには有効ではなくなってしまうと思うのですがどうでしょうか。

その他の回答 (1)

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

Sub test01() last = Worksheets("sheet1").Range _("a1").CurrentRegion.Rows.Count w = Int(last / 10) + 1 fname1 = Workbooks.Add.Name 'Book2.xls MsgBox fname1 For i = 1 To w Windows("Book1").Activate Worksheets("sheet1").Range(Cells((i - 1) * 10 + 1, 1), Cells(i * 10, 12)).Copy Windows(fname1).Activate Worksheets("sheet1").Range("a1").Select ActiveSheet.Paste Application.CutCopyMode = False fname1 = "soft" & Trim(Str(i)) & ".xls" fname = "c:\My Documents\" & "soft" & Trim(Str(i)) & ".xls" MsgBox fname ActiveWorkbook.SaveAs fname Next i End Sub ファイル名に番号数字を順次付けるのはプログラムではやさしい。 #1のご回答のようでも良いし、上記でも同じです。 むしろウインドウとファイル保存の点が難しかった。 (A)別ウインドウ(X)を開く (B)そのウインドウ(X)のシートに貼りつけ (C)そのウインドウ(X)を名前をつけて保存(soft1.xls) (D)そのウインドウ(X)のシートに貼りつけ (E)そのウインドウ(X)を名前をつけて保存 (soft2.xls)以下繰り返す。 本番では、上記Book1は元のブック名に変えて下さい。

shishi16
質問者

補足

早速ご回答いただきありがとうございます。 内容がすぐに理解できないものですから、下に記入いただいたプロセスを参考にしながら考えさせていただきます。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう