質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2093閲覧

Filesystemobjectの定義について

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/03/16 08:08

お世話になっております。
Filesystemobjectについて色々と調べているのですが、分からない点があります。

例えば、

Dim fso as new Filesystemobject

と、

Dim fso as Filesystemobject

の具体的な違いを知りたいです。

ちなみに、どちらも参照設定はちゃんとしているものとします。

そしてプログラムによっては、「New」がついているもの(上記コード)だとエラーが出たり、また、「New」がないコード(下記コード)だとエラーが出たりするものがあります。

特にNewがないときにエラーが出る場合があるのですが、この時のエラーは
イメージ説明
こういうエラーになります。

念のため、このエラーが出る時の具体的なコードも載せておきます。
イメージ説明

ですが、参照設定で「Microsoft Scripting Runtime」にチェックは入れてあります

なので、具体的にどういう時にNewが必要でどういう時にNewが必要じゃないのかを知りたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Dim fso as Filesystemobjectだけでは、エラーになります。

vba

1Dim fso as Filesystemobject 2Set fso = New Filesystemobject

というように変数宣言とオブジェクト生成(New)をセットで使用しないと。
(オブジェクト生成は次の行でなくてもいいですが)

vba

1Dim fso as New Filesystemobject

は宣言と生成を同時にする書き方です。(ただし、実際に生成されるのは、fsoを初めて使用するときですが)

1行で書く方法はシンプルでいいのですが、この書き方はお勧めできません。
理由は下記を参照してください。

VBAでクラス変数の宣言とNewを1行で書いてよいか | Excel作業をVBAで効率化

VBA オブジェクト変数の宣言時にNewすると何がまずいのか - t-hom’s diary

投稿2020/03/16 08:20

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/17 03:10

本当に分かりやすくて助かりました。 また、1行で書く書き方について、おすすめできないという理由も教えて下さってありがとうございました。 これについてはまだぴんと来ていないのですが、教えていただいたURLを熟読していきたいと思います。
guest

0

宣言の仕方は他の回答を参照していただくとして(たぶんそういうことを聞きたいわけじゃないと思うので)私からは一般的な話を。

オブジェクト(他の言語だとクラスなどと同意語)はインスタンス化して初めて使えるようになります。
インスタンス化というのは、実体を用意することです。
インスタンス化をしないと空っぽの枠があるだけの状態です。

ちょうどクラスという単語が出たので、それをいわゆる学校の教室に例えて説明してみます。
インスタンス化していない状態はだたの空っぽの教室です。
生徒がいないので名前を呼んでも返事はありません。
インタンス化することで生徒が入って呼べば返事があるようになります。
こんなイメージで伝わりますでしょうか。

で、オブジェクトとそうでないものの見分け方は、値だけなのか(ただの変数)、処理も含んでいるのか(オブジェクト)になります。

あとはここに出てきたキーワードでググってみてください。

投稿2020/03/16 08:43

編集2020/03/16 09:20
ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/17 03:06

インスタンスに関する分かりやすい説明もありがとうございました! 単純に言えば、定義しただけでは足りないよということだったのですね。 今後気を付けていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問