No.3ベストアンサー
- 回答日時:
こんにちは。
本来は、UserForm に取り付ければよいのですが、掲示板提供では、そういうわけにも行かないので、工夫しました。
ピンボイントの回答もあるけれども、ある程度の汎用性があるものを作らなければ、後付けで、わざわざ書く意味もありません。
1201課題.xls →1201完了.xls
また、
1201.xls という場合も、課題1201.xls ということも可能です。
もう少し、コードをきれいに整頓する必要性は感じますが、参考程度にしてください。
マクロというのは、対話型ではなく、動作を見えないままに一括変換することが多いので、その場合は、他のサンプルを参考にしてください。また、対話型なら、実際には、ユーティリティを使ったほうが良いような気もします。
'-------------------------------------------
'標準モジュール登録用
Sub FileNameChange()
Dim nFiles As Variant
Dim sText As Variant
Dim sRept As Variant
Dim tmp As Variant
Dim ret As VbMsgBoxResult
Dim BaseName As String
Dim fName As String
Dim i As Long
Dim v As Variant
''=========================================
Const sEXT As String = "*.xl*" '拡張子
''=========================================
nFiles = Application.GetOpenFilename("Excel(" & sEXT & ")," & sEXT, , "ファイル名変更", , True)
If VarType(nFiles) = vbBoolean Then Exit Sub
i = InStrRev(nFiles(1), "\")
BaseName = Mid(nFiles(1), 1, i)
tmp = Mid(nFiles(1), i + 1)
sText = Application.InputBox(tmp & vbCrLf & "検索する単語を入れてください。", "検索する単語", Type:=2)
If VarType(sText) = vbBoolean Or sText = "" Then Exit Sub
sRept = Application.InputBox(tmp & vbCrLf & "置換する単語を入れてください。" & vbCrLf _
& "削除する場合や付加する場合は、そのままOK/Enterを入れてください。", "置換する単語", Type:=2)
If VarType(sRept) = vbBoolean Then Exit Sub
If InStr(1, tmp, sText, 1) > 0 Then
ret = MsgBox("例:" & Replace(tmp, sText, sRept, , 1, 1) & vbCrLf & _
"このようにしますか?" & vbCrLf & "ファイル名に付加する場合はNo/いいえ", vbInformation + vbYesNoCancel)
Else
ret = vbNo
End If
If ret = vbCancel Then
Exit Sub
End If
If ret = vbNo Then 'オプション
ret = MsgBox(sText & "を付加します。" & vbCrLf & "Yes/ファイル名の手前(Prefix) " & _
"No/拡張子の手前(Sufix)" & vbCrLf & "Cancel/取りやめ", _
vbInformation + vbYesNoCancel, "ファイル名変更")
If ret = vbYes Then
Call AddFileNameChange(sText, nFiles, 1)
GoTo EndLine
ElseIf ret = vbNo Then
Call AddFileNameChange(sText, nFiles, 0)
GoTo EndLine
Else
Exit Sub
End If
End If
For Each v In nFiles
fName = Replace(v, BaseName, "", , 1, 1)
Name v As BaseName & Replace(fName, sText, sRept, , 1, 1)
Next v
EndLine:
If MsgBox("終了しました。確認しますか?", vbQuestion + vbOKCancel) = vbOK Then
tmp = Application.GetOpenFilename("Excel(" & sEXT & ")," & sEXT, , "ファイル名変更")
End If
End Sub
Sub AddFileNameChange(ByVal sText As String, nFiles As Variant, Optional location As Long)
Dim i As Long
Dim v As Variant
If location = 1 Then
'Prefix
For Each v In nFiles
i = InStrRev(v, "\")
Name v As Mid(v, 1, i - 1) & "\" & sText & Mid(v, i + 1)
Next v
Else
'Sufix
For Each v In nFiles
i = InStrRev(v, ".")
Name v As Mid(v, 1, i - 1) & sText & Mid(v, i)
Next v
End If
End Sub
No.2
- 回答日時:
あるフォルダを処理すれば、他のフォルダを考える必要は無い情況と思います。
(1)あるフォルダの全ファイル名を捉えるコードはWEBにあふれている。
Googleででも「VBA ファイル名 取得」や「vba フォルダ ファイル名 取得」で照会する。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
ほか多数。
その中から目的(処理対象)のブック(ファイル)名を選別するのは、質問に書いてないが
・エクセルブックxlsであること
・ファイル名に「課題」という文字を含んでいること
か?この点質問者が考えて、はっきり書かないと、部外者には情況がわからないのだ。
フォルダの全ファイルの場合は選別は不要なのは当たり前だが、どうかな。
(2)そのファイルを捉えたとして、ファイル名の変更は、これもWEBですぐ判る。
これもGoogleなどで「VBA ファイル名変更」で照会すれば、多数の記事がある。
http://officetanaka.net/excel/vba/tips/tips91.htm
など多数。
結局、WEB照会もせず、質問しているのではないですか。
プログラムを書こうとする場合、WEB照会ぐらい習慣付けないと。
No.1
- 回答日時:
参考:
■ VBAでファイルの操作
http://officetanaka.net/excel/vba/tips/tips91.htm
■ ファイルの移動、ファイル名の変更、ファイルの削除
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
上記のコードサンプルを参考にしてください。
実際には ボタンや リストボックス などを用いて 画面を作って あげれば
操作性が よくなります。
参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ファイル名の一部削除について
XML
-
ファイル名の特定文字だけ削除(トリミング)
フリーソフト
-
Excel VBA で フォルダ名の一部を一括変更(セルの値を取得して変更)
Excel(エクセル)
-
-
4
エクセル VBA ファイル名削除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルマクロで不特定なファ...
-
EXCEL VBA 指定したファイルが...
-
ファイルを開かずにマクロを実行
-
【マクロ】名前を保存する際に...
-
フォルダ内のexcelファイルを順...
-
データ参照先が別ファイルの場...
-
エクセル(マクロ)のファイル...
-
VLookupで参照する範囲を変数で...
-
vlookup関数の引数を変数で指定...
-
リンク切れチェックを行うマクロ
-
Excelのマクロでファイルを開く...
-
Accessのaccdbファイルを起動で...
-
エクセルVBAで送る操作
-
【Excel VBA】ファイル名が一...
-
Excel:上書き保存時にワークシ...
-
新規 xlsmファイルにする方法...
-
エクセル 複数ファイルの一括...
-
VBAでワークブックの名前を変数...
-
マクロつきExcelファイルからマ...
-
エクセル マクロの組み方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルマクロで不特定なファ...
-
EXCEL VBA 指定したファイルが...
-
ファイルを開かずにマクロを実行
-
Accessのaccdbファイルを起動で...
-
フォルダ内のexcelファイルを順...
-
エクセル(マクロ)のファイル...
-
【マクロ】名前を保存する際に...
-
エクセル 複数ファイルの一括...
-
【Excel VBA】ファイル名が一...
-
データ参照先が別ファイルの場...
-
エクセルマクロ 異なるファイ...
-
ファイルの保存場所を変えたら...
-
エクセルのシートの数を数えた...
-
フォルダ内のブック全部にパス...
-
accessフォルダを移動したらフ...
-
リンク切れチェックを行うマクロ
-
vlookup関数の引数を変数で指定...
-
VBAでワークブックの名前を変数...
-
vba初心者です。 質問です。 毎...
-
エクセルのxls形式からxlsx形式...
おすすめ情報