- ベストアンサー
エクセル:
エクセル: 今、エクセルに一覧があります。 Ex: 1 2 3 4 一覧からセルにある値の名前の別エクセルを作成したいです。 Ex: 1.xls 2.xls 3.xls 4.xls よろしくお願いいたします。
- みんなの回答 (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
お礼
私はVBAの知識はほとんどなくて、要件を詳細にかけなくて、すみません。 非常に親切でわかりやすいをいただき、説明ありがとうございます。 これから、VBAについていろいろ勉強していきます。 本当に助かります。 感謝しています。