エクセル2000です。
下記のようなVBAを記述しました。
「はい」なら別名保存
「いいえ」なら上書き保存のつもりです。
問題点
Sheets("AAA").Range("I9")の文字列内に.(半角ピリオド)があるとファイルに拡張子がつきません。
どうしたらよいのでしょうか?非常に困っています。
Sub 保存ボタン()
Dim myYN As Integer
Dim DRtn As Boolean
Dim fn As String, fn2 As String
fn = Sheets("AAA").Range("I9").Value & "_保存"
fn2 = ThisWorkbook.Name
myYN = MsgBox("現在の入力内容を別名で保存しますか?" _
+ Chr(&HD) + Chr(&HA) + "別名保存なら「はい」" _
+ Chr(&HD) + Chr(&HA) + "上書保存なら「いいえ」を選択します。" _
+ Chr(&HD) + Chr(&HA) + "", vbYesNoCancel + vbQuestion, " 別名保存")
If myYN = vbCancel Then Exit Sub 'キャンセルなら終了
If myYN = vbNo Then fn = fn2 '上書保存ならファイル名はそのまま
DRtn = Application.Dialogs(xlDialogSaveAs).Show(ARG1:=fn, ARG2:=1)
If DRtn = False Then Exit Sub 'ファイル名を消されたらキャンセル
ThisWorkbook.Save '保存
ThisWorkbook.Close '閉じる
End Sub
No.3
- 回答日時:
こんにちは。
KenKen_SP です。xlDialogSaveAs に引数で渡す保存ファイル名に拡張子をつければいけると
思います。
また、xlDialogSaveAs で OK がクリックされると保存されますので、改めて
Save メソッドを実行する必要はありません。
余談ですが、MsgBox の Prompt の部分で文字列の連結に(+)演算子が使われて
いますが、(&)演算子を使うべきです。
(+)演算子は、その前後両方の演算項目が String 型ならば、文字列の連結と
して作用しますが、数値型と文字列型を連結させようとするとエラーとなり
ます。
Sub 保存ボタン()
Dim myYN As Integer
Dim DRtn As Boolean
Dim fn As String, fn2 As String
fn = Sheets("AAA").Range("I9").Value & "_保存.xls" '<-- 拡張子追加
fn2 = ThisWorkbook.Name
myYN = MsgBox("現在の入力内容を別名で保存しますか?" _
& Chr(&HD) & Chr(&HA) & "別名保存なら「はい」" _
& Chr(&HD) & Chr(&HA) & "上書保存なら「いいえ」を選択します。" _
& Chr(&HD) & Chr(&HA) & "", vbYesNoCancel Or vbQuestion, " 別名保存")
If myYN = vbCancel Then Exit Sub 'キャンセルなら終了
If myYN = vbNo Then fn = fn2 '上書保存ならファイル名はそのまま
DRtn = Application.Dialogs(xlDialogSaveAs).Show(ARG1:=fn, ARG2:=1)
If DRtn = False Then Exit Sub 'ファイル名を消されたらキャンセル
ThisWorkbook.Close '閉じる
End Sub
ありがとうございます。無事解決しました。
> xlDialogSaveAs で OK がクリックされると保存されますので、改めて
> Save メソッドを実行する必要はありません。
あ、な~るほど!言われてみればそうですね。
ご指摘ありがとうございました。
> MsgBox の Prompt の部分で文字列の連結に(+)演算子が使われて
> いますが、(&)演算子を使うべきです。
これまで何の疑問も持たず、改行の場合こう書いてきました。
ご教示ありがとうございました。
No.1
- 回答日時:
ファイル名にする文字列中に半角ピリオドがあると、エクセルはそれ以降の文字列を拡張子と判断するのでそういうことが起きるのだと思います。
最初から文字列中の半角ピリオドを削除しましょう。
こんな感じでどうですか?
Sub 保存ボタン()
Dim myYN As Integer
Dim DRtn As Boolean
Dim fn As String, fn2 As String
fn = Sheets("AAA").Range("I9").Value & "_保存"
fn1 = Application.WorksheetFunction.Substitute(fn, ".", "")'ピリオド削除
fn2 = ThisWorkbook.Name
MsgBox fn1
myYN = MsgBox("現在の入力内容を別名で保存しますか?" _
+ Chr(&HD) + Chr(&HA) + "別名保存なら「はい」" _
+ Chr(&HD) + Chr(&HA) + "上書保存なら「いいえ」を選択します。" _
+ Chr(&HD) + Chr(&HA) + "", vbYesNoCancel + vbQuestion, " 別名保存")
If myYN = vbCancel Then Exit Sub 'キャンセルなら終了
If myYN = vbNo Then fn1 = fn2 '上書保存ならファイル名はそのまま
DRtn = Application.Dialogs(xlDialogSaveAs).Show(ARG1:=fn1, ARG2:=1)
If DRtn = False Then Exit Sub 'ファイル名を消されたらキャンセル
ThisWorkbook.Save '保存
ThisWorkbook.Close '閉じる
End Sub
この回答への補足
ピリオドがついた名前でエクセルのファイル保存ができないのであればそう説明して納得させるのですが、手入力の場合はABC Inc.(エイビイシー インク).xlsで保存できますので困っちゃうんです。
補足日時:2005/06/28 10:47さっそくありがとうございます。
たしかにピリオド削除でうまくは行くのですが、そうすると別の問題(エクセルとは別ですが)が発生するのです。
というのはSheets("AAA").Range("I9")に入力されるのは企業名なんです。
それも英文で、ABC Inc.(エイビイシイ インク)というような入力なのです。
会社名からは、たとえピリオドといえども一部を削除できないんですよ~。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
saiで絵を書いてるんですけど P...
-
保存すると背景が真っ黒になっ...
-
VBAを使って、上書き保存の...
-
windows10で作業を終了する際の...
-
GIFファイルの保存ってできない...
-
イラレデータのPDF保存 サイズ...
-
Googleドライブで保存した(自...
-
シールテープの代わり
-
pdfをjpgに変える方法
-
ID登録の時
-
イラストレーターに取り込んだ...
-
【アイコンの背景色が黒塗りに...
-
ペイントのBMPで作ったアイコン...
-
保存した画像の余白カットしたい
-
Snipping Toolのキャプチャ画面...
-
イラストレータの画像をJPG形式...
-
画像の拡大率を固定したまま次...
-
GIMPとInkscapeについて
-
JPEG画像に直接URLを埋め込むこ...
-
画像の色を一括して反転させたい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleドライブで保存した(自...
-
VBAを使って、上書き保存の...
-
保存すると背景が真っ黒になっ...
-
シールテープの代わり
-
GIFファイルの保存ってできない...
-
パワーポイントの図をGIF形式の...
-
「Word2019」の自動保存を解除...
-
Instagramの 王冠を逆さにした...
-
イラレデータのPDF保存 サイズ...
-
Wordで内容変更後別名保存する...
-
拡張子が jfif のファィ...
-
saiで絵を書いてるんですけど P...
-
windows10で作業を終了する際の...
-
MATLABのグラフをファイルに保...
-
VBAでエクセルの内容を変換し、...
-
operaでの画像の保存についてで...
-
フォトショップ保存時のファイ...
-
(VBA)特定のシートのみを名前...
-
ファイル名の後につくversionと...
-
CLIP STUDIO PAINTの漫画をブロ...
おすすめ情報