
以下のコードをご覧ください
●ファイル名前をインプットボックスに入力。指定の場所にエクセルファイルを保存します
ファイル名は あいうえお11.xlsx 等です。11の部分だけ変更可能
この時、以下の1番、2番の条件を加える為のコードをご存じの方、教えて下さい
以下のコードを修正しても1から新しいコード作成でもどちらでもOKです
宜しくお願いします
1インプットボックスには半角数字2ケタしか入力できないようにする
⇒例:01 02 11
2保存先に同じファイルがあったら、再度、ファイル名のインプットボックス
入力へ戻るようにする
【コード】
Sub 名前を付けて別ファイル保存()
Dim filename3 As String
filename3 = InputBox("ファイル名、半角数字2ケタを入力して下さい")
If filename3 <> "" Then
ThisWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs "C:\Users\2020\OneDrive\マクロ\ブックからブックへコピー\" & "あいうえお" & filename3 & ".xlsx"
End If
End Sub
No.1ベストアンサー
- 回答日時:
以下のコードを修正し、指定された条件を追加します。
条件
1.インプットボックスには半角数字2ケタしか入力できないようにする。
2.保存先に同じファイルがあったら、再度インプットボックス入力へ戻るようにする。
以下のように変更してみてください:
Sub 名前を付けて別ファイル保存()
Dim filename3 As String
Dim filepath As String
Dim isValid As Boolean
Do
' ファイル名の入力を促す
filename3 = InputBox("ファイル名、半角数字2ケタを入力してください(例:01, 02, 11)")
' 半角数字2ケタかをチェック
isValid = (Len(filename3) = 2 And IsNumeric(filename3))
If Not isValid Then
MsgBox "半角数字2ケタで入力してください。", vbExclamation
Else
' 保存先のファイルパスを作成
filepath = "C:\Users\2020\OneDrive\マクロ\ブックからブックへコピー\" & "あいうえお" & filename3 & ".xlsx"
' 同じファイル名が存在するか確認
If Dir(filepath) <> "" Then
MsgBox "同じファイル名が存在します。別の番号を入力してください。", vbExclamation
isValid = False
End If
End If
Loop Until isValid ' 入力が正しい場合、ループを終了
' ファイルをコピーして保存
ThisWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs filepath
End Sub
追加した内容
1.半角数字2ケタの入力チェック:入力が2ケタの数字でない場合、エラーメッセージを表示し再入力を促します。
2.ファイルの重複チェック:指定のフォルダに同じ名前のファイルが存在する場合、エラーメッセージを表示し再入力を促します。
丁寧にコメントまで記入いただきましてありがとうございます
きれいに動きましたが
半角数字2ケタのところ、全角数字でも動きます
修正方法あれば、ご指導お願い致します
【参考コード】
isValid = (Len(filename3) = 2 And IsNumeric(filename3))
No.2
- 回答日時:
以下のようにしてください。
Sub 名前を付けて別ファイル保存()
Dim filename3 As String
Dim REG As Object
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Pattern = "^\d\d$"
Dim path As String
Do
filename3 = InputBox("ファイル名、半角数字2ケタを入力して下さい")
If filename3 = "" Then Exit Do
If RegEx.Test(filename3) = True Then
path = "C:\Users\2020\OneDrive\マクロ\ブックからブックへコピー\" & "あいうえお" & filename3 & ".xlsx"
If Dir(path) = "" Then
Exit Do
Else
MsgBox (path & " は既に存在します")
End If
Else
MsgBox ("半角2桁の数字を入力してください")
End If
Loop
If filename3 <> "" Then
ThisWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs path
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
-
【マクロ】メッセージボックスにて、キャンセルをクリックしたら、マクロ終了。エクセルへ戻すには
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
エクセルマクロについて教えて下さい。
Excel(エクセル)
-
5
フィルターをかけた時の、別の列に書いてある数字の表に現れた数量のみを表す式を教えてください。
Excel(エクセル)
-
6
フィルター時の、別の列に書いてある数字の表に現れた個別の数字の数量のみを表す式を教えてください。
Excel(エクセル)
-
7
エクセルの数式につきまして
Excel(エクセル)
-
8
【マクロ】Withステートメント2つを簡略する為には?
Excel(エクセル)
-
9
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
-
10
条件付き書式の効率的な設定の仕方について
Excel(エクセル)
-
11
エクセルシート保護を解除させない方法。
Excel(エクセル)
-
12
【マクロ】複数の日付データをYYYY/MM/DDに読替えて、別ブックへ転記したい
Excel(エクセル)
-
13
excelVBAについて。
Excel(エクセル)
-
14
エクセル 別セルの2進数表示を合わせて表示したい
Excel(エクセル)
-
15
excelVBAについて。
Excel(エクセル)
-
16
excelVBAについて。
Excel(エクセル)
-
17
エクセルの関数ついて
Excel(エクセル)
-
18
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
19
UNIQUE関数、配列数式を使わずに品名ごとの集計を求めたい
Excel(エクセル)
-
20
セル内が空白設定なのに#N/Aと出てくるのを回避する方法を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【マクロ】【相談】Excelブック...
-
【画像あり】オートフィルター...
-
【マクロ】実行時エラー '424':...
-
エクセルのリストについて
-
【マクロ】左のブックと右のブ...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
他のシートの検索
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【マクロ】変数に入れるコード...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】【画像あり】❶ブック...
-
エクセルシートの見出しの文字...
-
【マクロ画像あり】❶1つの条件...
-
【マクロ】【画像あり】ファイ...
-
エクセルの複雑なシフト表から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報