- ベストアンサー
エクセルマクロ 指定したフォルダ内のファイルをコピーしたい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
次のような方法はいかがでしょうか。 マクロにコードを記述して実行します。 A2、B2のセルを選択して右クリック ↓ 「セルの書式設定」をクリック ↓ 「表示形式」で「文字列」を選択し「OK」をクリック (フォルダ名が月日になると思われるので02.09だと 2.09になってしまうためです。) ↓ A1に「="パス名"&A2」、A2に「mm.dd」、 B1に「="パス名"&B2」、B2に「yyyy」を入力 (※パス名はの後ろには必ず\を付けてください。 例:C:\TEST\ ) ↓ メニューバーの「ツール」→「マクロ」→「マクロ」をクリック ↓ マクロのダイアログが表示されたらマクロ名に 自由に名前を入力してください。(例:WORDCOPY) ↓ 名前を入力しましたら、「作成」をクリック ↓ Microsoft Visual Basicの画面が開きますので Sub WORDCOPY()の下に次のコードをコピーして 貼り付けてください。 Dim ファイル名 As String 'ファイル名 Dim パス名1 As String 'コピー元パス名 Dim パス名2 As String 'コピー先パス名 パス名1 = Range("A1") & "\" ' パスを設定します。 パス名2 = Range("B1") & "\" ' パスを設定します。 ファイル名 = Dir(パス名1 & "*.doc") ' ←最初のファイル名を返します。 Do While ファイル名 <> "" ' ←ファイル名を全て見るまで繰り返す FileCopy パス名1 & ファイル名, パス名2 & ファイル名 '←ファイルのコピー ファイル名 = Dir ' ←次のファイル名を返します。 Loop Range("A1").Select MsgBox "コピーしました。" '****コピー貼り付けはここまで **** Microsoft Visual Basicの画面を×で閉じます ↓ Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック ↓ 先ほど付けたマクロを選択して「実行」をクリック ↓ dd.mmフォルダから、yyyyフォルダに*.docがコピーされていると思います。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >・このdd.mmフォルダから、yyyyフォルダに*.docをコピー。 dd.mm =A2 が、「送り元」で、A1=yyyy が「送り先」ですか? その順番は、必ず確認してくださいね。 エラーチェックをいくつか施しました。 以下は、なるべく、標準モジュールに設定してください。 Sub TestMacro1() Dim srcFolder As String Dim dstFolder As String 'フォルダ名チェック '送り先 dstFolder = Range("A2").Value If Right(dstFolder, 1) <> "\" Then dstFolder = dstFolder & "\" '送り元 srcFolder = Range("A1").Value If Right(srcFolder, 1) <> "\" Then srcFolder = srcFolder & "\" If srcFolder = "" Or dstFolder = "" Then Exit Sub 'ディレクトリチェック If Dir(srcFolder, vbDirectory) = "" Then MsgBox srcFolder & " が見つかりません", 48 Exit Sub End If If Dir(dstFolder, vbDirectory) = "" Then MsgBox dstFolder & " が見つかりません", 48 Exit Sub End If If Dir(srcFolder & "*.doc") = "" Then MsgBox "送り元には、Wordドュキメントがありません。", 48 Exit Sub End If With CreateObject("Scripting.FilesystemObject") .Copyfile srcFolder & "*.doc", dstFolder End With End Sub
お礼
ご回答ありがとうございます! こちらの方法でも私のやりたいことができ、1つの問題に対して 複数の方法があるのだと実感しました。 これかも勉強していきたいと思います。 ありがとうございました。
- coral_japan
- ベストアンサー率37% (14/37)
あらかじめ、フォルダは作成してあるものとして。 yyyyフォルダは仮にC:\yyyyとしてあります。 ----------------- Sub FolderCopy() 'A1 を取得します OrgFolder = Range("A1") 'Copy先 をセットします CopyFolder = "C:\yyyy" 'フォルダオブジェクトを取得 Set SourcFolder_Object = CreateObject _ ("Scripting.FileSystemObject").GetFolder(OrgFolder) 'OrgFolder内の全ファイルをCopy先にコピー 'サブフォルダも対象になります SourcFolder_Object.Copy CopyFolder MsgBox "完了しました" End Sub
お礼
ご回答、ありがとうございます! さっそく試してみたところ、yyyyフォルダ内に新たにA1のフォルダコピーが作成されました。 ファイルだけをコピーすることはできないでしょうか・・・? よろしくお願いします!
関連するQ&A
- Excel97の日付の書式設定
現在Excel97で日付入力をしたいのですが、 最終的に演算に使用する日付で yyyy/mm/ddとyyyy/mmどちらでも入力できる書式設定を探しています。 yyyy/mm/ddの指定にするとyyyy/mmと入力してもyyyy/mm/01となってしまいます。 yyyy/mmのセルとdd専用のセルを別に作ると、ddを入力した時に 閏年のエラーチェックなどがかけられないので演算部分(1年後該当日前日の指定等)がうまく働きません。 いい方法がありましたら教えてください。
- 締切済み
- オフィス系ソフト
- Excelマクロで不要な行を繰り返し処理で削除する
下記の図表【事前】のA列に時間(シリアル値)が入力されていますが、 これをマクロを使って不要な時間帯のデータを行ごと削除したいです。 それを実行するためのマクロをご教示頂けますでしょうか? 削除対象の条件 ・9:00:00~18:00:00以外の夜間や早朝の時間帯は削除する。 その他 ・データが入力されている行数分繰り返し処理 ・秒数、分数は全て0 ・列は3列(B、C列は任意) ・Excelのバージョンは2007 【事前】 A B C 1 yyyy/mm/dd 01:00:00 ※削除対象 2 yyyy/mm/dd 23:00:00 ※削除対象 3 yyyy/mm/dd 09:00:00 4 yyyy/mm/dd 15:00:00 5 yyyy/mm/dd 17:00:00 6 yyyy/mm/dd 19:00:00 ※削除対象 7 yyyy/mm/dd 04:00:00 ※削除対象 【事後】 A B C 1 yyyy/mm/dd 09:00:00 2 yyyy/mm/dd 15:00:00 3 yyyy/mm/dd 17:00:00
- ベストアンサー
- Visual Basic
- エクセルマクロの質問です。
こんばんわ!! エクセルマクロのデータ形式で、うまく設定できず困っています。 下記のようにA1セルにユーザーフォームのデータを入力しました。 Range("a1") = UserForm1.TextBox1 TextBox1にはyyyy/mm/dd形式でデータを入力しています。 0を1899/12/31にするのはできるのですが、1899/12/31を0とするデータ(シリアル値?)に直したいのですが、どうすればよいでしょう? アドバイスの程よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセル マクロ 特定のフォルダ内 ファイルコピー
エクセルのセルに入力されたフォルダを参照して、 CSVファイルを シート1・2・3・4に1度にコピーしたいのですが 例えば C\ドキュメント¥フォルダA |-フォルダB |-フォルダC |-フォルダD |-フォルダE |-フォルダ1 |-CSVファイルA |-フォルダ2 |-CSVファイルB |-フォルダ3 |-CSVファイルC |-フォルダ4 |-CSVファイルD 上記のアドレスで シート1のA1セルに フォルダEを入力し シート2に CSVファイルA シート3に CSVファイルB シート4に CSVファイルC シート5に CSVファイルD それぞれすべての内容を貼り付けたいのですが 何分初心者なもので ご指導いただければと思います。 ちなみに A1セルの入力は変わるため各シートは1度削除した上で再度貼り付けを行いたいです。
- 締切済み
- オフィス系ソフト
- エクセル 西暦のセルと月日のセルを合わせる
西暦(yyyy)のセルと月日(mm/dd)のセルが分かれて存在しています。 これらを合わせて(yyyy/mm/dd)と表示したいのですが、 何か簡単に行う方法はありますか? 現在手入力していますが、データの量が膨大で困っています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAについて
Excel VBAについて ExcelのセルA1に日付データ(yyyy/mm/dd hh:mm)が入っています。 このエクセルファイルを開いている間、セルA1の日付(時分)が更新されたらマクロを実行するようにしたいのですが、どのようにしたらよいのでしょうか。 セルA1の日付データが更新されるタイミングは決まっていません。 セルA1の日付データが更新されたらマクロ実行というのが難しいのであれば、 10秒おきにマクロを実行というようなことができないでしょうか。 ご教授願います。
- ベストアンサー
- Visual Basic
- yyyy/mm/ddの日付に一括変換するマクロ
[セルの書式設定] の [表示形式]が標準(日付ではない)で単なる文字列となっている「mm-dd-yyyy」や「mm/dd/yyyy」のデータをマクロで「yyyy/mm/dd」の日付データに一括変換するマクロを教えてください。 たとえば、日付データが列Aにある場合にはDATE関数で、 =DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2)) でも変換可能ですが、対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多いため、DATE関数を使用することは現実的ではない事情があります。 このためマクロを使用して処理させたいです。 添付のサンプルの例で一括変更するマクロを教えてください。 なお、Excelは2007を使用しています。
- ベストアンサー
- オフィス系ソフト
- エクセルでランダム表示したい
エクセルのセルA1からセルA20までとか「MM/DD/YYYY hh:mm:ss」の形式でランダム表示させる関数なんてあるでしょうか? できれば、3月1日~5月31までとか期限を制限してランダムに表示できたらうれしいです。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAでのCSV出力について
EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。 VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。 また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。 教えてください。よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルVBA セルの書式につい
ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。 Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。
- ベストアンサー
- Visual Basic
お礼
ご丁寧な回答ありがとうございます! こちらの方法で、めでたく解決しました。 本当にありがとうございました。