指定のフォルダに30個のエクセルファイルがあったとします。
そしてそれぞれのエクセルファイルの指定のセルにはそれぞれ文字が入っています。
例:●●▲.xlsのB4には ①らいおん
■●●.xlsのB4には③ねこ
※ファイル端子は古い場合(xlsxやxlsmの場合ありうる)
そしてマクロを実行すると、
1つ目のファイル名が①らいおん.xls
2つ目のファイル名が③ねこ.xls
と一気に変えられるようにしたいです。
B4の位置や指定のフォルダの格納場所は都度、
マクロの中で指定できるようにしたいです。
マクロは計算式を貼り付けるぐらいの知識しかないため、
マクロの計算式をご教授いただけると幸いです(T_T)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
甘えて可愛いのは、女性だけです。
甘えられるのは好きではありませんが、最後に、アドバイスです。
reName = .Sheets(1).Range(trgCell).Value
セルの場合と同様にシート名に変更すれば良いです。
reName = .Sheets("ねこ").Range(trgCell).Value
こう書けば、ねこのシートが対象になりますね、この形はセルアドレスの時と似てますよね
なので、セルの時と同じような感じで変更すれば良いかと思いますよ。。
No.3
- 回答日時:
>A4 と指定したらA4のセルを拾ってそれぞれ一斉にリネームするという感じです。
reName = .Sheets(1).Range("B4").Value のアドレス部分を変数にします。
Dim trgCell As String '変数名は適当に
・
・
reName = .Sheets(1).Range(trgCell).Value
あとは、trgCellにどこでどのように値を代入するかです。
例えば、操作している実行ブックの表示シートのA1セルの値なら A1セルに B4 と入力して例と同じに実行出来ますね。
trgCell = ThisWorkbook.ActiveSheet.Range("A1").Value
場所は、Application.ScreenUpdating = False この上辺りでしょうか?
また、InputBoxなどで入力しても良いかもしれません。
trgCell = Application.InputBox(Prompt:="セルアドレスを入力してください", Type:=8)
If trgCell = "False" Or trgCell = "" Then Exit Sub
B4と入力してOKを押せば、例と同じです。
その他にも、ファイル名で処理を分けるとか、色々と考えられますね。
いずれにしても、先のコードやこの追記に関してもエラー処理を行っていません。
強いて言えば、問題があってもOn Error Resume Nextで処理を継続している点を考慮してください。
あまり分からないかも知れませんが、想定外の不具合が発生する可能性がありますので注意してくださいね。
そのあたりを考え、エラー処理を加える場合は、On Error Resume Nextをコメントにして処理から外して実行して
デバッグ対応を書き加えましょう。
Qchan1962さま
再度のご回答ありがとうございます;;
無事できました。
こんなすごいことができるとは思いませんでした・・
On Error Resume Nextをコメントにして処理から外して実行するのですね!
承知しました!ありがとうございます(*^^*)
更に甘えても大丈夫ですか?(;_;)
実は指定フォルダ格納しているエクセルファイルにはたまにシートがたくさんあることがありまして、
そのシートの名前は必ずしも一番左にあったりSheet1という名前であったりするわけではなく、
すべてのエクセルシートには必ず共通の名前のシートがあって、そのシートの指定のセルの
名前に変更したい場合があります。
この場合、たとえばねこというシートがあった場合は、
ねこ とシート名を指定したうえで、そのねこのシートにある指定セル(ここはもう解決していただいています)
の名前に変更したいという感じです。
No.1
- 回答日時:
こんにちは、
突っ込みどころがいくつかありますが、それはそれとして
>xlsxやxlsmの場合ありうる
>.xlsしたい
マクロ有効ブックを.xlsにしたいのでしょうか?ご使用のExcelバージョンは何でしょう?
この辺りは、問題になる可能性がありますが、、強引で良いのかな?
>B4の位置や
シートは何処?
>B4の位置や指定のフォルダの格納場所は都度、マクロの中で指定できるようにしたいです。
>一気に変えられるようにしたいです。
これには矛盾があるように思います。都度とありますが、
インプットボックスやダイアログなどで都度聞かれるのも一気と解釈して良いのでしょうか?
(これについてはうまく理解できていないかも知れませんが)
>マクロの計算式をご教授いただけると幸いです(T_T)
マクロの計算式は、プログラムを指しているのでしょうか?
1回しか実行しないコードかも知れませんが、コードはともかく処理や手順を考える様にしなければ
人にも伝えられないと思いますので、、言葉で良いので、ご自身で処理、手順を考えて見てください。
考えた処理や手順をそのまま検索すれば、参考になるコードは、山の様にあります、後は理解するだけです。
それが出来ないのであれば、ここで処理を書いても同じことになります。
語っても仕方ないので、
私は暇つぶしになり、ご質問者は目的を達成できる、、そう考えればwinWinですね。
そこで、参考になるか分かりませんが、問題ごとはすべて、On Error Resume Nextで飛ばして。。
同じフォルダにある.xls?のファイルを自身のシートインデックス1のB4セルの値でリネーム処理(拡張子.xls)をする
処理を下に示します。
Sub Sample()
Dim FSO As Object, f As Variant
Dim pF As String, reName As String
Dim cnt As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CreateObject("WScript.Shell").SpecialFolders("desktop")
If .Show = True Then
pF = .SelectedItems(1) & "\"
End If
End With
If pF = "" Then Exit Sub
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each f In FSO.GetFolder(pF).Files
If LCase(FSO.GetExtensionName(f.Name)) Like "xls*" Then
With Workbooks.Open(pF & "\" & f.Name)
reName = .Sheets(1).Range("B4").Value
.Close SaveChanges:=False
End With
If reName <> "" Then
f.Name = reName & ".xls"
cnt = cnt + 1
End If
End If
Next f
Application.DisplayAlerts = True
Application.ScreenUpdating = True
If cnt > 0 Then
MsgBox cnt & " 件 処理しました。", vbExclamation
Else
MsgBox " 該当ファイルはありませんでした。", vbExclamation
End If
Set FSO = Nothing
End Sub
Qchan1962さま
ご回答ありがとうございます;;
再現できました!私の拙い説明にもかかわらず本当に感謝いたします。
指定のフォルダを選択できるようにしていただいたと思います。その中には.xlsのファイルであったり
古い形式のエクセルファイル拡張子が混在していることがあるのです。そして、リネームする場合には、拡張子は
変えずにそのままリネームできるようにしたいという趣旨でした。また、都度というのはまさに
指定のフォルダ→今回のプログラムを実行すると指定のフォルダが選べる
ということなので希望どおりのプログラムです。また今回はB4のセルに入力された名前にリネームできるように
していただいていたと思うのですが、例えばこれをプログラムを実行するマクロの中でどのセルの名前を変更しますか?
とダイアログがでて、A4 と指定したらA4のセルを拾ってそれぞれ一斉にリネームするという感じです。
もしくは、ダイアログで出なくてもよいので、マクロ実行ファイルの中のどこかのセルに B8と入力しておけば
そのB8のセルを拾って変更するというイメージです。
こんなことは可能なのでしょうか・・?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/26 17:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
マクロを実行すると画像がズレ...
-
セル背景や文字を点滅させる方法
-
【マクロ】ファイル名の変更に...
-
範囲指定をしてPDF保存vba
-
EXCELのセルや文字色の反映
-
excelで セルの移動時に...
-
クリックすると文章が表示され...
-
セルがクリックされた回数をカ...
-
太字に設定されているセルの個...
-
セルの値が変ると自動でマクロ...
-
フォントの色を指定して削除出...
-
エクセル 未入力セルがあると...
-
現在のセルの位置を返す関数は...
-
Excelで、図形内の文字をセルに...
-
小数点以下の文字だけ書式を変...
-
エクセル マクロ 相対パスか...
-
【EXCEL】先週の月曜日の日付を...
-
Excelで挿入した図をセルの中央...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
Excel内での検索結果をシート...
-
クリックすると文章が表示され...
-
Excelでセルをクリックす...
-
太字に設定されているセルの個...
-
Excel ハイパーリンクのURLを別...
-
Excelで、図形内の文字をセルに...
-
マクロを実行すると画像がズレ...
-
現在のセルの位置を返す関数は...
-
Excelで挿入した図をセルの中央...
-
フォントの色を指定して削除出...
-
VBA 見つからなかった時の処理
-
エクセルでの検索ボックスの作...
-
エクセル 未入力セルがあると...
-
Excel2007 色のカウント (VBA)
-
エクセルでPDFリンクを大量...
-
【EXCEL】先週の月曜日の日付を...
-
EXCELのセルや文字色の反映
-
セルがクリックされた回数をカ...
おすすめ情報