アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、フロッピーにファイルを保存する為のマクロを創っているのですが
ワイルドカードの使い方を教えて下さい

ここから*****

Sub フロッピー保存()
'
'
Dim fNAME As String

fNAME = ActiveWorkbook.Name 'アクティブなブックのファイル名を取得

'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合)
If fNAME = "Book*" Then

fNAME = Application.InputBox(prompt:="新規ファイルですね。ファイル名を入力して下さい", _
         Title:="新規ファイル入力", Type:=2)

Else

ActiveWorkbook.Save

End If

'取得したファイル名でフロッピーディスクに保存

ActiveWorkbook.SaveAs Filename:="A:\"&fNAME, _
   FileFormat:=xlNormal, _
Password:="",WriteResPassword:="",ReadOnlyRecommended:=False, _
CreateBackup:=False

End Sub

ここまで*****

>>'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合)
>> If fNAME = "Book*" Then

この、If fNAME = "Book*" Then が有効に働いていないみたいなんです。
「ワイルドカード・・・* や ? はマクロではどの様な書式が正しいのでしょう

それと、エラー処理なんですが
InputBoxメソッドでキャンセルやファイル名を入力しないで「OK]が押された
場合の処理、又フロッピーが挿入されていなかった場合などの
エラー処理の対処法を教えて下さい

A 回答 (1件)

VBAでは、文字列変数に対して、ワイルドカード検索をサポートしてませんので、



a)正規表現を使う。
b)複数の比較式に分解する。

――という手法を取ります。

a)の方は、VBScriptのヘルプを御覧下さい。
b)については、例えば、

If Instr(1, fName, "Book" ) = 1 Then
If Left( fName, 4 ) = "Book" Then

――が同じ比較になりますよね。

もっとも今回の場合、新規作成かどうかが知りたいのだから、

If ActiveWorkBook.Path = "" Then

――で問題ないかと。

エラー処理については、基本は、各処理の後で、Err.Numberが0でないかをチェックし、妥当な処理をする、というものになります。
まあ、実行時エラーのままで、デバッグモードに入る方が、下手なエラーハンドラよりよっぽど役立つ時もありますが。
    • good
    • 0
この回答へのお礼

>>VBAでは、文字列変数に対して、ワイルドカード検索をサポートしてませんので

そうなんですか!!
全く知りませんでした。恥ずかしい限りです。

>>a)正規表現を使う。
>>b)複数の比較式に分解する。

対処法まで書いて頂きありがとうございます


>>If ActiveWorkBook.Path = "" Then

新規作成の時はこのように記述するんですね・・
うまく動作しました。

お礼日時:2002/08/16 23:12

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