[[20160908164905]] 『ファイル新規作成』(ジャスミン茶) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル新規作成』(ジャスミン茶)

VBAについて質問です。

100個ほどエクセルの新規ファイルを作成しなければいけないのですが、
自動で作成することはできますでしょうか?
ファイル名は、A列に書かれているものを使用したいです。

A列に1-1〜1-100と記入されているとき(この1-1というのは例で使用しているだけなので、実際は関連性のないものになると思われます。)、「C:テスト」に1-1〜1-100という名前の付いたファイルを一括で作成したいです。

よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 こんなことでしょうか。

 Sub Sample()
    Dim bk As Workbook
    Dim c As Range

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set bk = Workbooks.Add

    With ThisWorkbook.Sheets("Sheet1")  '★
        For Each c In .Range("A1", .Range("A" & Rows.Count).End(xlUp))  '★
            bk.SaveAs "c:テスト\" & c.Value & ".xlsx"
        Next
    End With

    Application.DisplayAlerts = True

    bk.Close False

 End Sub

(β) 2016/09/08(木) 17:06


早速ご回答ありがとうございます。

上記の式で求めていた挙動ができました。
ありがとうございます。

すこし私の意見とお願いされた方からの意見と食い違ってしまっていたので、もうひとつ質問させてください。
上記で作成した新規ファイルをB列に記入された各ファイルに保存ということはできますでしょうか?
Sub ファイルパス()
 Dim i As Long

    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    MkDir ThisWorkbook.Path & "\" & Cells(i, 1)
    Cells(i, "B") = ThisWorkbook.Path + Cells(i, 1)
 Next i
End Sub
という式でファイル作成・ファイルパス記入を行いそのファイルパスを見て対応するファイルに新規作成したブックを保存したいです。

1-1ファイルに1-1ブック・・・・・1-100ファイルに1-100ブックということが理想です。

よろしくお願いします。

(ジャスミン茶) 2016/09/08(木) 17:20


 >B列に記入された各ファイルに保存

 各フォルダに保存、の間違い?

 そうなら、

 >MkDir ThisWorkbook.Path & "\" & Cells(i, 1)

 ここで既にフォルダ作成するコードを自分で書いている。なら自分で出来るのでは?

 それとも、このコードもどこかでもらったもので、ファイルとフォルダの区別もつかないのか?

(とおりすがり) 2016/09/08(木) 19:17


 すでにとおりすがりさんから回答がある通りです。
 作成しようとしたフォルダが、すでに存在したら困るなぁということは、ちょっと忘れると、
 すでに、こちらがアップしたコードでブックを作成しているコードの前にフォルダを生成するコードを
 追加すればいいわけです。

 そのフォルダパスですが、ThisWorkbook.Path & "\" & セルの値 でいいのですか?

 また、そちらがアップした、フォルダ作成コードで参照しているフォルダ名が入ったセルはA列ですけど
 そうなんですか? それとも B列の値を使うのですか?

 それと、3行目から始めていますけど、それが正しいのですか?

(β) 2016/09/08(木) 20:31


回答ありがとうございます。

説明が下手ですみません。やりたいことは、A列に記入されている番号(1-1・・・1-100)を使用して
マクロブックがある場所にフォルダを作成、そのフォルダパスをB列に記入(c:テスト\1-1)
そして、新規ブックを保存する場所をB列のフォルダパスを見てそのパスの場所に保存ということが行いたいです。

>それと、3行目から始めていますけど、それが正しいのですか?
この部分につきましてはこちらのミスです、すみません。(別のマクロで使用していたものをまるまるコピペしただけなので"3"の部分を変更するのを忘れていました。)

教えていただきたい部分は上記でいただいた式の"bk.SaveAs "c:テスト\" & c.Value & ".xlsx""の部分をB列のフォルダパスを見て保存するという命令?をどう記入すればいいのかがわかりません。

よろしくお願いします。
(ジャスミン茶) 2016/09/09(金) 08:44


 こんな感じですかね。

 Sub Sample2()
    Dim bk As Workbook
    Dim c As Range
    Dim bPath As String
    Dim fPath As String
    Dim flag As Boolean

    Application.ScreenUpdating = False

    bPath = ThisWorkbook.Path
    Set bk = Workbooks.Add

    With ThisWorkbook.Sheets("Sheet1")  '★
        For Each c In .Range("A1", .Range("A" & Rows.Count).End(xlUp))  '★
            fPath = bPath & "\" & c.Value
            'フォルダの存在チェックとなかった場合の作成
            flag = False
            If Len(Dir(fPath, vbDirectory)) > 0 Then
                If (GetAttr(fPath) And vbDirectory) = vbDirectory Then flag = True
            End If
            If Not flag Then MkDir fPath
            'ブックの書き込み
            Application.DisplayAlerts = False
            bk.SaveAs fPath & "\" & c.Value & ".xlsx"
            Application.DisplayAlerts = True
            c.Offset(, 1).Value = fPath
        Next
    End With

    bk.Close False

    MsgBox "処理が終了しました"

 End Sub

(β) 2016/09/09(金) 09:11


ご回答ありがとうございます。

上記の式で求めていた挙動ができました。
ありがとうございました。
(ジャスミン茶) 2016/09/09(金) 09:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.