2017-05-16 14 views
-1

私は、選択した列に新しい項目を作成するたびに新しいフォルダが作成されるように、Excelでフォルダを作成したいと考えています。Excel:新しい値を挿入するときに自動更新するフォルダを作成するには?

私は既にVBAにフォルダを作成するコードをいくつか見つけました。しかし、私はセルを選択し、毎回マクロを実行する必要があります。私はそれを自動的に行うことができる方法はありますか?

は以下

Sub CreateFolder() 
Dim caminho As String 
Dim folder As Object, FolderName 

For i = 1 To 500 
    Set folder = CreateObject("Scripting.FileSystemObject") FolderName = ActiveWorkbook.Path & "\" & Range("A" & i).Value 
    If Not folder.FolderExists(FolderName) Then 
     folder.CreateFolder (FolderName) 
    End If 
    directory = ThisWorkbook.Path 
Next i 
End Sub 
+4

いくつかのより多くの検索を行います。 「Excel vbaイベント」、特に「Worksheet_Change」から始める – CLR

+0

同じページにいるので、「フォルダ」を定義できますか? –

+0

@ JohnMuggins Litteralyは通常のフォルダです。 I = 1 500に設定フォルダ=のCreateObject( "Scripting.FileSystemObjectオブジェクト") フォルダ名= ActiveWorkbook.Path用のオブジェクト、フォルダ名 として文字列 薄暗いフォルダとして サブCREATEFOLDER() 薄暗いcaminho:私はこのコードを持っています& "\" &レンジ( "A" &I).Valueの 私はサブ – LeoM

答えて

0

はい、私たちはあなたを助けることができる新しいフォルダ(サブディレクトリ)を作成するためのコードであり、事前に レオ

、ありがとうございました。ちょうどいくつかの関連情報が必要です。列を選択する必要がありますか?または、ハードコーディングされた列で作業できますか?列Dのような列を言う...ワークシートモジュールにWorksheet_Changeマクロを置くことで、特定の列の値が変更されたときに自動的にそのフォルダーが存在するかどうかを確認し、作成しない場合は作成します。ここで

は、列D内の任意の新規または変更されたセルのためのフォルダを作成します例です。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim caminho As String 
Dim folder As Object, FolderName 

If Target.Column = 1 And Target.Value <> "" Then ' If Changed Cell is in Column A 


' This code changes unacceptable file name characters with an underscore 
    Filename = Target.Value 
    MyArray = Array("<", ">", "|", "/", "*", "\", "?", """") 
    For X = LBound(MyArray) To UBound(MyArray) 
     Filename = Replace(Filename, MyArray(X), "_", 1) 
    Next X 

' This code creates the folder if it doesn't already exist 
    Set folder = CreateObject("Scripting.FileSystemObject") 
    FolderName = ActiveWorkbook.Path & "\" & Filename 
    If Not folder.FolderExists(FolderName) Then 
     folder.CreateFolder (FolderName) 
    End If 



End If 

End Sub 
+0

誰かが何かを列Aに入力するたびに反応するように上記のコードを変更しました。上記のマクロを通常のモジュールではなくワークシートモジュールに入れてください。 vbaエディタでワークシートオブジェクトをダブルクリックすると、そのモジュールが開きます。そのモジュールに上記のコードを貼り付けます。次にシートに入り、列Aに何かを入力し、完了したらEnterを押します。自動的にその名前のフォルダが存在するかどうかを確認し、存在しない場合は作成します。ファイル名にはいくつかの不正な文字があり、それらをアンダースコアに置き換えているので、フォルダを作成するときにエラーが発生することはありません。 –