フォルダをコピーして名前を変更するマクロ

このQ&Aのポイント
  • フォルダをコピーして、名前を変更するマクロの作成方法を教えてください。
  • 特定のフォルダ内のフォルダ名やファイル名を一括で変更するマクロの作成方法を教えてください。
  • エクセルの特定のセルに入力された値を利用して、フォルダをコピーして名前を変更するマクロの作成方法を教えてください。
回答を見る
  • ベストアンサー

フォルダをコピーして名前を変更するマクロ

フォルダをコピーして、名前を変更するマクロを教えて下さい P:\工程管理\AF UG というアドレスの中に KBB45033#○○○作業データ(原紙) というフォルダの名前があります。 またこのKBB45033#○○○作業データ(原紙)のフォルダ内には KBB45033#○○○加工データ KBB45033#○○○進捗表 KBB45033#○○○調整データ KBB45033#○○○面検データ という名前の4つのフォルダと KBB45033#○○○ばね厚.xls という名前の1つのファイルがあります。 さらに KBB45033#○○○加工データ のファルダ内には KBB45033計算シート_受光部用_#000-2_Ver1.02.xls という名前のファイルがあります。 エクセルシートのB3セルに105と入力し、マクロを実行した際に P:\工程管理\AF UGのフォルダに 上記に書いたフォルダ名や、ファイル名の○○○の所が105となって フォルダがコピーできるマクロを教えて下さい。 現在はネットで調べてKBB45033#○○○作業データ(原紙)のフォルダ名だけは 出来るようになりました。 サブフォルダや、その中にあるファイル名の変え方がわかりません。 Sub test_fs034_02()    Dim fso         As Object   'ファイルシステムオブジェクト    Dim strSrc     As String   'コピー元    Dim strDst     As String   'コピー先    'メインオブジェクトの生成    Set fso = CreateObject("Scripting.FileSystemObject")    'コピー元フォルダパスの設定    strSrc = "P:\工程管理\AF UG\KBB45033#○○○作業データ(原紙)"    'コピー先フォルダパスの設定(フォルダ名変更)    strDst = "P:\工程管理\AF UG\KBB45033#" & Range("B3").Value & "作業データ"    'フォルダのコピー(上書き)    fso.CopyFolder strSrc, strDst    'オブジェクト変数のクリア    Set fso = Nothing

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

DIR関数を利用してみてはいかがでしょう。 Dir関数でサブフォルダを取得する http://officetanaka.net/excel/vba/tips/tips95.htm

yyrd0421
質問者

お礼

ありがとうございます! 参考にしてみます!

