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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
Excelの計算が合いません。 諸事情で会計の簡素な購入・販売諸元表を作っているのですが、一つの項目
Excel(エクセル)
-
5
フィルターをかけた時の、別の列に書いてある数字の表に現れた数量のみを表す式を教えてください。
Excel(エクセル)
-
6
excelVBAについて。
Excel(エクセル)
-
7
excelVBAについて。
Excel(エクセル)
-
8
excelVBAについて。
Excel(エクセル)
-
9
エクセル 入力があった場合のみ隣の関数を表示
Excel(エクセル)
-
10
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
11
【マクロ】メッセージボックスにて、キャンセルをクリックしたら、マクロ終了。エクセルへ戻すには
Excel(エクセル)
-
12
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
13
Excelで合計を求めたいです
Excel(エクセル)
-
14
excelVBAについて。
Excel(エクセル)
-
15
エクセル初心者です 用語等まだ良く分からないので簡単に説明していただけると幸いです タブの挿入、図形
Excel(エクセル)
-
16
Excelの時刻の不思議
Excel(エクセル)
-
17
ExcelでASCを使って全角を半角にするとカタカナも半角になってしまいます。
Excel(エクセル)
-
18
(マクロ)値を返す時は subでもfunctionでもどちらでも良いのでしょうか?
Excel(エクセル)
-
19
excelVBAについて。
Excel(エクセル)
-
20
エクセルの関数ついて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの関数で質問です
-
エクセルの数式につきまして
-
【関数】2つの条件を満たす、...
-
パソコンのエクセルの操作につ...
-
Excelファイルが開けません
-
エクセルでA1を参照してその文...
-
MacのExcelで、ショートカットC...
-
質問番号115627 Dim lastChecke...
-
エクセルの数式について教えて...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
エクセル条件付き書式について。
-
【マクロ】重複する同じ行を、...
-
Excelの数式について教えてくだ...
-
Excelの条件付き書式のコピーと...
-
Excelで項目の種類ごとに番号を...
-
Excelを立ち上げ、キーボードだ...
-
エクセルのセルをクリックする...
-
カーソルを合わせてる時のみ行...
-
MacのExcelショートカット、Com...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、数字ではない値(...
-
Excel いい方法教えてください。
-
納期順に勝手に並べ替えられる...
-
エクセルで作成した書類の印刷...
-
Excel初心者です、Excelの日付...
-
エクセルで作った表が印刷する...
-
実務の処理について。
-
AM8:30から翌朝8:30まで勤務す...
-
Excelのデータの入力規則の問題...
-
Excelの罫線を消す方法
-
桁をセルで区切って計算をした...
-
スプレッドシート(Excelでも良...
-
VLOOKUP関数で複数条件を設定に...
-
Excel初心者です。 Excelでやり...
-
エクセルでAのセルに「家電」と...
-
ファイルとフォルダの移動につ...
-
XMLHTTP60で前日のデータが取れ...
-
ファイルパスについて。
-
エクセルの数式について教えて...
-
スプレッドシートで適切な条件...
おすすめ情報
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が出てこなかったのでしょうか?教えて頂けると幸いです。