エクセルVBA ファイル移動について
お詳しい方 ご教授をお願いします
やりたいこと
エクセルファイルにて
下記のコードにて指定フォルダの指定した拡張子ごとセルC6からリスト化を行う
Sub ファイル取込_Click()
Dim buf As String, cnt As Long
Const Path As String = "C:\Sample\"
buf = Dir(Path & "*.xlsx")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.bmp")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.jpg")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.pdf")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.pptx")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.xlsm")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.log")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.docx")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
buf = Dir(Path & "*.zip")
Do While buf <> ""
cnt = cnt + 1
Cells(cnt + 5, 3) = buf
buf = Dir()
Loop
End Sub
その後
C3,C4,C5のセル記載内容を元に名前を付け新規作成するコードを使用
'-----------------------------------------同名フォルダを探し無ければ作成を行う
Dim xFold As String, xPath As String
Range("A1").Activate
Const xParent As String = "C:\Users\PC\Documents\新しいフォルダ\" '保存フォルダ先
xFold = ActiveCell.Offset(2, 2).Value & ActiveCell.Offset(3, 2).Value & ActiveCell.Offset(3, 4).Value 'フォルダの名前設定
xPath = xParent & xFold
If Dir(xPath, vbDirectory) = vbNullString Then
MsgBox xParent & "に" & xFold & "フォルダを作成します。"
MkDir xPath
Else
MsgBox xPath & "は既にあります。"
Exit Sub
End If
困り事
ここまではいけたのですが、
自動で新規作成したフォルダにリスト化した同名ファイルを移動させるのがうまくいきません
フォルダ名を指定しての移動は簡単にできたのですが・・
アドバイスをお願いします
No.3ベストアンサー
- 回答日時:
何度も回答してしまい申し訳ありません。
多分以下でいけます!
Do While Cells(i, 3) <> ""
buf = Cells(i, 3)
Name Path & buf As xPath & "\" & buf
'コピーする場合は
'FileCopy Path & buf, xPath & "\" & buf
i = i + 1
Loop
タイプミスとスラッシュ漏れと、結構初歩的なミスばかりですみません。
これでお願いします。
No.2
- 回答日時:
ごめんなさい、私のミスタイプです。
buf = .Cells〜 ×
buf = Cells〜 ○
「.」が不要ですね。
この部分を修正して、もう一度試してみていただけますか?
No.1
- 回答日時:
こんばんは
あと一息ですね!
一連の操作を1つのプロシージャ内で完結する、という想定で、
以下のようなコードはいかがですか。
Dim i As Long
i = 6
'cntをもう使用しないのならばiをcntに置き換え、iの宣言は不要
Do While Cells(i, 3) <> ""
buf = .Cells(i, 3)
Name Path & buf As xPath & buf
'コピーする場合は
'FileCopy Path & buf, xPath & buf
i = i + 1
Loop
xPathを用いた質問本文後半の記述+上記コードを
質問本文前半の最後部に挿入することで、ファイル名のリスト化と
新規フォルダの作成、移動が完結できるのではないでしょうか。
もしそれぞれの操作を別のプロシージャに分割したい、ということであれば
プロシージャの引数にPathやxPath、bufを渡して処理をさせる形で分割すると
よいかと思われます。
参考までにご覧ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA フォルダ名に特定の文字を...
-
Excelのハイパーリンクについて...
-
会社のネットワーク上のファイ...
-
VBA 最新のフォルダ取得
-
Windows10でコマンドプロンプト...
-
excelマクロ 冒頭3文字が一致す...
-
ThisWorkbookがあるフォルダ更...
-
META-INFフォルダの置き場所に...
-
VBA エクセルシートをコピーし...
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
VS2005で"定義へ移動"ができません
-
空のフォルダの判定
-
あるフォルダの中にあるファイ...
-
フォルダにリンクを貼りたい
-
C ファイル出力で、フォルダが...
-
ファイルとフォルダのどちらも...
-
Excelで指定したフォルダに保存...
-
[VB.net 2003] FileDialogでデ...
-
Excelvbaでブックをコピー名前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
VBA 最新のフォルダ取得
-
デスクトップの画像をhtmlに表...
-
Access VBA で フォルダ権限...
-
VBA フォルダ名に特定の文字を...
-
ファイル名と同名のフォルダを...
-
ExcelのVBAでフォルダ指定がで...
-
【VBS】古い日付のフォルダを削...
-
パス名に2バイト文字(マルチバ...
-
ExcelVBAでフォルダへのハイパ...
-
C ファイル出力で、フォルダが...
-
【マクロ】フォルダにファイル...
-
[VBS] Unicodeの文字化けを防ぎ...
-
あるフォルダの中にあるファイ...
-
VBA フォルダの複数選択ができない
-
サーバ内のフォルダ名と各フォ...
-
Excelのハイパーリンクについて...
-
Excelで指定したフォルダに保存...
-
excelマクロ 冒頭3文字が一致す...
おすすめ情報
誤記ありましたフォルダ名の指定はC3,C4,E4です
申し訳ないです
ご回答いただきありがとうございます
早速教えていただいたコードを使い一つのプロシージャで完結させるように対応してみたのですが
buf=.cells(i,3)の所で参照が不正または不完全ですと出てしまいます
オブジェクトの指定がうまくいっていないということでしょうか?
このように新規フォルダを作成して
その作成したフォルダに指定したファイルを入れようとしたのですが、
以下のようになります
①フォルダは指定場所に名前付きで保存される
↓
②ファイルが新規されたフォルダ内に移動されず、フォルダが作成された場所に
移動される
例 サンプルフォルダ
移動ファイル
のような感じです。
↓
③移動用ファイルがフォルダ名の名前が追加される
例 フォルダ名移動ファイル名.pptx
フォルダ新規作成コードに
Sub 登録_Click()
Dim dat As String
Dim buf As String, cnt As Long
Const Path As String = "C:\Sample\"
と宣言を追加
そのまま
End ifまでコードを転用し
教えて頂いたコードを追加