• ベストアンサー

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/17068)
回答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

  • エクセルファイルをフロッピーに保存するマクロで教えて下さい

    今、フロッピーにファイルを保存する為のマクロを創っているのですが ワイルドカードの使い方を教えて下さい ここから***** Sub フロッピー保存() ' ' Dim fNAME As String fNAME = ActiveWorkbook.Name 'アクティブなブックのファイル名を取得 'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) If fNAME = "Book*" Then fNAME = Application.InputBox(prompt:="新規ファイルですね。ファイル名を入力して下さい", _          Title:="新規ファイル入力", Type:=2) Else ActiveWorkbook.Save End If '取得したファイル名でフロッピーディスクに保存 ActiveWorkbook.SaveAs Filename:="A:\"&fNAME, _    FileFormat:=xlNormal, _ Password:="",WriteResPassword:="",ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub ここまで***** >>'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) >> If fNAME = "Book*" Then この、If fNAME = "Book*" Then が有効に働いていないみたいなんです。 「ワイルドカード・・・* や ? はマクロではどの様な書式が正しいのでしょう それと、エラー処理なんですが InputBoxメソッドでキャンセルやファイル名を入力しないで「OK]が押された 場合の処理、又フロッピーが挿入されていなかった場合などの エラー処理の対処法を教えて下さい

  • VBAでエクセル保存方法

    Excel2003のVBAで保存処理を下記のように行います。  Book.SaveAs ("ファイル名") しかし問題があり、ファイルを開くとVBAで記入更新したシートが 表れず別のシートが最初に表示されます。 一番最後に更新したシートを開いたときに表示される方法は ありますか? よろしくお願いいたします。

  • シンクライアントでのVBAによるファイル保存

    ExcelのテンプレートファイルにVBAマクロを記述しています。 VBAにより新しいブックを開き、データを作り込んだ後、テンプレートファイルが置かれているフォルダに保存するマクロを作成しました。 リッチクライアント上では問題なく動くのですが、シンクライアント上で実行すると、  ActiveWorkbook.SaveAs Filename:='フルパスのファイル名'  ※フルパスのファイル名は、"C:\folder\file.xlsx"というような形式になっています。 のところでエラーになってしまいます。 パス付きのファイル名について、作法があるようでしたらお教えいただけますか。 よろしくお願い致します。

  • 重くて開かないEXCELファイルを何とかして開きたい

    手元にあるEXCELファイルが非常に重く、 開いてる途中でCPU使用率が100%になったまま固まってしまい、 開くことができません。 そのブックの中には2枚のシートが含まれており、 そのうち1枚のどこでもいいので1行のデータが見たいのです。 (列数はかなり多めです) ただ、結果数字ではなく計算式が欲しいので、 CSVに変換するソフトでは使えません。 フリーの桔梗というソフトは凍ってしまいました。 Toraフィルターというソフトだと凍らずに、 項目名までは出てくるのですが、 null値が含まれているというエラーが出てしまいます。 どうしても急いで開きたいのですが、 なんとか開く(もしくはデータを抽出する)方法はないでしょうか。

  • Access-VBAでExcelファイルを作成する。

    こんにちわお世話になります。 「Excelにエクスポート」ボタンをクリックすると、Inputboxか何かが表示されて、Pathやファイル名やシート名を入力し、「実行」ボタンを押すと、新規にExcelのBookを、そのPath、ファイル名、シート名で作成する。その後、そのシートにデータを書き込むという作業をしたいのです。 AccessのデータをExcelの任意のシートを開いて書き込むという部分のVBAコードはわかりますので、新規Book作成部分のコードがわかるかたお願いします。 Office97を使用しています。

  • ExcelのVBAでブックの保存

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

  • エクセルのシートのデータをVBAを使ってCVS形式で保存したいのですが、文字化けしないようにするにはどうしたらいいでしょうか?

    エクセルのシートのデータをVBAを使ってCVS形式で保存したいのですが、文字化けしてしまいます。手動で「名前を付けて保存」すると文字化けしません。文字化けしないようにするにはどうしたらいいでしょうか? どなたかお教えいただきたく、よろしくお願いします。 ---------------------------------------------------------------------- Sub test5() Dim aaa As String Dim fname As Variant aaa = Format(Now, "YYMMDD") fname = Application.GetSaveAsFilename(InitialFileName:=aaa & ".csv", fileFilter:="csvファイル(*.csv), *.csv") If fname = False Then Exit Sub '保存 Worksheets("sheet1").SaveAs fname End Sub

  • (VBA) 保存できない

    指定ディレクトリー(TurgetFolder)に保存しようとして  下記のコードを利用していますが、エラー(1004)が出ました。  添付画像参照下さい(丸数字有り) ------------------------- 'テキストデータにしたいシートを新しいブックとして作成し、そちらからテキストファイルを作成する Ws2.Copy ActiveWorkbook.SaveAs Filename:=TurgetFolder & FName & ".txt", FileFormat:=xlText ---------------------------- ①、②、④はエラー原因では無かった。 原因は、③で  フォルダー名に [ ] (左カッコ、 右カッコ)  を利用した事でした。  でもフォルダー名及びファイル名に同じ [ ]  があっても読み取り時は問題なく処理されます。 使用してはいけない文字があっても   他に保存する方法ありますか ? 例えば、  事前にダメ文字を書き換えて保存するとか ? EXCELの仕様で難しいのであれば諦めます。

  • ExcelVBAでテキスト保存

    ExcelVBAを使って、ワークシートをテキストファイルに保存しようとしています。 CSV形式で保存するときは、   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".csv", _     FileFormat:=xlCSV, CreateBackup:=False でtest.csvに保存できますが、 単純にテキストファイルとして保存したいときに   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".txt", _     FileFormat:=xlText, CreateBackup:=False としても、実行時に下記のエラーになってしまいます。   実行時エラー '1004'   アプリケーション定義またはオブジェクト定義のエラーです。 どうしたらよいのでしょうか? また、CSVで保存した時も開いているファイルがtest.csvに変わってしまいますが、できれば、開いているファイルは元のファイルのままでシートだけを保存するにはSaveAsメソッドではなく、他のメソッドを使うのでしょうか? (hogehoge.xlsのtestシートを保存してもhogehoge.xlsが開いたままにしたい) 以上、宜しくお願いします。

  • ExcelVBA シートコピーの処理

    シート1、シート2、シート3、シート4があり シート1、シート2、シート3を『新しいブック』へコピーを行い保存をする。 保存の際にシート4のA列にファイル名がありシート3のA1へファイル名を入れ 保存の際にファイル名をシート4のファイル名似て保存を行う。 シート4のA列に入力のある行の回数だけ繰り返す。 また、保存の際にファイル名と同じフォルダを作成しそこへ保存を行う。 以上の処理を100件以上繰り返す必要がありうまくいかず悩んでおります。 ご教授いただけましたらよろしくお願いいたします。

このQ&Aのポイント
  • GI-30Mを買うつもりで、間違って390Mのインクボトルを購入してしまいました。中身が同じであれば、うまく移し替えて使おうと思いますが、可能でしょうか?
  • 誤って390Mのインクボトルを購入してしまいましたが、GI-30Mと中身が同じであれば、移し替えて使用できるのでしょうか?
  • 間違って390Mのインクボトルを購入しました。同じ中身のGI-30Mに移し替えて使用することはできるのでしょうか?
回答を見る

専門家に質問してみよう