• ベストアンサー

エクセル:

エクセル: 今、エクセルに一覧があります。 Ex: 1 2 3 4 一覧からセルにある値の名前の別エクセルを作成したいです。 Ex: 1.xls 2.xls 3.xls 4.xls よろしくお願いいたします。  

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

  • ベストアンサー
回答No.1

Excel の VBA ですよね? どこまでやれてるのかは言ってくれないんですか? VBA のコードをどこに書けばいいか知っているのか。 一覧を上から下までループしながらセルの値を読み取るコードは書けるのか。 読み取ったセル値に ".xls" を付け足した文字列を生成することはできるのか。 新規ブックを生成することはできるのか。 開いているブックに名前を付けて任意の場所に保存する事はできるのか。 上記の事ができればお望みのものは完成します。 下記コードでは一通りのことができるが、上書き保存時にはダイアログが表示されてしまう。 先にファイルの存在有無を確認して、保存先に既に存在する場合は削除するって処理も考えられる。 ただし自分や他人に開かれているファイルは削除できないので何らかの回避コードも必要になるかもしれない。 Sub CreateXlsFile() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") ' 保存先のパス (このファイルと同じ場所) Dim parentPath As String parentPath = ThisWorkbook.Path ' ファイル名一覧が書いてあるシートを参照 Dim dataSheet As Worksheet Set dataSheet = ThisWorkbook.ActiveSheet ' 新しいワークブック オブジェクト Dim newBook As Workbook Dim i As Long i = 1 ' ファイル名一覧シートのセル値がなくなるまでループ Do Until dataSheet.Cells(i, 1).Value = "" ' 新規ブックを作成 Set newBook = Application.Workbooks.Add ' セルからファイル名のもとを取得 Dim newBookName As String newBookName = dataSheet.Cells(i, 1).Value & ".xls" ' 新規ブックに名前を付けて保存 newBook.SaveAs fso.BuildPath(parentPath, newBookName) ' 保存したブックを閉じる newBook.Close Set newBook = Nothing ' 次の行に進む i = i + 1 Loop End Sub

shenyanhe
質問者

お礼

私はVBAの知識はほとんどなくて、要件を詳細にかけなくて、すみません。 非常に親切でわかりやすいをいただき、説明ありがとうございます。 これから、VBAについていろいろ勉強していきます。 本当に助かります。 感謝しています。

関連するQ&A

専門家に質問してみよう