[[20180315172125]] 『VBA セルの入力を引用しフォルダを作成し、フ』(みや) ページの最後に飛ぶ

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

 

『VBA セルの入力を引用しフォルダを作成し、フォルダに保存する』(みや)

****以前の依頼****

エクセルVBAを使い、CSVのデータシートを分けて保存したいです。

 具体的には行は任意になりますが、列はCP列までデータが入っています。 
 空白も一部ありますが、CO列を基準としてCO列の文字を判別し、判別した文字の名前でCSV保存したいです。CO列には半角で2文字(数字もしくはアルファベット)の構成になっています。 
 例)18 1A AN N1という感じです。 
 1行目は項目で2行目以降にデータが入っており、分けたCSVは1行目+CO列の検索結果としたいです。 
 CO列に18のデータのみを抽出し18.CSVの形式でデスクトップに保存かつ1Aのデータのみを抽出し1A.CSVの形式でデスクトップに保存。以下COに存在する文字の分だけCSVで保存したいです。 

****回答****

 Option Explicit

 Sub test()
    Dim r As Range
    Dim c As Range
    Dim p As String

    Set r = Range("A1").CurrentRegion
    Set c = r(1).Offset(, r.Columns.Count + 1)

    p = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"

    r.Columns("CO").AdvancedFilter xlFilterCopy, , c, True

    Do While c.Offset(1).Value <> ""
        With Workbooks.Add
            r.AdvancedFilter xlFilterCopy, c.Resize(2), .Sheets(1).Range("A1")
            .SaveAs p & c.Offset(1).Value & ".csv", xlCSV
            .Close False
        End With
        c.Offset(1).Delete xlShiftUp
    Loop

    c.Resize(2).ClearContents

 End Sub

****追加したい内容****

回答でデスクトップにCSV保存が出来たのですが、CSVが多くなりすぎて整理をするために、元CSVのW2のセルの名前でフォルダを作成し、その中に分けられたCSVを保存することは可能でしょうか?

Sub フォルダ作成()

    MkDir "C:\Users\Desktop\" & Range("W2").Value

End Sub

これでフォルダは作れたのですが、ブックの保存方法がわからなくなりました。

よろしくお願いします。

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


>ブックの保存方法がわからなくなりました。

「マクロの記録」機能をつかってから、手動操作で適当なブックをそこに保存してみましょう。
できあがったコードをみると何か思い出すかもしれませんよ
(もこな2) 2018/03/15(木) 17:49


コメント返信:

[ 一覧(最新更新順) ]


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