質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

475閲覧

フォルダを作りその中に指定したファイルを入れたい

ryota.ueda

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/09/20 08:39

編集2022/09/20 11:40

前提

vbaを使用して作成したフォルダに指定したフォルダ・ファイルを入れたい

実現したいこと

1.アクティブシートのセルA10が名前のフォルダを作る
2."C:\Users\NTS65\Desktop\マイフォルダ\シュリンク豆知識" & Cells(i, 1).Value 
の箇所に上記のフォルダが作成されている
3.その生成されたフォルダ内にアクティブシートB9が”1500左標準標準”の場合
"D:\test\A"内のフォルダ・ファイルが入る
4.アクティブシートB9が”1500右標準標準”の場合
"D:\test\C"内のフォルダ・ファイルが入る

該当のソースコード

ソースコード Sub 仕分け() Dim mydir As Variant Dim i As Integer Dim mypath(1) As String Dim mypath(2) As String Dim mypath(3) As String Dim mypath(4) As String For i = 10 To Range("A" & Rows.Count).End(xlUp).Row mydir = "C:\Users\NTS65\Desktop\マイフォルダ\シュリンク豆知識\" & Cells(i, 1).Value If Dir(mydir, vbDirectory) = vbNullString Then MkDir mydir Next i End If If Range("B9") = "1500右標準標準" Then ' ファイル元保管場所 mypath(1) = "D:\test\A\" ' ファイル貼り付け先(上記で作成したファイル) mypath(2) = FileCopy mypath(1), mypath(2) ElseIf Range("B9") = "1500左標準標準" Then ' ファイル元保管場所 mypath(3) = "D:\test\C\" ' ファイル貼り付け先(上記で作成したファイル) mypath(4) = FileCopy mypath(3), mypath(4) End If MsgBox "コピーされました" End Sub

試したこと

作成したフォルダをどうにか指定する方法をネットで様々試したがうまくいきませんでした。
VBA初心者かつ質問も初めてで,色々おかしいところがあると思いますが、皆様の知恵を貸してください。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2022/09/20 10:00

> 1.エクセルVBAで指定したセルの文字列名のファイルを作成する。 上記のファイルというのは、フォルダーの間違いではないですか。そのほかの部分にもファイルなのかフォルダーなのかあいまいな部分があります。質問文をもう一度見直して、間違っている部分は訂正してください。 あと、For Next 内でフォルダーを作成していますが、フォルダーは複数あるということですか。
ryota.ueda

2022/09/20 10:52

フォルダとファイルが混ざっていた個所を直しました。 分かりにくく申し訳ありません 作るフォルダーは一つです!参考にしたコードが複数でしたが、そのまま使用しています。 ご指摘ありがとうございます。
hatena19

2022/09/20 11:08

やりたいことをもう少し正確に他人も伝わるように説明してもらえますか。 それができなければコードは書けません。 一例をあげると、下記のように説明してもらえませんか。 1. アクティブシートのA10セルにフォルダー名が入力されている。 2. そのフォルダーが存在しない場合は、フォルダーを作成する。 3. B9セルの値が「1500右標準標準」なら、"D:\test\A\"内のファイルを上記のフォルダーにコピーする。 4. B9セルの値が「1500左標準標準」なら、"D:\test\C\"内のファイルを上記のフォルダーにコピーする。 これは書き方の一例ですので、自分でやりたいことを整理して上記のように箇条書きで説明してください。
ryota.ueda

2022/09/20 11:42

ご丁寧にありがとうございます。 実現したい欄を詳しく書かせていただいております。 hatena19さんの解釈通りです。
guest

回答1

0

ベストアンサー

フォルダー内のファイル・フォルダーをコピーする場合は、FileSystemObject を使うと楽です。FileSystemObject はファイルやフォルダの操作をするライブラリーです。詳細はここでは説明しませんので、WEBで検索するなどして学習してください。

vba

1Sub 仕分け() 2 3 Dim ToPath As String '貼り付け先フォルダのパス 4 ToPath = "C:\Users\NTS65\Desktop\マイフォルダ\シュリンク豆知識\" & Range("A10").Value 5 6 7 Dim FSO As Object 8 Set FSO = CreateObject("Scripting.FileSystemObject") 9 If Not FSO.FolderExists(ToPath) Then '貼り付け先フォルダが存在しなければ 10 FSO.CreateFolder ToPath 'フォルダを作成 11 End If 12 13 If Range("B9") = "1500右標準標準" Then 14 FSO.GetFolder("D:\test\A").Copy ToPath 15 ElseIf Range("B9") = "1500左標準標準" Then 16 FSO.GetFolder("D:\test\B").Copy ToPath 17 End If 18 19 Set FSO = Nothing 20End Sub

投稿2022/09/20 12:38

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryota.ueda

2022/09/22 07:54

hatena19さん返信遅くなり大変申し訳ありません。 分かりにくい文章の中、丁寧でわかりやすい回答ありがとうございます! 上手くいきました! 一文一文どういった意味があるのか自分で勉強していこうと思います! ご協力ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問