関連するQ&A

  • 階層フォルダのコピー

    少し説明しづらいのですが、質問させて頂きます。 ¥2023¥原紙¥01¥○○.xlsx といった具合にフォルダがありエクセルがあったとします。 そのエクセル内のセルにリンク先として、 =’¥2023¥原紙¥△△~~ という感じの式が入っているとします。 この場合で「原紙」フォルダをコピーし名前を変更して、「01」という名前にしたときに、上記の式が =’¥2023¥01¥△△~~ といった具合に自動で変わってくれるファイルがあるのですが、いざ別のファイルを作ろうと思うと、うまく自動でリンク先が変わってくれません。 何か操作や条件があるのでしょうか? マクロの様なものは使用していないと思います。 説明下手ですが、回答よろしくお願いいたします。

  • 名前の付いたフォルダやファイルだけをコピー・・・?

    出来なければ諦めますがもし出来るのなら教えて~ データが保存されているドライブにある フォルダやファイルの中にあるデータを動かさないで(コピーや移動させずに) 名前の付いたフォルダやファイルだけを別のドライブにコピーすることは出来ないでしょうか? バックアップする時に元ドライブから別のドライブに 元ドライブの名前の付いているフォルダやファイルをコピーしてから 必要なデータだけを別のドライブにコピーもしくは移動させたいので。

  • 特殊フォルダへのファイルコピー

    win10 ofice2016 ユーザレベル:Administrator パソコン利用者に、共通で使用するプログラムのコピー及び起動の設定をexcelマクロで対応しています。 Win10のRS5バージョンアップの影響か、従来動作していたマクロが動作しなくなりました。 c:\A\B.bat を スタートメニュー及び、共通ディスクトップにコピーするマクロ で下記の内容です。 Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile Source:="C:\A\B.bat", Destination:="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\InspecStart.bat" FSO.CopyFile Source:="C:\A\B.bat", Destination:="C:\Users\Public\Desktop\InspecStart.bat" Set FSO = Nothing 上記実行で 実行時エラー'70': 書き込みできません とのエラーが出てしまいます。 ちなみに ' FSO.CopyFile Source:="C:\A\B.bat", Destination:="C:\work\B.bat" はコピーできます。 また、エクスプローダ上でのコピーはできます。 このフォルダへのコピーは管理者権限が必要です。 と表示され、続行でコピー可です。 ファイルのコピーを手動でやれば済むのですが、パソコン等はリースです。 リース更新時に沢山の設定するのは手間なので、特殊フォルダへのコピーを簡単に対応可能な手段があればとのおもいです。 excelマクロにはこだわりませんが、サーバからのファイルコピー等はマクロで実行するので、一緒に起動用のファイルをコピーで対応できたらと思った次第です。 サーバからファイルをc:\A配下へコピー。 Aフォルダ配下の起動ファイルを特殊フォルダ2ケ所に設定したいのです。 よろしくお願いします

  • エクセルマクロで

    エクセルマクロでファイルの有無を確認したくて 次のようなマクロを作りました。 Dim fso Const Folder = "D:\AAA" Const File = "*****.xlsx" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(Folder & "\" & File) = False Then MsgBox "ファイルは存在しません" ファイル名の*****部分に Range("A1").Valueを使いたいのですがうまくいきません。 どのようになるのでしょうか。よろしくお願いします。

  • フォルダをリネームしたい

    いつもお世話になっております。 フォルダの名前を変更しようとしていますが、うまくいきません。 ASP(VBS)にて行ってます。 以下のように書いてみましたが、フォルダ名が変更されません。 以下ソース。 「12345」というフォルダ名を「67890」に変更したいのです。 <% Dim fso, f, s Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolde("./uploads/12345") f.Name = "67890" %> どなたかご存知の方がいらしゃいましたら、ご教授お願いします。

  • CR-RWにコピーしたフォルダの名前の変更

    WindowsXPを使用しております。パソコンにあまり詳しくないので、お聞きしたいことがあります。 デジカメで撮影した写真をわかりやすいように名前をつけたフォルダに保存し、それを何も書き込まれていない新しいCD-RWにコピーしました。 そのCD-RWを入れ、 マイコンピューター→CDドライブ(E) の順にクリックすると、フォルダの名前がすべて日時表示になっていました。 日時表示のフォルダをクリックすると、ちゃんと名前のついたフォルダが表示されます。 しかし、最初に表示されるフォルダ名が日時表示では、ぱっと見て何の写真が入っているか判断できないので、日時表示のフォルダの名前を変更しようとすると、 「名前を変更できません。このCDファイルは読み取り専用ですが、この書き込み可能なCDに新しいファイルをコピーすると、ディスクにあるファイルを置き換えることができます。」 と表示されました。 また、今まではマイコンピューター内の、DVD-RAM(E)のところでは CD-RWを入れると、今回のような「CDドライブ(E)」ではなく、CDにコピーした日付(CDに名前をつけないので)が表示されていました。 どのようにすれば、日時表示のフォルダの名前を変えることできるのでしょうか? お分かりになる方、ご回答お待ちしております。 よろしくお願いします。

  • フォルダ名の変更

    コピーしたデータが入っている、フォルダの名前を変更しようとしたんですが 「***(フォルダ名)の名前を変更できません。ほかの人またはプログラムによって使用されています。 ファイルを使用している可能性があるプログラムをすべて閉じてから、やりなおして下さい」 とでます ???開いているプログラムはありません・・・ 何が原因で、どうすれば変更できるのでしょうか?

  • システムフォルダの名前変更

    PC購入後、 初期設定で使用者の名前を入力したらフォルダに使用者の名前が表示されました。 ドキュメントにファイルをコピーすると、ファイルのURLに個人名が出てしまいます。 先日うっかり、 保存していたファイルをメールに添付して送ったら本名がばれてしまいました。 これではいけないと、フォルダ名の変更を試みましたが、 「システムフォルダで、Windowsを正しく実行するのに必要です。移動や名前の変更は出来ません」とアラートがでます。 これでは個人情報が容易に漏れてしまいます。 なんとかフォルダの名称を変更できないでしょうか?

  • エクセルマクロでフォルダのコピーがしたい

    こんにちわ 色々調べてフォルダのコピーはできたのですが、色々いじっていて分からないことが出てきたので質問に来ました。 やりたいことはフォルダをコピーしたいのですが、それぞれ名前を自動で変えようと思い下記(1)を元に下記(2)を作ってみましたが、動きませんでした。 (1)いくつかのサイトを見て動いたマクロ sub test() Dim myFSO As New FileSystemObject myFSO.CopyFolder "C:\test", "C:\test2" End Sub (2)ちょっといじって動かないマクロ sub test() Dim myFSO As New FileSystemObject Dim name As String Dim name2 As String name = "C:\test" name2 = "C:\test2" myFSO.CopyFolder "name", "name2" End Sub 「パスが見つかりません」と出てきたので、読み込んでいないのだとは思うのですが、どうしたら動くかアドバイスをいただきたいです。 よろしくお願いします。

  • VBSでファイルをコピーして名前変更

    VBSで現在下記のようなコードを組んでいます。 動作としてはコードが組んであるVBSファイルにエクセルシートをドラック&ドロップすると、ブックのパスが外れてファイル名の先頭に シート内のセルE5の文字がつくようになっています。 そしてそのファイル名に指定した文字がある場合 指定したフォルダへ移動されます。 今回行いたいのは、その移動したあとの処理で 移動したファイルをそのフォルダ内でコピーして 名前を変更したいです。 例えば移動してきたファイル名が #101-1test.xlsxだとして、そのファイルをコピーして ABC101-1_DEFG.xlsxという名前で同じフォルダ内にコピーしたい。 ファイルの中身は同じだけど、名前を変更して同じフォルダ内に ファイルを作成したいということです。 ちなみに移動してきた時の始めのファイル名、#〇〇〇-〇は必ずこの形です。 なので、頭のシャープと-1以降の文字を削除して 〇〇〇の手前につける文字と、-〇以降につける文字が指定できれば完璧です。 このようなことができるかわかりませんが、よろしくお願いします。 よろしくお願いします。 Option Explicit 'Excel 2013 Later Japenese Version Available 'REF: 'REF: '''///---定数の設定Set Enumuragion---///''' Const PWD="aaaaa" Const msoLanguageIDInstall = 1 '''///---変数の宣言---///''' Dim objArgs, I , strFile Dim objFile, objFolder,objPath,strScr Dim xlApp,Wb Dim objWShell : Set objWShell = Createobject("WScript.Shell") Dim FSO : Set FSO = Createobject("Scripting.FileSystemObject") '''///---ファイル処理開始 Start Document File Conversion---///''' Set objArgs = Wscript.Arguments For I = 0 to objArgs.Count-1 set objFile = FSO.GetFile(cstr(objArgs(I))) If Lcase(Left(FSO.GetExtensionName(objFile.Path) ,4) )="xlsx" Then Set xlApp =CreateObject("Excel.Application") If xlApp.Version < 14 Then xlApp.Quit: Set xlApp = Nothing:wscript.Quit xlApp.DisplayAlerts=False xlApp.Visible = False set wb=xlapp.WorkBooks.Open(objFile.Path,0,false,,PWd,,True,,false,false,,true,true) if wb.HasPassword=true then wb.Saveas objFile.Path,,"","",False else wb.Saveas objFile.Path,,Pwd,"",False End if Dim n n = wb.Worksheets(1).Range("E5").Value & "_" & wb.Name wb.close FSO.GetFile(objFile.Path).Name = n If Mid(objFile.name, 5, 2) = "-1" Then FSO.MoveFile objFile.path, "F:\A\" Else MsgBox objFile.Name & " 該当せず" End If set wb=nothing End If Next xlApp.DisplayAlerts=True xlApp.Quit set xlApp = Nothing

専門家に質問してみよう