
:セルの.Value以外のプロパティを操作する方法を学ぶ。For Each構文を利用して複数セルに対する連続処理をする発想に慣れる。
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
このページへの投稿/コメント

凜さんの投稿
(投稿ID: 5165)
今回の講義の中で 出てくるSet についての記憶がなく見直したいのですが、どの講義でご教示頂いたものか教えて頂けますでしょうか。
きちんとメモを取り切れていなかったようで、お手数をお掛けして申し訳ありません。
よろしくお願いします。

たかちゃんさんの投稿
(投稿ID: 4860)
説明を受けると何でこんなミスをしてしまったんだろう?!という感じですが。。(><)↓こんな感じです。
Set rg = Range("E4:E13").Value
For Each rg In Range
その度に発展編の該当動画に戻って見たりしています。
今はこんな感じで苦戦していますが、
発展編の動画は本当に分かりやすくて感動しました。

小川慶一さんからのお返事
(コメントID: 6812)
おはようございます。
> for each構文、自分で何も見ないで書くと意外と変なミスをしてしまいます。
> 説明を受けると何でこんなミスをしてしまったんだろう?!という感じですが。。(><)↓こんな感じです。
> Set rg = Range("E4:E13").Value
> For Each rg In Range
> その度に発展編の該当動画に戻って見たりしています。
ひとつひとつの言葉の意味、機能を理解できていれば、あとは「慣れ」です。
誰でも通る道ですので、そこはお気になさらず (^^
> 今はこんな感じで苦戦していますが、
> 発展編の動画は本当に分かりやすくて感動しました。
なによりです。
ひきつづき、よい学びを☆

FukuChanさんの投稿
(投稿ID: 4744)
いつも大変お世話になっております。
みなさまとはレベルが違う質問で失礼いたします。
◆【 テキスト中級編 】が、
どの講座の どのテキストか? を教えて下さい。
( 解答例メールに【 テキスト中級編第5章 参照】の記載があります )
・導入編、基礎編、発展編1をざっと見て、
自動記録を使い、業務用のツール作成を試行錯誤してます。
・ファイルの操作について知りたく、
このセミナーに取りかかろうとしてます。
・必要な項目を、立ち戻って深掘りしたく
【中級編】がどの講座にあたるのかを教えてください。
以上、宜しくお願いいたします。

小川慶一さんからのお返事
(コメントID: 6624)
おはようございます。
以前の「中級編」という講座で扱っていた内容なので、一部の受講生の方向けに「中級編」という表現をしました。
この「中級編」という言葉は、「発展編1」と読み替えていただければと思います。
よろしくお願いいたします。

FukuChanさんからのお返事
(コメントID: 6625)
ありがとうございます。
承知いたしました。
「発展編1」テキストで関連する項目を確認していきます。

tomoki1105さんの投稿
(投稿ID: 1946)
いつもお世話になっております。
Excel 2010にて自動記録でファイルを開く動作をすると下記のようなマクロが記録されました。
ChDir "C:\Users\tomo\Downloads\mini03"
Application.ActiveProtectedViewWindow.Edit
Windows("mini03.xls").Activate
動画で解説されているマクロと形式が違うのはExcelのバージョンの違いであるからといった理解で間違いないでしょうか?

ゲストさんからのお返事
(コメントID: 3325)
ご自身で試されたのですね。なかなかいい感じですね (^^
Application.ActiveProtectedViewWindow.Editのところは、「保護されたビュー」の状態を変更している操作です。
https://msdn.microsoft.com/ja-jp/library/office/ff838457.aspx
「保護されたビュー」と言われても何のことだか分からないようでしたら、以下の講座をご覧ください。
https://forum.pc5bai.com/lesson/page/457

唐沢俊孝さんの投稿
(投稿ID: 1488)
先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
アドバイスお願いいたします。
頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
それを利用してできないか考えてコードを書きましたが、エラーになりました。
保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
以下のとおり、うまくいきませんでした。
問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
Sub taisou3()
Dim wb As Workbook
Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
End Sub

ゲストさんからのお返事
(コメントID: 2712)
「Book2.xls」というエクセルファイルはすでに開かれていますか?
拡張子が違うとか、ファイル名が違うとか。
そもそも、新しいファイルはまだいっさい開いてないとか。。
>小川先生
>
>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>アドバイスお願いいたします。
>
>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>以下のとおり、うまくいきませんでした。
>
>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>Sub taisou3()
> Dim wb As Workbook
> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>
> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>End Sub
>

唐沢俊孝さんからのお返事
(コメントID: 2714)
エクセルファイル Book2.xls は同じフォルダに保存しされています。正解のマクロでは問題なく動き、Book2.xls は開きます。拡張子も合っています。また、マクロ実行前には、Book2.xlsは開いていません。閉じた状態からマクロ実行しています。
>唐沢俊孝 さん:
>
>「Book2.xls」というエクセルファイルはすでに開かれていますか?
>拡張子が違うとか、ファイル名が違うとか。
>そもそも、新しいファイルはまだいっさい開いてないとか。。
>
>
>>小川先生
>>
>>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>>アドバイスお願いいたします。
>>
>>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>>以下のとおり、うまくいきませんでした。
>>
>>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>>Sub taisou3()
>> Dim wb As Workbook
>> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>>
>> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>>End Sub
>>
>

ゲストさんからのお返事
(コメントID: 2715)
次やって再現したら、 thisworkbook.path を出力してみてください。
debug.print thisworkbook.path
それで出力されたフォルダ名が、 book2.xls のあるところと一致しているか?をチェック。
>小川慶一 さん:
>
>エクセルファイル Book2.xls は同じフォルダに保存しされています。正解のマクロでは問題なく動き、Book2.xls は開きます。拡張子も合っています。また、マクロ実行前には、Book2.xlsは開いていません。閉じた状態からマクロ実行しています。
>
>
>>唐沢俊孝 さん:
>>
>>「Book2.xls」というエクセルファイルはすでに開かれていますか?
>>拡張子が違うとか、ファイル名が違うとか。
>>そもそも、新しいファイルはまだいっさい開いてないとか。。
>>
>>
>>>小川先生
>>>
>>>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>>>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>>>アドバイスお願いいたします。
>>>
>>>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>>>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>>>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>>>以下のとおり、うまくいきませんでした。
>>>
>>>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>>>Sub taisou3()
>>> Dim wb As Workbook
>>> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>>>
>>> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>>>End Sub
>>>
>>

唐沢俊孝さんからのお返事
(コメントID: 2716)
>debug.print thisworkbook.path
>それで出力されたフォルダ名が、 Book2.xls のあるところと一致しているか?をチェック。
⇒ イミディエイトウィンドウ出力されたパスは、保存されているBook2.xlsのパス(プロパティの場所に書かれているパス)と
全く同じでした。
パス出力は以下のようにしてイミディエイトウィンドウに出力して確認しました。
Sub taisou3_1()
Dim wb As Workbook
Debug.Print ThisWorkbook.Path ’イミディエイトウィンドウにパスが出力されました。
Set wb = Workbooks("Book2.xls") ’ここに来るとやはり下記のようなウィンドウが出て先へ進まず、実行されませんでした。
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & wb
End Sub
エラー内容は以下の通りでした。
実行時エラー ’9’:
インデックスが有効範囲にありません
ヘルプで確認しましたが、該当していないような気がします。
小川先生のPCでは、このコードで実行できますでしょうか。
手動でBook2.xlsを開いた後、以下の閉じるコードの方は、問題なく閉じました。
Sub taisou3_3_1()
Dim wb As Workbook
Set wb = Workbooks("Book2.xls")
wb.Close
End Sub
>唐沢俊孝 さん:
>
>次やって再現したら、 thisworkbook.path を出力してみてください。
>debug.print thisworkbook.path
>それで出力されたフォルダ名が、 book2.xls のあるところと一致しているか?をチェック。
>
>
>>小川慶一 さん:
>>
>>エクセルファイル Book2.xls は同じフォルダに保存しされています。正解のマクロでは問題なく動き、Book2.xls は開きます。拡張子も合っています。また、マクロ実行前には、Book2.xlsは開いていません。閉じた状態からマクロ実行しています。
>>
>>
>>>唐沢俊孝 さん:
>>>
>>>「Book2.xls」というエクセルファイルはすでに開かれていますか?
>>>拡張子が違うとか、ファイル名が違うとか。
>>>そもそも、新しいファイルはまだいっさい開いてないとか。。
>>>
>>>
>>>>小川先生
>>>>
>>>>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>>>>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>>>>アドバイスお願いいたします。
>>>>
>>>>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>>>>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>>>>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>>>>以下のとおり、うまくいきませんでした。
>>>>
>>>>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>>>>Sub taisou3()
>>>> Dim wb As Workbook
>>>> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>>>>
>>>> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>>>>End Sub
>>>>
>>>
>

ゲストさんからのお返事
(コメントID: 2717)
試しました。その様子を動画収録しました。
改めてソース拝見しましたが、ソースを読むだけでも、何が錯誤されているかと思われました。
コメントも添えています。
くりかえしますが、 Set ステートメンドでオブジェクトへの参照を設定するなら、そのオブジェクトが取得可能(エクセルファイルなら、そのファイルをすでにエクセルというアプリケーションが開いている)でないとダメです。
https://www.dropbox.com/s/9guly069t5qxaqh/book2.xls_open.mp4?dl=0
>小川慶一 さん:
>
>>debug.print thisworkbook.path
>>それで出力されたフォルダ名が、 Book2.xls のあるところと一致しているか?をチェック。
>
>⇒ イミディエイトウィンドウ出力されたパスは、保存されているBook2.xlsのパス(プロパティの場所に書かれているパス)と
> 全く同じでした。
>
>パス出力は以下のようにしてイミディエイトウィンドウに出力して確認しました。
>Sub taisou3_1()
> Dim wb As Workbook
> Debug.Print ThisWorkbook.Path ’イミディエイトウィンドウにパスが出力されました。
> Set wb = Workbooks("Book2.xls") ’ここに来るとやはり下記のようなウィンドウが出て先へ進まず、実行されませんでした。
> Workbooks.Open Filename:=ThisWorkbook.Path & "\" & wb
>End Sub
>
>エラー内容は以下の通りでした。
> 実行時エラー ’9’:
> インデックスが有効範囲にありません
> ヘルプで確認しましたが、該当していないような気がします。
>
> 小川先生のPCでは、このコードで実行できますでしょうか。
>
>手動でBook2.xlsを開いた後、以下の閉じるコードの方は、問題なく閉じました。
> Sub taisou3_3_1()
>
> Dim wb As Workbook
> Set wb = Workbooks("Book2.xls")
> wb.Close
>
>End Sub
>
>
>
>
>
>>唐沢俊孝 さん:
>>
>>次やって再現したら、 thisworkbook.path を出力してみてください。
>>debug.print thisworkbook.path
>>それで出力されたフォルダ名が、 book2.xls のあるところと一致しているか?をチェック。
>>
>>
>>>小川慶一 さん:
>>>
>>>エクセルファイル Book2.xls は同じフォルダに保存しされています。正解のマクロでは問題なく動き、Book2.xls は開きます。拡張子も合っています。また、マクロ実行前には、Book2.xlsは開いていません。閉じた状態からマクロ実行しています。
>>>
>>>
>>>>唐沢俊孝 さん:
>>>>
>>>>「Book2.xls」というエクセルファイルはすでに開かれていますか?
>>>>拡張子が違うとか、ファイル名が違うとか。
>>>>そもそも、新しいファイルはまだいっさい開いてないとか。。
>>>>
>>>>
>>>>>小川先生
>>>>>
>>>>>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>>>>>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>>>>>アドバイスお願いいたします。
>>>>>
>>>>>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>>>>>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>>>>>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>>>>>以下のとおり、うまくいきませんでした。
>>>>>
>>>>>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>>>>>Sub taisou3()
>>>>> Dim wb As Workbook
>>>>> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>>>>>
>>>>> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>>>>>End Sub
>>>>>
>>>>
>>
>

唐沢俊孝さんからのお返事
(コメントID: 2720)
解説ありがとうございます!
Set ステートメンドでオブジェクトへの参照を設定するなら、そのオブジェクトが取得可能(エクセルファイルなら、そのファイルをすでにエクセルというアプリケーションが開いている)でないとダメです。
→ この内容見落としていました。これが前提で、ファイルを開くマクロを書くこと自体がおかしかったんですね。スッキリしました!

小川慶一さんからのお返事
(コメントID: 2722)
そういうことです。そして、要は、エラーメッセージが言っていたのは、「そういわれても、そんなオブジェクトないんだけど?!」てことでした。
>小川先生
>
>解説ありがとうございます!
>
>Set ステートメンドでオブジェクトへの参照を設定するなら、そのオブジェクトが取得可能(エクセルファイルなら、そのファイルをすでにエクセルというアプリケーションが開いている)でないとダメです。
>→ この内容見落としていました。これが前提で、ファイルを開くマクロを書くこと自体がおかしかったんですね。スッキリしました!

ゲストさんからのお返事
(コメントID: 3186)
過去の投稿見直ししていてふと気になったのでコメント追記しています。
回答当時僕も見誤っていたかもしれません。
以下、 wb だとオブジェクトそのものを指すので、以下、最後、 wb でなく、 wb.Name では?
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & wb
>小川慶一 さん:
>
>>debug.print thisworkbook.path
>>それで出力されたフォルダ名が、 Book2.xls のあるところと一致しているか?をチェック。
>
>⇒ イミディエイトウィンドウ出力されたパスは、保存されているBook2.xlsのパス(プロパティの場所に書かれているパス)と
> 全く同じでした。
>
>パス出力は以下のようにしてイミディエイトウィンドウに出力して確認しました。
>Sub taisou3_1()
> Dim wb As Workbook
> Debug.Print ThisWorkbook.Path ’イミディエイトウィンドウにパスが出力されました。
> Set wb = Workbooks("Book2.xls") ’ここに来るとやはり下記のようなウィンドウが出て先へ進まず、実行されませんでした。
> Workbooks.Open Filename:=ThisWorkbook.Path & "\" & wb
>End Sub
>
>エラー内容は以下の通りでした。
> 実行時エラー ’9’:
> インデックスが有効範囲にありません
> ヘルプで確認しましたが、該当していないような気がします。
>
> 小川先生のPCでは、このコードで実行できますでしょうか。
>
>手動でBook2.xlsを開いた後、以下の閉じるコードの方は、問題なく閉じました。
> Sub taisou3_3_1()
>
> Dim wb As Workbook
> Set wb = Workbooks("Book2.xls")
> wb.Close
>
>End Sub
>
>
>
>
>
>>唐沢俊孝 さん:
>>
>>次やって再現したら、 thisworkbook.path を出力してみてください。
>>debug.print thisworkbook.path
>>それで出力されたフォルダ名が、 book2.xls のあるところと一致しているか?をチェック。
>>
>>
>>>小川慶一 さん:
>>>
>>>エクセルファイル Book2.xls は同じフォルダに保存しされています。正解のマクロでは問題なく動き、Book2.xls は開きます。拡張子も合っています。また、マクロ実行前には、Book2.xlsは開いていません。閉じた状態からマクロ実行しています。
>>>
>>>
>>>>唐沢俊孝 さん:
>>>>
>>>>「Book2.xls」というエクセルファイルはすでに開かれていますか?
>>>>拡張子が違うとか、ファイル名が違うとか。
>>>>そもそも、新しいファイルはまだいっさい開いてないとか。。
>>>>
>>>>
>>>>>小川先生
>>>>>
>>>>>先日質問しました頭の体操3ですが、動画の説明はよく分かりました。
>>>>>その内容で消化したいのですが、1点どうしても知りたいところがありましたので、
>>>>>アドバイスお願いいたします。
>>>>>
>>>>>頭の体操3は、”固有オブジェクトの変数”を学んだ直後にトライしていましたので、
>>>>>それを利用してできないか考えてコードを書きましたが、エラーになりました。
>>>>>保存されたエクセルブックにニックネームをつけて開く操作ができると思っていましたが、
>>>>>以下のとおり、うまくいきませんでした。
>>>>>
>>>>>問題[1]今開いているファイルと同じフォルダにあるエクセルファイル「Book2.xls」を開く
>>>>>Sub taisou3()
>>>>> Dim wb As Workbook
>>>>> Set wb = Workbooks("Book2.xls") 'ここでデバッグとなり先へ進みません。
>>>>>
>>>>> Workbooks.Open Filename:=Thisworkbook.path & "\" & wb
>>>>>End Sub
>>>>>
>>>>
>>
>

ゲストさんの投稿
(投稿ID: 1354)

浜口 智之さんの投稿
(投稿ID: 858)
ないですよね?オフラインのヘルプ…
バージョン上がって使いにくくなってるのは残念ですね。
ググったり、オンラインヘルプを活用していきます。

ゲストさんからのお返事
(コメントID: 1775)
はい。ですね。バージョンを追うごとに無駄なエフェクトが増え、簡易な機能は取り払われていきます。
オフラインヘルプがなくなるのも、その流れですね(汗
なので、僕は極力古いバージョンのエクセルを使用しています。
今年の春までは2003を使っていました。今は、2003のサポートが切れてしまったので、仕方なく2007です。
>調べてみましたらエクセル2013にはオフラインヘルプがなく凹みました。
>ないですよね?オフラインのヘルプ…
>バージョン上がって使いにくくなってるのは残念ですね。
>ググったり、オンラインヘルプを活用していきます。

受講生さんの投稿
(投稿ID: 694)
For each k in "群れ"の"群れ"の部分がキーになることが理解できましたので、自分としては大きな一歩です。

小川慶一さんからのお返事
(コメントID: 1539)
形が腑に落ちれば、あとは難しくはありません。
ひきつづきよろしくお願いいたします!
>For Each構文、まだまだですが、手が覚えるまで頑張ります。
>For each k in "群れ"の"群れ"の部分がキーになることが理解できましたので、自分としては大きな一歩です。

受講生さんの投稿
(投稿ID: 131)
Excelの数式を使うとどうしてもファイルが重くなってしまうので、今まで何分待っていたことか…と。
でも、オブジェクトをマクロで操作できると楽しいです。

小川慶一さんからのお返事
(コメントID: 820)
> 今までなら条件書式の設定でしかできなかった(私が方法を知らなかった)処理をマクロでできてしまった!という嬉しくも悔しくもある例題でした。
>Excelの数式を使うとどうしてもファイルが重くなってしまうので、今まで何分待っていたことか…と。
マクロを使いこなせるようになると、エクセルの表面に見えている機能だけでなんとかしようとするのがバカバカしくなりますね。
エクセル詳しくなるよりも、マクロの初歩を習得したほうがよほど有意義です。
学習記録としてメモを残す
※メモを残すにはこの講座の利用権限が必要です。
凜さんの投稿
(投稿ID: 5166)
今回の講義の中で 出てくるSet についての記憶がなく見直したいのですが、どの講義でご教示頂いたものか教えて頂けますでしょうか。
きちんとメモを取り切れていなかったようで、お手数をお掛けして申し訳ありません。
よろしくお願いします。
小川慶一さんからのお返事
(コメントID: 7313)
おはようございます。
> 今回の講義の中で 出てくるSet についての記憶がなく見直したいのですが
発展編1第1章でお話ししています。
数値や文字、日付等を入れる変数 -> Set 不要
オブジェクトに「ニックネーム」をつける変数 -> Set 必要
ということでしたね。
まずは、レジュメマインドマップて確認をお願いします。
いちどレジュメを確認してから改めて動画を観るとだいぶ整理して理解できるのでは?と思います。
ひきつづぎよろしくお願いいたします。
凜さんからのお返事
(コメントID: 7314)
ありがとうございます!わかりました!
ちょっとズレた調べ方をしてしまっていた為、調べきれなくなっていました。お手数をお掛けしました。
> 凜さん:
>
> おはようございます。
>
> > 今回の講義の中で 出てくるSet についての記憶がなく見直したいのですが
>
> 発展編1第1章でお話ししています。
>
> 数値や文字、日付等を入れる変数 -> Set 不要
> オブジェクトに「ニックネーム」をつける変数 -> Set 必要
>
> ということでしたね。
>
> まずは、レジュメマインドマップて確認をお願いします。
> いちどレジュメを確認してから改めて動画を観るとだいぶ整理して理解できるのでは?と思います。
>
> ひきつづぎよろしくお願いいたします。
>
小川慶一さんからのお返事
(コメントID: 7317)
おはようございます。
よかったです。
Set にかかる部分は、抽象概念をしっかり理解していないと混乱してしまうところですので。
ひきつづきよろしくお願いいたします (^^