ギリギリ行けるお一人様のライン

ご回答者様

いつもお世話になっております。
VBAでブックに名前を付けて保存する際に下記ソースになるかと存じます。

Sub sample()

ActiveWorkbook.SaveAs Filename:="C*¥Sample.xls"

テキストを見て学習していますが
Filenameの後の:は何故つける必要があるのでしょうか。

又、C*¥Sample.xlsですがファイル名を指定して保存する際には
C*+ファイル名+書式という認識で宜しいでしょうか。

お忙しい所恐れ入りますが宜しくお願い致します。

A 回答 (5件)

>使い分けとかどのようにされているか教えて頂けないでしょうか。



あくまで私(趣味、独学)の場合です。習慣と言う部分も多くあります。
プロの方がどうされているか分かりませんが、恥ずかしながら。

さすがに、MsgBoxなどでは名前付き引数で指定しないです。QAサイトの回答などの時は、使う場合があります。
SaveやOpen メソッドの場合、引数(パラメーター)の数も多く、下位にあるパラメーターを使いたい場合などの時も使いますね。
また、定数でなく変数で代入する事が多いので後からわかるように使用したりもします。

先の例でボタンを省略(OKのみ)する場合
この様に書きます。
MsgBox "こんにちは", , "てすと"
MsgBox "こんにちは", "てすと" これはエラーです。ボタンの場所にStringが入っています。(ボタンはVbMsgBoxStyleでなければなりません。)
, ,なんとなく嫌ですね。パラメータの沢山あるメソッドでは、間違えやすく分かり難いと思います。
なのでパラメータ名で明示的に代入するようにすれば、後からも分かり易く省略可能パラメータの必要なものだけを使う事も出来ますね。
うまく説明出来たか分かりませんが、参考まで
    • good
    • 0

→他の事例があれば一度作ってみます。


MsgBoxの場合です。名前付き引数は、図の通りです。

Option Explicit
’名前付き引数で指定しない場合(順番通り)
Sub MMM()
 MsgBox "こんにちは", vbYesNo, "てすと"
End Sub
’名前付き引数で指定(順不同可)
Sub MMM1()
 MsgBox Title:="てすと", Prompt:="こんにちは", Buttons:=vbYesNo
End Sub
「VBA ブックに名前をつけて保存」の回答画像4
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
表題の件、実行後の結果は同じですね。
すみません、使い分けとかどのようにされているか教えて頂けないでしょうか。
よろしくお願いいたします。

お礼日時:2019/12/22 12:07

こんにちは、


先の回答と重複する部分については、失礼をします。すみません。

>Filenameの後の:は何故つける必要があるのでしょうか。
必要があります。
=の場合は、エラーになると思います。

>ActiveWorkbook.SaveAs Filename:="C:¥Sample.xls"
オブジェクト.メソッド名 引数名1:=引数1,・・・・

メソッド(命令)オプション(引数)。引数は命令の詳細みたいなもので、どのように等の内容です。
(必須の引数もあれば、省略可能な引数もあります。)

=は、代入や等しいと言う意味です。
:=も、代入と言う意味では同じですが、名前付き引数(オプション)に対して右辺をセットすると言う意味です。

これは、VBAの仕様ですので、メソッドのオプション(名前付き引数)を直接操作する場合は、:= を使うと覚えておけば良いかと。

ただ、名前を省略して値をセット(代入)していく書き方もあるので、分かり難いかも知れませんが。参考まで
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
ご回答頂きありがとうございます。
Filename:=で右辺の名前を代入すると今回は覚えます。
(確かに=ですとエラーになりました。)
ここは今まで実務で使用してこなかったので少しややこしいですね・・・
メソッドのオプション(名前付き引数)を直接操作する場合は、:= を使うと覚えておけば良いかと。
→他の事例があれば一度作ってみます。

お礼日時:2019/12/22 10:38

「名前付き引数」ですがメゾットなどに元々セットしてある引数についている名前です。

名前付き引数を使わない場合は順番に引数を指定しないといけませんが、使った場合は順番関係なく引数を並べられるし、どんな引数かもわかりやすいです。
    • good
    • 0

「:=」は名前付き引数に代入するときに使います。


ちなみに「SaveAs メソッド」には
FileName
FileFormat
Password
WriteResPassword
ReadOnlyRecommended
CreateBackup
AccessMode
ConflictResolution
AddToMru
TextCodepage
TextVisualLayout
Local
などの名前付き引数が有ります。

「"C*¥Sample.xls"」は「"C:\Sample.xls"」の事でしょうか?それとも「*」はワイルドカードとして使おうとしているのでしょうか?保存するときにはワイルドカードは絶対使えませんよ!だって勝手な名前で保存なんてありえませんから…
「"C:\Sample.xls"」だとしてもCドライブのルートは権限の問題で保存できないことが有りますのでお勧めできません。
    • good
    • 0
この回答へのお礼

お世話になっております。
早速ご回答頂き誠にありがとうございます。
名前付き引数とは具体的にどのような意味でしょうか。
ネットで調べてみましたが意味が全く分からず・・・

(テキストで勉強していますが今まで=しか使用してきませんでした。)

「"C*¥Sample.xls"」は「"C:\Sample.xls"」
→タイプミスです。


よろしくお願いいたします。

お礼日時:2019/12/21 19:14

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


おすすめ情報