プロが教える店舗&オフィスのセキュリティ対策術

フォルダ内のすべてのExcelブックに対して、
それぞれ、セルA1内の文字列の中に「;」があるのですが、「;」のみを削除して、
上書き保存ができるVBAを知りたいです。
ご教示のほどよろしくお願いいたします。

A 回答 (4件)

こんにちは



・不明点は勝手に解釈しました。異なるところは適宜修正のこと。
・対称ブックが既に開いている場合は、上書き保存はできません。
・文字はご提示の全角「;」を対象にしていますが、半角を含める場合や、半角のみの場合も修正のこと。

Sub Q12915423()
Dim XL, folder, file, sh

With Application.FileDialog(msoFileDialogFolderPicker)
If Not .Show Then Exit Sub
folder = .SelectedItems(1) & "\"
End With

Set XL = CreateObject("Excel.Application")
file = Dir(folder & "*.xls")

While file <> ""
With XL.Workbooks.Open(folder & file)
For Each sh In .Worksheets
sh.Cells(1, 1).Value = Replace(sh.Cells(1, 1).Text, ";", "")
Next sh
.Close True
End With
file = Dir()
Wend

XL.Quit
MsgBox "END"
End Sub
    • good
    • 0

フォルダ内のファイルは以下みたいなやつなのでネットで探してください。


bb = dir "aaa" でパスを指定して
do while bb <> "" '←全てのファイルを調べるまで実施
dir 次のファイル
loop
で文字の削除はこんな感じ。(つづりなどは実行時に確認してください)
リプレイス文ね。
ActiveSheet.Range("A1").value = Replace(ActiveSheet.Range("A1").value, ";","")
上書き保存については、VBAの録音ボタンを押して上書き保存のVBAを録音して確認。
生成されたVBAをまねっこします。
確か ??.save as "ファイルパス" みたいなステートメントです。
で、必ず『上書きしますか』などと聞いてくるので、
エクセルに勝手にYesを答えてもらう命令
Application.確認モード = False みたいな、
確認をスルーする命令があるのでそれを入れておくと良いでしょう。
がんばってみてください。
    • good
    • 0
この回答へのお礼

文字の削除にはリプレイス文なのですね。
分かりやすくありがとうございます!
VBAの録音、まねっこは思いつきませんでした。頑張ってみます。

お礼日時:2022/04/24 11:28

回答で無くて、申し訳ないのですが・・・



例えば、ご希望のマクロを誰かが作ってくれたとします。
そのマクロを実行する勇気、ありますか?

対象ファイルが幾つあるのか知りませんが、手作業で確認しながら行った方が安心で確実ですよ!!
    • good
    • 1
この回答へのお礼

そうですね。データの数が少なければ手作業の方が確実ですね。
アドバイスありがとうございます!

お礼日時:2022/04/24 11:26

フォルダ内にあるファイルの名前を名前順などに順番に得て、


そのファイル名の拡張子がExcelのものでなかったら次のファイルへ、Excelのものであったらそのファイルをオープンし、
先頭のシートから順にセルA1を参照し、
内容が文字列であれば文字列内に「;」が無いか検索し、
なければ次のシートへ、あれば「;」を取り除く
1ファイル内の全シートの処理を終えたら上書き保存して次のファイル名の取り出しへ行き、ファイル名が得られなくなったらプログラム自体を修了する。

・・・といった操作手順をしっかり日本語で確認すればあとは一つ一つのやりたいことをVBAではどう記述するかを調べながら行うことで実現できます。
日本語を使った記述では何らかのチャート図を知っているとプログラムの構造を視覚的に表現できて漏れや間違いをし難くなります。

参考まで。
    • good
    • 1
この回答へのお礼

手順をわかりやすくしていただき、ありがとうございます!
チャート図も作成してみながら、VBA組んでみます。

お礼日時:2022/04/24 11:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!