No.11ベストアンサー
- 回答日時:
>では、なぜ私の質問のプログラムやtatsumaru77様の挙げてくれたプログラムでは、なぜ、SETWSH=Nothingが出てこなかったのでしょうか?
作法なので、作法を守る人と守らない人がいます。
私は、原則守らないほうです。
従って、SET WSH=Nothingは行いません。
しかしながら、SET WSH=Nothing を行ったほうが悪くなることはないので、SET WSH=Nothingを行ったほうが第三者からは好まれるかもしれません。
https://www.moug.net/tech/exvba/0150027.html
https://qiita.com/milky04/items/3dd47bc8b11ed88e …
をみると、SET WSH=Nothingを行わなくてよい場合もあるが、
SET WSH=Nothingを行わないといけない場合もあるとなっています。
では、どういうときに行わなくてよいのか、どういうときに行わないといけないのかは、かなり高度な判断が必要になるようです。
私は、SET WSH=Nothingを行わなくても、いままで、特に不都合がなかったので、SET WSH=Nothingを行っていません。
あなたが、今後、どうするかは、あなた自身で判断されればよいかと思いますが、とりあえずは、SET WSH=Nothingを行っておけば安全なので、
そのようにされるのがよいかもしれません。
この問題は、今すぐに結論を出さないで、中級者レベルになったとき、
再度考えてみると、良いかもしれません。
No.10
- 回答日時:
>以下のURLで、Set WSH=Nothingがなぜ付いているのでしょうか?
回答:
Set 〇〇 = XXXX
のようにして設定した〇〇は、それを使用しなくなったときに
Set 〇〇=Nothing
とするのが、作法とされています。
詳しくは下記を参照ください。
https://www.moug.net/tech/exvba/0150027.html
https://qiita.com/milky04/items/3dd47bc8b11ed88e …
No.8
- 回答日時:
>もし、マクロブックが2つ以上ある場合はどうすれば良いのでしょうか?教えて頂けると幸いです。
マクロブックがいくつあるかは、関係ありません。
A1.xlsm と A2.xlsmとマクロブックが2つあって、
A1.xlsmにsub sample1() があり
A2.xlsmにsub sample2() があり場合、
sample1でデスクトップのB.xlsxを開きたいなら、
sample1内にNo7のマクロを記述します。
sample2でデスクトップのB.xlsxを開きたいなら、
sample2内にNo7のマクロを記述します。
No.7
- 回答日時:
>CreateObject("WScript.Shell").SpecialFolders("Desktop") と、CreateObject("WScript.Shell").SpecialFolders("MyDocuments") でこれで、これを実行すると、どのような物をが表示されて、どういう時に、使われるのでしょうか?先ほどのパスの表記と全く違う感じですね。
回答:No4の話の続きでB.xlsxをデスクトップに格納するとします。
A.xlsmはデスクトップに格納する必要はありません。
B.xlsmをオープンするとき、デスクトップにあるので、
以下のようにすると、B.xlsxのパスが取得できます。
Dim Path As String, WSH As Variant
Set WSH = CreateObject("WScript.Shell")
Path = WSH.SpecialFolders("Desktop") & "\" & "B.xlsx"
Workbooks.open Path
とするとB.xlsxがオープンできます。
No.6
- 回答日時:
>マイドキュメントのパスの取得とデスクトップのパスの取得について教えて頂けると幸いです。
回答:下記URLを参照ください。
http://officetanaka.net/excel/vba/tips/tips107.htm
事前にWSHの宣言及び設定のために
Dim Path As String, WSH As Variant
Set WSH = CreateObject("WScript.Shell")
上記の行が必要ですが、そのあとで
①Path = WSH.SpecialFolders("Desktop") & "\"
②Path = WSH.SpecialFolders("MyDocuments") & "\"
を行ってます。
上記の
①がデスクトップのパスを取得している箇所です。
②がマイドキュメントのパスを取得している箇所です。
No.4
- 回答日時:
>「自身と同じフォルダ」を利用するとはどういう事でしょうか?
回答:以下のようなブックが2つあるとします。
1つは、A.xlsm でマクロが格納してあるブックです。マクロ名はsub sample()とします。
もう1つは、B.xlsxとします。
sampleを実行して、B.xlsxを操作する場合は、まずB.xlsxをオープンする必要があります。
この時、Workbooks.open "B.xlsx" としただけではだめで、B.xlsxの存在する場所をフォルダ名も含めて
指定する必要があります。例として、B.xlsxが"C:\data\sample1"というフォルダ内に存在するなら、
Workbooks.open "C:\data\sample1\B.xlsx"
と書く必要があります。
これは、
file_path = "C:\data\sample1\B.xlsx"
Workbooks.open file_path
のように書いても、同じ結果になります。
この文字列("C:\data\sample1\B.xlsx")をパスといいます。
もし、B.xlsxの場所が永久に変わらないのであれば、特に、これから書くことは不要です。
なぜなら、ずっと、"C:\data\sample1\B.xlsx"を使い続ければよいわけですから。
何か、事情があって、B.xlsxの格納先が"D:\data\saple2"に変わったとすると、その場合は
file_path = "D:\data\sample2\B.xlsx"
Workbooks.open file_path
のようにB.xlsxのパスを変更する必要があります。
もちろん、変更することが大変でなければ、なんの問題もありません。
変更すれば正しく動作します。
ところが、このマクロを運用者が使っている場合、
(あなたがマクロの作成者で、そのマクロを使っている人を運用者とします。
運用者はマクロを使うだけで、マクロを修正するスキルはありません)
パスの変更があるたびに、マクロを修正をする必要があります。
そうなると、あなたは、その変更のために余分な時間を使わなければいけません。
頻度が少なければ、我慢できるでしょうが、たびたびこのようなことが起こると、
b.xlsxの格納場所が変わっても、パスを変更しないで済む方法があるなら、そのようにしたいと考えるはずです。
その場合、以下のような対策を施せば、b.xlsxの格納場所が変わっても、マクロの修正(パスの修正)
をしなくて済むようになります。
1.B.xlsxとマクロのあるブック(A.xlsm)は、必ず同じフォルダに格納すること。
(従って、B.xlsxを移動する場合は、A.xlsmも同じフォルダに移動すること)
2.マクロは、以下のように変更します。
file_path = Thisworkbook.Path & "\" "B.xlsx"
Workbooks.open file_path
A.xlsmを格納してあるフォルダは、Thisworkbook.Pathで参照可能です。
もし、A.xlsmが、"D:\data\saple2"に格納されているなら
file_path = Thisworkbook.Path & "\" & "B.xlsx"
を実行すると
file_pathの内容は、"D:\data\saple2\B.xlsx"になります。
従って、B.xlsxをどこに移動しても(マクロのあるブックも同じフォルダに移動するなら)
マクロは一切修正する必要がなくなります。
①マクロのあるブックと処理対象となるブックを同じフォルダ内に格納すること、
②そして、そのフォルダのパスをThisworkbokk.Pathで参照すること、
この①②が「自身と同じフォルダ」を利用するという意味になります。
>①パスの取得とは何でしょうか?
回答:すでに、出ていますが、
B.xlsxの位置を示す文字列を取得することを、パスの取得と呼びます。
file_path = "D:\data\sample2\B.xlsx"
とか
file_path = Thisworkbook.Path & "\" "B.xlsx"
の個所が、それに該当します。
>②これらを使うのも便利です。のこれらとは何でしょうか?
回答:マイドキュメントのパス、デスクトップのパスのことです。
No.3
- 回答日時:
「自身」については説明がありますね。
「パス」は「ファイルの住所」と書かれていますが、その後の説明を見るとフォルダパスのことのようです。ファイルシステム上のフォルダの場所を表す文字列です。たとえば、あなたのドキュメントフォルダはC:¥Users¥<ユーザ名>¥Documentsとかいう文字列です。
これらは「自身」のフォルダ、マイドキュメント、デスクトップです。ちゃんと読めばわかる筈。
しかし、なんかわかりにくい本です。やめた方がいいと思います。やりたいことが書いてあるWebページを検索して読んだ方がいいです。
No.2
- 回答日時:
自身と同じフォルダとは、パソコンの中で、そのエクセルが置いてある場所の位置であり、その位置の情報を入手して使うということです。
①→その位置を文字列で表したものをパスと言います。その文字列を得ることです。
②エクセルファイル自身が、VBAで自分が置かれているパスを入手できると、便利という意味です。パスを入手できると、パソコンのフォルダのどこに置いても同じようなファイル操作のプログラムを書くことができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの「パスの定義」の仕方について教えてください 2 2024/01/23 10:44
- iPhone(アイフォーン) Phoneの写真がいっぱいになりました。 月額130円の課金はしたくないので、 調べてみたら、 ①G 3 2023/06/06 11:07
- メルカリ メルカリの使い方の中に次の様な説明があるのですが、『配送用2次元コード生成』のやり方が分かりません。 5 2023/11/29 05:39
- Excel(エクセル) 【ExcelVBA】Powerクエリのソースフォルダのパスを自動更新できないでしょうか? 3 2023/09/06 07:50
- 数学 中3数学三平方の定理 2 2022/11/19 18:44
- サーバー WindowsのPCからコマンドでサーバーにファイルの送受信を行う方法について 3 2023/09/11 21:48
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Chrome(クローム) Chrome 非表示のブックマーク 多量 下にスクロールするのに時間かかる 良い方法は 1 2023/01/16 23:34
- 法学 会社のHPで使う画像や写真は商用利用になりますでしょうか? 3 2024/02/02 15:50
- その他(資産運用・投資) 投資信託の事や不動産の事が詳しく分からずこちらへ何度か質問させていただいて少しずつわかってきましたが 3 2024/02/11 16:33
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
Excelの計算が合いません。 諸事情で会計の簡素な購入・販売諸元表を作っているのですが、一つの項目
Excel(エクセル)
-
5
excelVBAについて。
Excel(エクセル)
-
6
excelVBAについて。
Excel(エクセル)
-
7
エクセル 入力があった場合のみ隣の関数を表示
Excel(エクセル)
-
8
フィルターをかけた時の、別の列に書いてある数字の表に現れた数量のみを表す式を教えてください。
Excel(エクセル)
-
9
excelVBAについて。
Excel(エクセル)
-
10
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
11
【マクロ】メッセージボックスにて、キャンセルをクリックしたら、マクロ終了。エクセルへ戻すには
Excel(エクセル)
-
12
excelVBAについて。
Excel(エクセル)
-
13
Excelの時刻の不思議
Excel(エクセル)
-
14
excelVBAについて。
Excel(エクセル)
-
15
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
16
1.5ヶ月分の費用按分 エクセル関数
Excel(エクセル)
-
17
Excelで合計を求めたいです
Excel(エクセル)
-
18
UNIQUE関数、配列数式を使わずに品名ごとの集計を求めたい
Excel(エクセル)
-
19
ExcelでASCを使って全角を半角にするとカタカナも半角になってしまいます。
Excel(エクセル)
-
20
(マクロ)値を返す時は subでもfunctionでもどちらでも良いのでしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel初心者です。 Excelでやり...
-
ファイルパスについて。
-
エクセルのセンス 参照するシー...
-
XMLHTTP60で前日のデータが取れ...
-
スプレッドシート(Excelでも良...
-
ファイルとフォルダの移動につ...
-
Excel初心者です、Excelの日付...
-
エクセルで作成した表の中にあ...
-
excelVBAについて。
-
【マクロ】フォルダ内にあるPDF...
-
スプレッドシートで適切な条件...
-
ExcelVBAについて。
-
エクセルで作成した書類の印刷...
-
excelVBAについて。
-
Excelについて。 以前、無料でE...
-
新規ブックの作成について。
-
エクセルを使ってQRコードを作...
-
標準、数値、文字列・・・VLOOK...
-
excelですが一つのマスに入って...
-
excelVBAについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
excelVBAについて。
-
excelVBAについて。
-
UNIQUE関数、配列数式を使わず...
-
エクセルのデータ整理の方法
-
11ケタの数字を打つと、エク...
-
エクセルの関数ついて
-
エクセル初心者です 用語とか良...
-
エクセル2021 範囲指定印刷をす...
-
【マクロ】メッセージボックス...
-
Excelで合計を求めたいです
-
IEを使わずHTMLを取得する
-
1.5ヶ月分の費用按分 エクセル関数
-
エクセル初心者です 用語等まだ...
-
excelVBAについて。
-
エクセルの不調について
-
Excelで、毎月の月曜と金曜の合...
-
vbe でのソースコード参照(msgb...
-
エクセル数式に問題があります
-
アクセス2016 エクセル2016 重...
おすすめ情報
ThisWorkbook.Pathで、A.xlsmの格納されているフォルダが分かるので、A.xlsmがどこのフォルダに保存されているか分かるということですね?ちなみに、このプログラム片(ThisWorkbook.Path)は、マクロが使われているブックのパスを求めるのに使われるということでしょうか?教えて頂けると幸いです。
迅速な回答ありがとうございます!
所で、マイドキュメントのパスの取得とデスクトップのパスの取得について教えて頂けると幸いです。何か両者ともCreate〜となっているのですが。詳しく書いてほしければ、また、聞き返して頂けると幸いです。
CreateObject("WScript.Shell").SpecialFolders("Desktop") と、CreateObject("WScript.Shell").SpecialFolders("MyDocuments") でこれで、これを実行すると、どのような物をが表示されて、どういう時に、使われるのでしょうか?先ほどのパスの表記と全く違う感じですね。教えて頂けると幸いです。
B.xlsxがマイドキュメントの場合でも、このプログラムをDesktopを変えれば良いだけという事でしょうか?教えて頂けると幸いです。
すみません。以下のURLで、Set WSH=Nothingがなぜ付いているのでしょうか?教えて頂けると幸いです。
http://officetanaka.net/excel/vba/tips/tips107.htm
では、なぜ私の質問のプログラムやtatsumaru77様の挙げてくれたプログラムでは、なぜ、SETWSH=Nothingが出てこなかったのでしょうか?教えて頂けると幸いです。