
この動画で使用する教材ファイルは特にありません。
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
このページへの投稿/コメント
Sub oopen()
Workbooks.Open Filename:="C:¥Users¥yuko¥Desktop2022.4 R4.4 予実管理・資金繰り管理 相談事項¥2022年度予算¥③共通分をQ2からQ4へ.xls"
End Sub
を実行すると実行時エラー1004となります。
また、
Sub tenki()
Workbooks("【FS部】2022年度予算編成入力シート(FS部)REV2経企調整rev.2.xls").Worksheets("予算入力シート").Range("N11").Value = Workbooks("予実管理test.xls").Worksheets("予算").Range("A1").Value
End Sub
についても実行時エラー9となります。
アドバイスをお願いします。
エラーについての相談の場合は、エラーメッセージも記載してください。
たとえば、実行時エラー9の場合、「インデックスが有効範囲にありません。」等と記載されたのではないでしょうか。
実際、実行時エラー1004は、このエラーコードだけでは理由を判別できません。
さてさて。
ご質問2件についてですが、どちらも、初心者さんには複雑すぎますね。
こういうときは、いったん課題をより簡単なものにして、それから次第に難しくしていきながらどこでひっかかっているのか調べていくよりないです。
ということで、まずは、サブプロシージャ「oopen」から。
こういうとき、以下の [1], [2], [3], [4] に該当するフォルダに「③共通分をQ2からQ4へ.xls」を置いてマクロを実行してみて、どこでエラーが出るか、順番に試していきます。
たとえば、[1]でいきなりエラーがでるようであれば、構文が間違っているか、「③共通分をQ2からQ4へ.xls」というファイル名がそもそも間違っているか、"C:¥Users¥③共通分をQ2からQ4へ.xls"という書き方が間違っているか、です。
実務でお使いのファイルということでしたら、拡張子が本当に .xls なのかも念のため確認してください。
[1] ではOKだったけど[2]でひっかかったということであれば、「yuko」というフォルダが実在するのかどうか怪しい。
...と、そういう要領でチェックしていきます。
Sub oopen1()
'このマクロの入ったファイル以外すべて閉じてから実行すること。
Workbooks.Open Filename:="C:¥Users¥③共通分をQ2からQ4へ.xls" '[1]
End Sub
Sub oopen2()
'このマクロの入ったファイル以外すべて閉じてから実行すること。
Workbooks.Open Filename:="C:¥Users¥yuko¥③共通分をQ2からQ4へ.xls" '[2]
End Sub
Sub oopen3()
'このマクロの入ったファイル以外すべて閉じてから実行すること。
Workbooks.Open Filename:="C:¥Users¥yuko¥Desktop2022.4 R4.4 予実管理・資金繰り管理 相談事項¥③共通分をQ2からQ4へ.xls" '[3]
End Sub
Sub oopen4()
'このマクロの入ったファイル以外すべて閉じてから実行すること。
Workbooks.Open Filename:="C:¥Users¥yuko¥Desktop2022.4 R4.4 予実管理・資金繰り管理 相談事項¥2022年度予算¥③共通分をQ2からQ4へ.xls" '[4]
End Sub
とはいえ、最初の[1]でひっかかるのではないかと思います。
なぜなら、ファイルパスを区切る円マークが、半角ではなく全角になっているからです。でも、そこだけ直せば問題は解決するのかというと、いただいたソースコードだけではわかりません。
サブプロシージャ「tenki」についても同様です。
まずは、右辺を単純にしてしまう。
それで動くようなら、右辺を次第に複雑にしていく。
以下は順を追ったテストの一例です。
Sub tenki1()
Workbooks("【FS部】2022年度予算編成入力シート(FS部)REV2経企調整rev.2.xls").Select '[1]ここでひっかかるなら、当該ファイルが開かれていない/ファイル名が間違っている等
Workbooks("【FS部】2022年度予算編成入力シート(FS部)REV2経企調整rev.2.xls").Worksheets("予算入力シート").Tab.Color = vbRed '[2]ここでひっかかるなら、当該ファイルは存在するがシート名が間違っている等
Workbooks("【FS部】2022年度予算編成入力シート(FS部)REV2経企調整rev.2.xls").Worksheets("予算入力シート").Range("N11").Value = 1 '[3]ここでひっかかるなら、当該セルが存在しないとか(まああり得ませんが)
End Sub
初心者のうちはこのくらいのテストでも負担に感じますが、それは初心者だからです。
経験値を積むと(&講座で学ぶショートカットキーをしっかりマスターすると)、脳や身体にほとんど負荷をかけずに、速やかに解決できるようになります。
※ここにコメントする前に、エラーになったコードをメモ帳に張り付け、その張り付けたコードを、ここのコメントにコピペすると「/」に変換されてしまったので、手打ちで「¥」にしました。
実は違うエクセルbookを開いて同じように転記のコードを書くと、問題なく実行できました。
同じように書いているつもりでも、何かが違うのですねきっと。。。
アドバイスどおり、小分けにしてエラーを解消する作業をしていきます。
また、こちらで教えて貰っているショートカットキーと、都度調べているショートカットキーを駆使して、1週間で(20年使っていた)マウスを卒業することができました。快適です♪
ありがとうございました。
>アドバイスありがとうございます。実は全角で入っている「¥」は、実際は半角になっています。
>※ここにコメントする前に、エラーになったコードをメモ帳に張り付け、その張り付けたコードを、ここのコメントにコピペすると「/」に変換されてしまったので、手打ちで「¥」にしました。
そうだったのですね。
お気遣い恐縮です。
というか、「投稿欄にも、円マークがバックスラッシュになっても気にせず投稿してください」という趣旨の文言を追記すべきかもしれません。
なお、「投稿・相談のヒント」で示しているとおり、プログラムの前後をコードハイライト用のタグで囲うことができます。
その場合、円マークがバックスラッシュという変換は生じません。
https://forum.pc5bai.com/column/tips_to_post/#code_highlight
>また、こちらで教えて貰っているショートカットキーと、都度調べているショートカットキーを駆使して、1週間で(20年使っていた)マウスを卒業することができました。快適です♪
>ありがとうございました。
こちらも、失礼しました。
おみそれしました。快適とのこと、何よりです。
>実は違うエクセルbookを開いて同じように転記のコードを書くと、問題なく実行できました。
>同じように書いているつもりでも、何かが違うのですねきっと。。。
>アドバイスどおり、小分けにしてエラーを解消する作業をしていきます。
こちらは、しっかりやってみてください。
「同じように書いているつもりでも」ということですので、書くのではなく、動かないほうのコードをその「違うエクセルbook」のモジュールにコピー&ペーストで追加してから試してみる等々。
なお、発展編1で登場する ThisWorkbook.Path というプロパティを利用して、実行するマクロの入っているエクセルファイルのあるフォルダのパスを取得することができます。
(ThisWorkbook は実行するマクロの入っているエクセルファイル、 Path はそのフルバス)
長いパス文字列をソースコードに含めるより、マクロの入ったファイルと同じフォルダ(あるいはその下位のフォルダ)に処理対象のファイルを置いて、以下の要領でファイルを開くほうがたいていの場合簡単です。
' ThisWorkbook.Path は後ろに "\" を含まないので注意!
Sub open_this_folder_file()
'ThisWorkbook と同じフォルダにあるファイルを開く
Dim target_filename As String
target_filename = "file_to_open.xlsx"
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & target_filename
End Sub
Sub open_sub_folder_file()
'ThisWorkbook から見て下位のフォルダにあるファイルを開く
Dim target_file_name As String
target_file_name = "file_to_open_in_subfolder.xlsx"
Workbooks.Open Filename:=ThisWorkbook.Path & "\subfolder\" & target_file_name
End Sub
Sub open_this_folder_file_without_extension()
'拡張子を省略して書くこともできます
'拡張子が違うだけでほぼ同一名のファイルがある場合を考えると、
'良いコードと言えるというと微妙ですが。
Dim target_filename As String
target_filename = "file_to_open"
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & target_filename
End Sub
Sub open_sub_folder_file_without_extension()
'拡張子を省略して書くこともできます
'拡張子が違うだけでほぼ同一名のファイルがある場合を考えると、
'良いコードと言えるというと微妙ですが。
Dim target_file_name As String
target_file_name = "file_to_open_in_subfolder"
Workbooks.Open Filename:=ThisWorkbook.Path & "\subfolder\" & target_file_name
End Sub
あれ、すいません。
表示を再確認してみたのですが、やはりだめでした。
ともあれ、環境によって表示が変わるだけで円マークもバックスラッシュも中身は同じですので、気になさらないでください。
今後ともよろしくお願いいたします。
動画の作成ありがとうございました。
今後自分が作成したいプログラムが、異なるファイル間でのデータ転記システムなので、非常に参考となる講義でした。
質問がございます。
今回はフォルダ内に保存したファイル名が一定の場合のみに有効なプログラムであると思いますが、ファイル名が転記作業毎に変わる(別のファイルになる)場合のプログラムはどうすればよいでしょうか?転記作業の度にVBAのファイル名を変更するのは現実的ではないですよね。
この講義を受けて、自分が思い描くプログラムを実現するための課題が明確になりました。自分に不足している知識を積み重ねていきたいので、アドバイスを頂戴したいです。
私が実現したいプログラムは以下の通りです
①会社規定の製品情報が記載されたデータ転記元のExcelファイルがある
②_①のファイルは製品毎に用意されており200~300種類ほどある
③転記元のファイルからデータをユーザーから指示されるExcelファイルに転記する。書式貼りつけでなく、値貼りつけもしくは数式貼りつけが指示されている
④_③の理由から転記先のフォーマットが一定でないのでマクロで完全自動化するのが困難
転記元と転記先のファイル名の識別と作業実行が課題になっております。
私が実現したいプログラムのイメージをファイルで添付致しますのでご確認をお願い致します。
こんにちは。
参考になったということであれば何よりです。
添付ファイル、ざっと拝見しました。
> 私が実現したいプログラムは以下の通りです
> ①会社規定の製品情報が記載されたデータ転記元のExcelファイルがある
> ②_①のファイルは製品毎に用意されており200~300種類ほどある
> ③転記元のファイルからデータをユーザーから指示されるExcelファイルに転記する。書式貼りつけでなく、値貼りつけもしくは数式貼りつけが指示されている
> ④_③の理由から転記先のフォーマットが一定でないのでマクロで完全自動化するのが困難
実現できたら実務へのインパクトが大きそうですね (^^
フォルダ内のファイル一覧を取得して個別に条件分岐する方法というのが課題のうちの1つということかと思います。
それについては、「ガッツリやる方法を」ということであれば、ウチの講座内では「外部連携講座」が守備範囲です。
一方、簡便な方法としては、dir関数を使うことができます。さっそく試してみてください。
https://www.moug.net/tech/exvba/0100048.html
「値でなく式を転記したい」という件については、以下を参考に。
とはいえ、DPR的に考えると、基本的には、値転記だけでやりきったほうが何かと良いかとは思います。(利用する手段が減るのでメンテナンスしやすい、開発も楽。想定外の値によって式の出力結果がおかしくなるといったことのリスクが少ない)
参考: エクセル仕事を劇的に楽にする「DPRフレームワーク」
https://forum.pc5bai.com/lesson/course/35
Sub formula_copy_sample()
'以下を実行したあと、セルC1, C4, C7に入っている式の内容を確認してみてください
'.Formula, .FormulaR1C1 については、詳しくは発展編1で扱います
Range("A1").Value = 1
Range("A2").Value = 2
Range("A4").Value = 11
Range("A5").Value = 12
Range("A7").Value = 101
Range("A8").Value = 102
Range("C1").Value = "=Sum(A1:A2)" '式の埋め込みは.valueでできる(.formulaでも可)
Range("C4").Formula = Range("C1").Formula '式をそのままコピー
Range("C7").Formula = Range("C1").FormulaR1C1 '式を相対参照でコピー
End Sub
こんにちは。私はオンライン受講生です。
>
転記元と転記先のファイル名の識別と作業実行が課題になっております。
Excelシートにフォルダ名とファイル名を記載した転記元と転記先の対比表を作成し、マクロ実行時にそれを読み取って転記元と転記先を特定する形が良いと思いました。
的外れな意見でしたら申し訳ありませんが、私の経験ということでご参考まで。
コメントありがとうございます。
いただいたアドバイスを実行致します!
> ゲストさん:
>
> こんにちは。
> 参考になったということであれば何よりです。
>
> 添付ファイル、ざっと拝見しました。
>
> > 私が実現したいプログラムは以下の通りです
> > ①会社規定の製品情報が記載されたデータ転記元のExcelファイルがある
> > ②_①のファイルは製品毎に用意されており200~300種類ほどある
> > ③転記元のファイルからデータをユーザーから指示されるExcelファイルに転記する。書式貼りつけでなく、値貼りつけもしくは数式貼りつけが指示されている
> > ④_③の理由から転記先のフォーマットが一定でないのでマクロで完全自動化するのが困難
>
> 実現できたら実務へのインパクトが大きそうですね (^^
>
> フォルダ内のファイル一覧を取得して個別に条件分岐する方法というのが課題のうちの1つということかと思います。
> それについては、「ガッツリやる方法を」ということであれば、ウチの講座内では「外部連携講座」が守備範囲です。
>
> 一方、簡便な方法としては、dir関数を使うことができます。さっそく試してみてください。
> https://www.moug.net/tech/exvba/0100048.html
>
>
> 「値でなく式を転記したい」という件については、以下を参考に。
> とはいえ、DPR的に考えると、基本的には、値転記だけでやりきったほうが何かと良いかとは思います。(利用する手段が減るのでメンテナンスしやすい、開発も楽。想定外の値によって式の出力結果がおかしくなるといったことのリスクが少ない)
>
> 参考: エクセル仕事を劇的に楽にする「DPRフレームワーク」
> https://forum.pc5bai.com/lesson/course/35
>
>
Sub formula_copy_sample()
> '以下を実行したあと、セルC1, C4, C7に入っている式の内容を確認してみてください
> '.Formula, .FormulaR1C1 については、詳しくは発展編1で扱います
> Range("A1").Value = 1
> Range("A2").Value = 2
>
> Range("A4").Value = 11
> Range("A5").Value = 12
>
> Range("A7").Value = 101
> Range("A8").Value = 102
>
> Range("C1").Value = "=Sum(A1:A2)" '式の埋め込みは.valueでできる(.formulaでも可)
>
> Range("C4").Formula = Range("C1").Formula '式をそのままコピー
>
> Range("C7").Formula = Range("C1").FormulaR1C1 '式を相対参照でコピー
> End Sub
>
コメントありがとうございます。
私の知識不足のため、田中さんのアドバイスを理解できず申し訳ございません。
勉強を重ねた後、田中さんのアドバイスを実行させていただきたいと思います。
> ゲストさん:
>
> こんにちは。私はオンライン受講生です。
> >
> 転記元と転記先のファイル名の識別と作業実行が課題になっております。
>
> Excelシートにフォルダ名とファイル名を記載した転記元と転記先の対比表を作成し、マクロ実行時にそれを読み取って転記元と転記先を特定する形が良いと思いました。
> 的外れな意見でしたら申し訳ありませんが、私の経験ということでご参考まで。
この件は、所定のフォルダ内のファイルのリストをプログラム実行後に作成しようという趣旨ではないかと思います。
とりあえずやってみて、またひっかかったりしたらまた相談してください。
ひきつづきよろしくお願いいたします。
お久しぶりです。
今回は別シートから転記するプログラムではなく、replaceメソッドでセルの値を置換することを目指したプログラムを作成しました。値を置換するプログラムの方が難易度が低いと考えたためです。個々のプログラムの動作確認はできましたが、一連の処理をフォルダ内全てのファイル実行させることができませんでした。複数のプログラムを連続実行させることが今後の課題です。
①Dir関数については以下の通りにプログラムを記載し、イミディエイトウィンドウでファイルを参照していることが分かりました。
Sub Sample2()
Dim buf As String
buf = Dir("C:\Users\ユーザー名\Desktop\フォルダ名\*.xlsx")
Do While Len(buf) > 0
Debug.Print buf
buf = Dir()
Loop
End Sub
②置換作業をしたいファイルのセルを指定する
Sub cell_choice2()
Worksheets("物資内訳書・製造工程表(2020新様式)").Activate
Worksheets("物資内訳書・製造工程表(2020新様式)").Range("C18:G18").Select
'指定したシートのセルを選択する
macro6
End Sub
③replaceメソッドで指定したセルの値を任意の値に置換する
Sub macro6()
Dim myRange As Range
Dim keyWord1 As String, keyWord2 As String
Dim bool As Boolean
Set myRange = Range("C18:G18")
keyWord1 = "東京都千代田区"
keyWord2 = "東京都新宿区"
bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole)
End Sub
参考までにプログラムを連続実行したいフォルダの画像を添付致します。ご確認お願い致します。
> ゲストさん:
>
> この件は、所定のフォルダ内のファイルのリストをプログラム実行後に作成しようという趣旨ではないかと思います。
> とりあえずやってみて、またひっかかったりしたらまた相談してください。
>
> ひきつづきよろしくお願いいたします。
>
こんにちは。
楽しまれていますね。
期待通りに動作するプログラムを最終的に書けそうだということであれば何よりです。
> 今回は別シートから転記するプログラムではなく、replaceメソッドでセルの値を置換することを目指したプログラムを作成しました。
> 値を置換するプログラムの方が難易度が低いと考えたためです。
慣れると、どちらでもあまり変わらないですね。
僕個人の好みとしては、元の表をいじるプログラムを書くのはあまり好みではありません。元の表の検証可能性を失ってしまうので。
DPR的に考えると、Dを潰してRにしてしまうことになります。
当面欲しいのはRだったとしても、DはDで残しておいたほうが安全ですし、Dが参照可能であることでRの価値も高まります。
ありがとうございます????!
順を追って学ぶことです。
・同じシート内で転記できるようになる
・別シート間で転記できるようになる
・別ファイル間で転記できるようになる
それぞれのステップを、スラスラできるようになるまで復習する必要があります。
スラスラできるようでないと、実務でつまづきます。実務では、そこだけ解決すればOKということはなく、それができて当然。さて...というところが課題になるからです。
演習の復習はくりかえしてください。
> この動画は大変有り難いです。いつも、このファイル間の動作で躓き、ボロボロになります。
> ありがとうございます????!
アドバイスありがとうございます。
基本的な質問ですみません。演習の仕方と言うのは、先生の動画を何回も動画を見た後にやり直すと言うかでしょうか?または、そのような演習問題のテキストはありますか?
Vlookup のマクロもやっと分かってきました。
右の表を左の表に転記するのに、右の変数をfor nextで全体を挟むとちゃんと引っ張れるのに、migi=migi+1をendifの下に書くのみだと、ほんの数件しか引っ張って来ません。
これはなぜですか?
何故そこに山があるのですか?みたいな質問になっていたら申し訳ありません。
小川慶一さん:
> あおちゃんさん:
>
> 順を追って学ぶことです。
> ・同じシート内で転記できるようになる
> ・別シート間で転記できるようになる
> ・別ファイル間で転記できるようになる
>
> それぞれのステップを、スラスラできるようになるまで復習する必要があります。
> スラスラできるようでないと、実務でつまづきます。実務では、そこだけ解決すればOKということはなく、それができて当然。さて...というところが課題になるからです。
>
> 演習の復習はくりかえしてください。
>
> > この動画は大変有り難いです。いつも、このファイル間の動作で躓き、ボロボロになります。
> > ありがとうございます????!
こんにちは。
>先生の動画を何回も動画を見た後にやり直すと言うかでしょうか?
違います。
何度もやりなおしつつ、何度も見直す、ということです。
受講生さんの想定とは、自分がやる回数が違いますね。
パソコンスキルを身につけるには、自分の身体を動かして練習してナンボ!です。
見ただけ、聞いただけでできるようになる人もいますが、そういう人は、もともと準備ができていた人です。大部分の人は、自分の身体を使って何度も練習する必要があります。
そして、「ほとんど頭を使わずに、半ば勝手に体が動いて解けるようになるまで」練習する必要があります。
> Vlookup のマクロもやっと分かってきました。
> 右の表を左の表に転記するのに、右の変数をfor nextで全体を挟むとちゃんと引っ張れるのに、migi=migi+1をendifの下に書くのみだと、ほんの数件しか引っ張って来ません。
> これはなぜですか?
「やっと分かってきました」ということですと、「ほとんど頭を使わずに、半ば勝手に体が動いて解けるようになる」という段階にはほど遠いですね。
というか、もっと前のお題でも同様ですので、まずは、「基礎編フォローアップ ベーシック」の演習を、最初のものから順番に、「ほとんど頭を使わずに、半ば勝手に体が動いて解ける」かどうかチェックしつつ解いていってみてください。
https://forum.pc5bai.com/lesson/course/27
そして、どの問題までは「ほとんど頭を使わずに、半ば勝手に体が動いて解け」たか?どの問題ではそうではなかったか?を報告してください。
時間を取られているため。IT等試験ではありません)しかし
会社では適時CODE作ったりしており、フォームまで興味
本位を兼ねてガチガチやってます。しかしほんとこの基礎編知識で浅いフォームですが作成できるとは思いもしませんでした。とりあえずは要求通り動いてくれてますからね。 試験が済んで早く本格的に学習を再開したいところです。
基礎編でも十分成果はでますよ。
文字通り、「基礎」を叩き込む講座ですので。
基礎をどこまで深く学ぶか、しっかりモノにするか、が大切です。
逆に、そこをいい加減にしたまま上級の知識をたくさん仕入れてもモノにはなりません。
そういう方もたくさん見てきています。
> 現在発展編1途中でstop中(12月に資格試験を控えそちらに
> 時間を取られているため。IT等試験ではありません)しかし
> 会社では適時CODE作ったりしており、フォームまで興味
> 本位を兼ねてガチガチやってます。しかしほんとこの基礎編知識で浅いフォームですが作成できるとは思いもしませんでした。とりあえずは要求通り動いてくれてますからね。 試験が済んで早く本格的に学習を再開したいところです。
copy pasteを地味に繰り返したり枠をつけたり、、、、基礎編の知識
とネットで調べてたらすっと数秒でできるのを作りました。コマンド
ボタンまで付けました。基礎編でもそこそこできるようになるも
のですね。ほんといい講座です。1講がさほど長くないので
取り組みやすいです。
>基礎編でもそこそこできるようになるものですね。
本当に、そう思います。
世間の多くの方は、気がついていないことですが、実は、基礎だけしかり固めれば、仕事はそこそこできようになるものです。
結果を出すことはとても重要です。
結果を出せば出すほど、周囲からの信頼が増しますし、会社でも自由に行動できるようになります。
この「自由に行動」とは、職場で仕事時間中にネット等を使ってExcelマクロについて調べることも含みます。
このような自由を得られればしめたものです。
それは、「会社で給料もらいながら勉強させてもらう」という状態のことですから。
あと一歩ですね!
> 会社の同僚がとあるエクセルデータを整理するため不要な行や列をcopy pasteを地味に繰り返したり枠をつけたり、、、、基礎編の知識とネットで調べてたらすっと数秒でできるのを作りました。
> コマンドボタンまで付けました。基礎編でもそこそこできるようになるものですね。
> ほんといい講座です。
> 1講がさほど長くないので取り組みやすいです。
早くいきたいですね。
基本の道具をしっかり使いこなせるようになることです。
そして、基本のパターンをしっかりマスターすること。
この2点をしっかりやれば、応用技を学ぶのもそんなに難しくありません。
発展編も楽しいですよ (^^*
> a & gyoの記載とinstr関数の使う場面、ifの条件不成立のときは何もしない、、、、ほんと役立だってます。フォローアップ終わらせて発展へ
> 早くいきたいですね。
ウチの講座と演習をしっかりやればかなり力つきますよ!
ひきつづきお楽しみください☆
> やっと基礎編が終わって、ほんと不思議なもので、カレーライスの話ではありませんが、以前にはなかった「こうやったら行けるかも!?」といった勘が少しながら出た感じです。したいことをネットで調べても有効に役立てできるようなところも見えるようになった感じです。驚くべきスキルアップ感です。変なvbaスクールなんか行くんでなかったと後悔してます。
初めて質問させて頂きます。
業務で2つのファイルを開いて転記をすることが多くあり、こちらで学んだ内容を活かしております。
が、いつも悩む事があります。
転記元と転記先とどちらにマクロを書きかますか?過去の動画の中でどっちに書かないといけません等、決まりについて説明している動画はありますか?
また、転記するファイルのパスはパソコンのドライブから指定しないとダメなものと平気なものとの違いを教えてください。
実務で使ってみているのですが、うまく行かず困っています。
よろしくお願いします。
おはようございます。
> 転記元と転記先とどちらにマクロを書きかますか?過去の動画の中でどっちに書かないといけません等、決まりについて説明している動画はありますか?
↑
特に決まりはありません。
そればかりか、転記元でも転記先でもなく、マクロを記入するだけのファイルを作ることも考えられます。
その場合、以下の挙動になりますね。
[1] マクロが起動する。
[2] 転記元ファイルを開く。
[3] 転記先ファイルを開く。
[4] 転記を行う。
[5] 転記先ファイルを閉じる。
[6] 転記元ファイルを閉じる。
どの方法が良いかということの答えは状況によって変わります。
そこで、ご自身でも考えてみて欲しいです。
以下の[A]、[B]、[C]のそれぞれについて、メリットデメリットを考えてここに書いてみてください。
[A] 転記元ファイルにマクロを書く場合
[B] 転記先ファイルにマクロを書く場合
[C] ネット、マクロを記入するだけのファイルを作り、そのファイルにマクロ書く場合
いただいた答えを見て、さらにアドバイスをしたいと思います。
> また、転記するファイルのパスはパソコンのドライブから指定しないとダメなものと平気なものとの違いを教えてください。
Thisworkbook.Path について調べてみてください。
Thisworkオブジェクトは、そのマクロを含むファイルそのものを指します。
.Pathプロパティは、その直前で指定されたオブジェクトの存在するフォルダのパスを示します。
つまり、Thiswork.Pathは、そのマクロの入ったエクセルファイルの所在するフォルダのパスを示します。
> お世話になります。
> 初めて質問させて頂きます。
> 業務で2つのファイルを開いて転記をすることが多くあり、こちらで学んだ内容を活かしております。
> が、いつも悩む事があります。
> 転記元と転記先とどちらにマクロを書きかますか?過去の動画の中でどっちに書かないといけません等、決まりについて説明している動画はありますか?
> また、転記するファイルのパスはパソコンのドライブから指定しないとダメなものと平気なものとの違いを教えてください。
> 実務で使ってみているのですが、うまく行かず困っています。
> よろしくお願いします。
ご返信、ありがとうございました。
先生から頂いた問題について私なりに考えてみたのですが、
いかんせん、初心者なものでいまいち違いがわかりませんでした。
わからないながら書いてみたので読んでみてください。
> [A] 転記元ファイルにマクロを書く場合
> [B] 転記先ファイルにマクロを書く場合
についてのメリットはアクティブになっていることで書いたマクロの
実行がその場で確認できる事。
デメリットはファイルが他の人に開かれていると操作できない。
> [C] ネット、マクロを記入するだけのファイルを作り、そのファイルにマクロを書く場合。
メリットは転記元ファイル、転記先ファイルが複数あり、それを一度に処理したい場合に便利だと思います。
デメリットは 転記元、転記先のファイルが開かれている場合は処理ができないので誰も転記元のファイルを開いていない状態でマクロを起動させる必要があると思います。
デメリットについてはExcel上で操作している以上、開かれているとその時には操作できないというのが共通ではないかと思いました。
> Thisworkbook.Path について調べてみてください。
調べてみました。
Thisworkbook.Path・・・ブックのフォルダまでのパスを取得する。
なのでファイルまで取得したいときはThisworkbook.Pathの後にFullNameを書く必要があるという解釈で良いでしょうか?
マクロ以前の問題でPC自体の仕組みがわかっていないので複数ファイル間でのコードの書き方は理解しにくいです。
現在の業務ではLEFT関数やInstr関数を使うような業務はありません。
それぞれの方が受けたお客様からの問い合わせについて記入しているファイルを読みに行って、一つのファイルに必要な情報だけを転記するといった内容です。そのため、フォローアップまで受講していますが実務に使えているのはIF文とFor Next構文で転記していくところぐらいです。
この先の中級編でそのような勉強はありますか?
昨日以下の返事を差し上げたのですが、投稿先を誤ってしまいました。
ついては、こちらから改めてお返事いたします。
- - - 昨日のお返事ここから下↓ - - -
おお、がんばりましたね!
> [A] 転記元ファイルにマクロを書く場合
ひとつの転記元ファイルから複数の転記先ファイルにデータを転記するとにはこれで良いでしょう。
> [B] 転記先ファイルにマクロを書く場合
複数のの転記元ファイルからひとつの転記先ファイルにデータを転記するときにはこれで良いでしょう。
> [C] ネット、マクロを記入するだけのファイルを作り、そのファイルにマクロを書く場合。
↑
すいません。「ネット」は、「別途」の誤記でした。
複数の転記元ファイルから複数の転記先ファイルにデータを転記するとにはこれが最善でしょう。
> についてのメリットはアクティブになっていることで書いたマクロの
> 実行がその場で確認できる事。
↑
これは、メリットとは言えません。
テストをするプログラマーの都合でしかないので、きちんと動作するようになったらどうでもいい問題です。
> デメリットはファイルが他の人に開かれていると操作できない。
> デメリットは 転記元、転記先のファイルが開かれている場合は処理ができないので誰も転記元のファイルを開いていない状態でマクロを起動させる必要があると思います。
↑
これは[A]、[B]、[C]のいずれでも起きる問題です。
基礎編レベルの段階では、実運用でカバーですね。つまり、Excelマクロで制御するのではなく、利用者に通知するこのマクロの仕様方法についての注意事項として取り扱います。
> > Thisworkbook.Path について調べてみてください。
> 調べてみました。
例えばCドライブにhogeというフォルダがあるとします。
フォルダのパスは C\hoge です。
ここに、fuga.xlsmというファイルがあるとします。
このfuga.xlsmというファイルが、piyo.xlsmというファイルを開くとします。
その時、Thiswork.Pathを使ってマクロ書く場合と、ファイルのパスをフルパスで指定する場合との比較を以下に示します。
以下でどうでしょうか。
Sub ThisWorkbookPathSample()
Dim sPath
sPath = ThisWorkbook.Path & "\piyo.xlsm"
Workbooks.Open Filename:=sPath
End Sub
Sub FullPathSample()
Dim sPath
sPath = "C:\hoge\piyo.xlsm"
Workbooks.Open Filename:=sPath
End Sub
C\hoge\mokyu にある uni.xlsm を開くなら、以下。
Sub ThisWorkbookPathSample()
Dim sPath
sPath = ThisWorkbook.Path & "\mokyu\uni.xlsm"
Workbooks.Open Filename:=sPath
End Sub
Sub FullPathSample()
Dim sPath
sPath = "C:\hoge\mokyu\uni.xlsm"
Workbooks.Open Filename:=sPath
End Sub
> 現在の業務ではLEFT関数やInstr関数を使うような業務はありません。
> それぞれの方が受けたお客様からの問い合わせについて記入しているファイルを読みに行って、一つのファイルに必要な情報だけを転記するといった内容です。そのため、フォローアップまで受講していますが実務に使えているのはIF文とFor Next構文で転記していくところぐらいです。
> この先の中級編でそのような勉強はありますか?
基礎編フォローアップの後半に、まさにそんな内容のものがありますが…。これでは足りないでしょうか?
動画24以降。
https://forum.pc5bai.com/lesson/page/871
遅くなりまして申し訳ございません。
なかなか理解できず今に至ります…。
ご回答ありがとうございます。
マクロを書く場所については理解できました。
ありがとうございました。
This workbook.Pathについては頂いた比較は理解できたのですが
実際にhogeのフォルダをcドライブに作って比較の通りにthis workbook.pathで書いた場合とフルパスで書いた場合とでマクロを書いてみたのですがうまく動きませんでした。
エラーコード1004 フォルダ内に指定したファイルが存在しませんとなってしまい、取得できませんでした。
そもそもコードの書き方で日本語用フォントの問題なのかバックスラッシュを打とうとしても半角の「¥」になってしまいます。
バックスラッシュはスラッシュでも同じことなのか?また「¥」マークで
対象のpathを取得するコードを書いている人も見かけます。
この部分はどうゆう違いがあるのか理解できず苦しんでました(笑)
この先も必ずここで引っかかってしまうと思うのでパソコンの仕組みというか、まず階層について勉強をしないとついていけないなと感じましたので別途、本を購入して勉強したいと思います。
また、基礎編フォローアップ後半の講座ですが、確かに私のしたいことなのですが、自動記録を用いていると思います。
自動記録で書いたものと自分自身でコードを書いたものではどこがどのように違うのかがわかりません。その為、急に自動記録でマクロを作ってそのコードを見てみてもそれをどう使ってアレンジするか等、応用がききません。自動記録ではなくコードを自分で書いていくことをしなければ理解ができないと思ったのでこの後の講座の内容をお聞きしたしだいです。
自分自身がマクロを書けるようになるだけでなく、今現在作ってもらったマクロを使って仕事をしている部分があるのでそのメンテナンスをできなくてはならないのですが、マクロ歴30年以上のベテランの方が作ったマクロなので手も足も出ません(今のところは・・・)
その方の書いたマクロを読んで理解できて、更に自分がメンテナンスできるレベルまでいかないとダメなので自動記録をごっちゃにされると混乱してしまいます。
自動記録でマクロを書くのなら自動記録を使わずに作ったマクロのコードを説明はしなくてもいいので比較用に紹介してもらえたらなと思います。
講座の質問フォームからの相談で長々とすみません。
マクロを書く以前にパソコンの仕組みや基礎知識の向上の為にこの教材はいいよというおすすめがあったら教えてください。
よろしくお願いします。
> そもそもコードの書き方で日本語用フォントの問題なのかバックスラッシュを打とうとしても半角の「¥」になってしまいます。
> バックスラッシュはスラッシュでも同じことなのか?また「¥」マークで
> 対象のpathを取得するコードを書いている人も見かけます。
> この部分はどうゆう違いがあるのか理解できず苦しんでました(笑)
そうでした。webでコードを表示すると、どうしてもそういうことがありますね。
バックスラッシュと半角の「¥」は同じものです。
> エラーコード1004 フォルダ内に指定したファイルが存在しませんとなってしまい、取得できませんでした。
ファイルパスの記述に失敗しているようですね。
サンプルファイルを添えて、マクロを書いている様子を収録した動画をお送りします。
以下のリンクからどうぞ。
これでもう少し理解が深まるとよいのですが...。
http://www.exvba.com/download/AskAnswer/sample180506.zip
また、この動画が、フォルダの階層構造の理解にもつながるとよいのですが。
> また、基礎編フォローアップ後半の講座ですが、確かに私のしたいことなのですが、自動記録を用いていると思います。
> 自動記録で書いたものと自分自身でコードを書いたものではどこがどのように違うのかがわかりません。
基礎編では詳細な解説まではできません。
自動記録で作ったコードをしっかり読めるようになる方法は、「発展編1」で取り扱っています。発展編1まで学習を進めてください。
> その方の書いたマクロを読んで理解できて、更に自分がメンテナンスできるレベルまでいかないとダメなので自動記録をごっちゃにされると混乱してしまいます。
> 自動記録でマクロを書くのなら自動記録を使わずに作ったマクロのコードを説明はしなくてもいいので比較用に紹介してもらえたらなと思います。
上述のとおりですので、発展編1まで学習が進むとこの問題は根本解決するかと思います。
基礎編の演習にある程度対応できるようになったら、発展編1まで学習を進めてください。
特に、基礎編フォローアップの演習前半は重要ですよ。まさに、Instr関数とかLeft関数とかを組み合わせる問題です。
ファイルパスの記述も文字列操作です。こういうことを手作業でサラサラできるようになるかどうか?ということが、めぐりめぐって、ファイルパスの記述を正確にできるか?書き間違えがあったときにすぐに気づくか?といったところにもつながります。
ある程度のスキルのある方なら別ですが、基礎的な能力がない段階では、「ピンポイントに教えて欲しいことだけ教えてくれ。そこしか学ぶつもりはないから」というより、よりごのみをせず、与えられた課題に粛々と取り組んだ方が、パソコンスキルの向上という意味でも結局近道です。
ご返信ありがとうございます。
また、動画をありがとうございました。
普段はPCを開く暇がないので、この週末でゆっくり拝見させていただきました。
何度も見せていただき理解を深めたいと思います。
また、ExcelだけではなくPC自体の基礎知識も合わせて学習していきたいと思います。
急がば回れの精神で取り組みたいと思います。
お返事ありがとうございます。
> 普段はPCを開く暇がないので、この週末でゆっくり拝見させていただきました。
それで、現在の段階で、理解はどの程度でしょう?
[1] 前回お渡しした動画の内容について
[2] このページのメインテーマ「複数ファイル間でのデータ転記」について
> お世話になります。
> ご返信ありがとうございます。
> また、動画をありがとうございました。
>
> 普段はPCを開く暇がないので、この週末でゆっくり拝見させていただきました。
> 何度も見せていただき理解を深めたいと思います。
> また、ExcelだけではなくPC自体の基礎知識も合わせて学習していきたいと思います。
> 急がば回れの精神で取り組みたいと思います。
第一目的を達成できそうなので、導入編に戻ります☆
余談ですが、教科書をもらったら一通り目を通し、面白そうだなと思った問題を解こうとしても当たり前のようにわからないので、学校の先生に聞くと「その問題はまだだ」と怒られ、塾の先生に教えてもらっていたことを思い出しました(笑)
大人になっても変わっていないようで、どんなことが学べるのかをざ~っと見ていた時に、目的の回があったので飛びついてしまいました。
失礼いたしました。
おはようございます。
> 先生、回答ありがとうございます!
> 第一目的を達成できそうなので、導入編に戻ります☆
> どんなことが学べるのかをざ~っと見ていた時に、目的の回があったので飛びついてしまいました。
> 失礼いたしました。
であれば、本当によかったです。
ひきつづき、よろしくお願いいたします。
フォルダerrorの中のファイル名mainのsheet1のA3セルの値をファイル名tenkiのsheet1のB3セルに転記したいと思っています。
よろしくお願いします。
なるほど。
拡張子が違いますね。
以下で、1行目はゲストさんの書いたマクロ。2行目は僕が直したものです。
Sub tenki()
' Workbooks("main.xls").Worksheets("sheet1").Range("A3").Value = Workbooks("tenki.xls").Worksheets("sheet1").Range("B3").Value
Workbooks("main.xlsm").Worksheets("sheet1").Range("A3").Value = Workbooks("tenki.xlsm").Worksheets("sheet1").Range("B3").Value
End Sub
それから、上記では、「ファイル名mainのsheet1のA3セルの値をファイル名tenkiのsheet1のB3セルに転記したい」という目的と反対ですね。
(左辺と右辺が逆)
このレベルの課題ひとつで基本的な間違いが重複して発生しているようですと、先に進むのはおそらくムリです。
ゲストさんの本オンライン講座の利用状況ログも確認しましたが、たぶんペースが早すぎでしょう。
導入編からしっかりやり直すべきかと思います。
ひとつひとつの課題を、自分でパソコン操作しながら解きつつ先に進むようにしてください。
> こんばんは。
> フォルダerrorの中のファイル名mainのsheet1のA3セルの値をファイル名tenkiのsheet1のB3セルに転記したいと思っています。
>
> よろしくお願いします。
アドバイスありがとうございます。
[1]について、マクロでデータをうつせるようになりました。
[2]について、今日チームへの説明の機会をいただきました。しっかり説得力のある説明をしたいと思います。
[3]について、成果物が形になってくると、やりきるぞ!という気持ちがわいてきますね。先生がおっしゃった、スキルと意思が相互に強め合うというのを身をもって感じています。
取り急ぎ今日は[2]に注力します。
アドバイスありがとうございます!
おお、良いですね!
よい結果となりますよう☆
> 小川先生
> アドバイスありがとうございます。
> [1]について、マクロでデータをうつせるようになりました。
> [2]について、今日チームへの説明の機会をいただきました。しっかり説得力のある説明をしたいと思います。
> [3]について、成果物が形になってくると、やりきるぞ!という気持ちがわいてきますね。先生がおっしゃった、スキルと意思が相互に強め合うというのを身をもって感じています。
>
> 取り急ぎ今日は[2]に注力します。
>
> アドバイスありがとうございます!
「プログラムを投稿する場合のヒント」のコードはエクセルに入れるものではなかったことに気が付きました。
失礼いたしました。
ファイルを送りましたのでよろしくお願いします。
どのフォルダのどのファイルにゲストさんの書かれた添削して欲しいマクロがあるのでしょうか。
相談相手が困らないように十分に準備してから相談を投稿してください。
人間相手にそういうことを練習するのも、こびとちゃんを操作するときに必要なスキルを高めるためのよい準備です。
よろしくお願いします。
> おはようございます。
> 「プログラムを投稿する場合のヒント」のコードはエクセルに入れるものではなかったことに気が付きました。
> 失礼いたしました。
>
> ファイルを送りましたのでよろしくお願いします。
よろしくお願いします。
添付いただいたファイルに、マクロが入っていないようです。
添削可能なファイルを再度お送りください。
それから、マクロが入ったファイルと、開こうとしているファイル、その両方を.zipファイルにまとめて送ることができますか?
難しければ、まずは、あなたが書いたマクロの入ったファイルだけをお送りください。
> ほんのひと文でお恥ずかしいかぎりですが、何度見ても、何度書き直しても、動画をストップして比較してみても、、、ギブアップです((+_+))
>
> よろしくお願いします。
おっしゃる通り、ほかの方も取り扱うファイルですので、皆さんの同意を得る必要があります。
私が使いたい分のシートのみをコピーして別ファイルに保存するということにして、元データには支障ないようにするという方向で行こうかと思います。
それでも同意を得られなかった場合は、どうしよう。。。
ここをやりきるには、ある程度のリソースが必要です。
[1]自分自身のパソコンスキルをしっかり身につけること。
手作業ででもExcelマクロを使ってでもよいのですが、ともあれ、複数ファイル間でのデータ転記を自力でできる必要はありますね。
[2]他者に対して説得力を持つこと。
これは、心理学的な面というのもありますが、それはさておき、「パソコン仕事やデータ整理に関することであれば、受講生さんの言うようにやるのが良いだろう」と周りの方が思ってくれるようになることです。
そのためには、受講生さん自身のパソコンスキルの向上は大事ですね。
[3]この改善をやりきるぞという意思をしっかり持つこと。
意思であればパソコンスキルも身につくでしょう。データの整理もできるでしょう。
同時に、パソコンスキルを身につけてデータ整理についても自信がつけば、この程度の改善ならやり切れるぞという自信もついてきます。
つまり、スキルと意思は相互に強めあうということです。(もちろん、お互いが弱めあうということもありますね)
あとは、あなたの提案する新しいやり方が他の方にとってもメリットのあることであれば、他の方も喜んでしたがってくれます。
例えば、マクロをガシガシ書いて、ついでに他の人が手作業で作っていたレポートも自動的に出てくるようにしてしまうとか。そこまでできなくても、他の方がレポート作成するのが簡単になるところまである程度整形した「R」を作成できるツールを用意するとか。
早速、結果を出して上昇気流になれるか?それとも、これまで通りのあり方を続けてしまうのか?というところの分岐点に来ているかもしれませんね。
さて、どこからやりましょう?
> 小川先生:
>
> おっしゃる通り、ほかの方も取り扱うファイルですので、皆さんの同意を得る必要があります。
> 私が使いたい分のシートのみをコピーして別ファイルに保存するということにして、元データには支障ないようにするという方向で行こうかと思います。
> それでも同意を得られなかった場合は、どうしよう。。。
ありがとうございます。
データが重いのは、おっしゃる通りRが30種類(数えてみたら多かった)ほどひとつのブックに入っているからです。
まずは一度ファイルをあけて、関係あるファイルのみ抽出して、そこからDを作るというという流れかなと思っています。ご意見伺えませんでしょうか。
まさに、やりたいのはそこですね。
そのファイルを取り扱っているのはあなただけですか?そうでない場合、他の方の同意を取ることもしなければなりません。もしその課題がある場合、どのように解決しましょう?
> 小川先生
> ありがとうございます。
> データが重いのは、おっしゃる通りRが30種類(数えてみたら多かった)ほどひとつのブックに入っているからです。
> まずは一度ファイルをあけて、関係あるファイルのみ抽出して、そこからDを作るというという流れかなと思っています。ご意見伺えませんでしょうか。
複数ファイル間でのデータの転記、時々ある業務でコピペで数日間かけてひたすら、、、という地獄が一気に解決!と意気揚々としていたのですが、自分でプログラムを書いてみるとうまくいきません。
この動画のたった一つの文章でもうまく動きません。。。
イコールの前が間違っているのかと思い、値を入れるプログラムを書いてみたところ、それはうまく値が入ります。
イコール以下が間違っているのかと思って、コピペをし、ブックとシート名を修正しましたがうまくいきません。
元データの値が消えてしまい転記されないのです。
何が間違えているのでしょうか?
コピペとサヨナラの扉が目の前にあるのに、開けることができないもどかしさを抱えつつ出勤してきます。。。
おはようございます。
> 元データの値が消えてしまい転記されないのです。
> 何が間違えているのでしょうか?
↑
たぶん、何かを間違えているのでしょうね。
でも、何を間違えたのか?まではこの状況報告だけで分りようがありません。
ですので、もし自分が書いたマクロを添削して欲しいということであれば、以下のどちらかを行ってください。
[1]自分が書いたプログラムをこの投稿欄に貼り付ける。
[2]自分が書いたプログラムが含まれてエクセルファイルをこの投稿欄から送付する。
元のデータファイルが1メガ以上あって、開くのだけで10秒以上(体感なので、もっと短いかもしれないし長いかもしれません)かかってしまいます。参照したいデータファイルは300以上あります。300個を開いて閉じて、としていたら負担がかなりかかりそうです。
やりたい動作は、データファイルにある20シート中のひとつのシートの数行をコピーして、マスターシートに書き込むというものです。初心者考えなのですが、ファイルを開くのは大変だけど、中身の処理自体は時間かからないのかな、と思っています。
容量を軽くした3件のデータファイルを使ってサンプルで作ってみたところ、処理自体は出来るのですが、完了までに1分以上かかってしまいました。本運用した場合、負担が大きすぎてフリーズしたりパソコンがダウンしてしまわないか心配です。
そのような場合、マクロの処理の負担(?)を下げ、時間を短縮させるためにはどんな方法があるでしょうか。
ネットで調べたところ、ブックを開かないでデータを持ってくる方法(ExecuteExcel4Macro)や、スクリーンの更新を解除などがみつかりましたが、これらについてはいかがお考えでしょうか。
もしくは、特にどの講座であったり、どの講義をみるとヒントがある、ということを教えていただけないでしょうか。
よろしくお願いします。
まずは、DPRからですね。
以下の動画を観て、ひとつひとつ、丁寧にコメントしてみてください。
https://forum.pc5bai.com/lesson/course/35
> 開いているファイル以外は操作できない、とのことで悩んでいます。
>
> 元のデータファイルが1メガ以上あって、開くのだけで10秒以上(体感なので、もっと短いかもしれないし長いかもしれません)かかってしまいます。参照したいデータファイルは300以上あります。300個を開いて閉じて、としていたら負担がかなりかかりそうです。
>
> やりたい動作は、データファイルにある20シート中のひとつのシートの数行をコピーして、マスターシートに書き込むというものです。初心者考えなのですが、ファイルを開くのは大変だけど、中身の処理自体は時間かからないのかな、と思っています。
>
> 容量を軽くした3件のデータファイルを使ってサンプルで作ってみたところ、処理自体は出来るのですが、完了までに1分以上かかってしまいました。本運用した場合、負担が大きすぎてフリーズしたりパソコンがダウンしてしまわないか心配です。
>
> そのような場合、マクロの処理の負担(?)を下げ、時間を短縮させるためにはどんな方法があるでしょうか。
> ネットで調べたところ、ブックを開かないでデータを持ってくる方法(ExecuteExcel4Macro)や、スクリーンの更新を解除などがみつかりましたが、これらについてはいかがお考えでしょうか。
>
> もしくは、特にどの講座であったり、どの講義をみるとヒントがある、ということを教えていただけないでしょうか。
>
> よろしくお願いします。
夢が実現しつつあります。
その前に、フォロアップをしっかりやって
手を動かして身につけていきます!
手元、とても大切です (^^*
> ファイル操作って夢ですね。
> 夢が実現しつつあります。
>
> その前に、フォロアップをしっかりやって
> 手を動かして身につけていきます!
コメントありがとうございました。
>浦山さんの場合は、フォローアップをやってみて、行き詰まったら、それから>講座本編の資料を見直したり、動画を見直したり、というのでも良いかと思
>います。
こちらのコメントを拝見し、フォローアップから取り組むことにしました。
必要に応じて基礎編の動画と行き来する形で進めていく方針に致します。
>フォローアップ演習の動画は、
>通勤時間の電車の中等でも見られるかもしれません。
帰宅時は拝見するようにしていますよ(*^^)v
良い復習になっています!
>あと、実務もマクロをガンガン活用してください。
フォローアップ7まで動画を拝見しました。
次、手を動かします。
職場はRの状態で書かれたExcelの相談記録100シートがあり、
強引にワークシート関数(Index)を使用してDの形に纏め、
報告書や分析ピボットを形成しやすいようにしています(カウンセリングの記録なので所謂、Excel方眼紙状態の非常に取りこみにくいRです)。
□シート名の変更が頻繁にあるのを処理として何とかしたい(現状、練習不足なので構想はあるもののぼんやりしている為、今は練習に集中)
□入力ミス、漏れが発生しやすいので(職場が殆ど60代以上のPC不得手な方で構成されている関係上)、フォーム等で入力ミス削減、入力データの統一を図りたい(現状は入力規則で縛っていますが、これをフォームにしてみたい)
などなど、少しずつでも形にしていきます。
データ自体は100~150個位が月間に発生するだけなんですが、
マクロに置きかえられるところを置き換えていけば、
私の仕事時間は限りなく0に近付けられるはずです。
仕事は個室でゆっくりできるので、
浮いた時間は更にスキルアップしてもっと大規模なデータや、
複雑なデータを扱えるようにして、年収アップも狙っていきたいと思います。
その為にもまずは現状で負荷を限りなく0にするところから始めたいと思います。
続きもがんばります!
> 職場はRの状態で書かれたExcelの相談記録100シートがあり、
> 強引にワークシート関数(Index)を使用してDの形に纏め、
> 報告書や分析ピボットを形成しやすいようにしています(カウンセリングの記録なので所謂、Excel方眼紙状態の非常に取りこみにくいRです)。
各シートのどのセルに何についての情報が入っているのか?といったことが規則的に決まっているなら、基礎編レベルのマクロでも一気にDの形に直せますよ。
たとえば、一番左のシートがD用のシートとして、以下の要領。
Sub toromatome()
Dim i
For i = 2 To Worksheets.Count '←発展編で扱いますが、アクティブブック内のシートの数を取得できます。
Worksheets(1).Range("a" & i + 1).Value = i - 1
Worksheets(1).Range("b" & i + 1).Value = Worksheets(i).Range("f3").Value
Worksheets(1).Range("c" & i + 1).Value = Worksheets(i).Range("f7").Value
Worksheets(1).Range("d" & i + 1).Value = Worksheets(i).Range("f11").Value
'...
Next
End Sub
> □入力ミス、漏れが発生しやすいので(職場が殆ど60代以上のPC不得手な方で構成されている関係上)、フォーム等で入力ミス削減、入力データの統一を図りたい(現状は入力規則で縛っていますが、これをフォームにしてみたい)
> などなど、少しずつでも形にしていきます。
↑
これは、「イベントとフォーム」講座の出番ですね。
> データ自体は100~150個位が月間に発生するだけなんですが、
> マクロに置きかえられるところを置き換えていけば、
> 私の仕事時間は限りなく0に近付けられるはずです。
>
> 仕事は個室でゆっくりできるので、
> 浮いた時間は更にスキルアップしてもっと大規模なデータや、
> 複雑なデータを扱えるようにして、年収アップも狙っていきたいと思います。
> その為にもまずは現状で負荷を限りなく0にするところから始めたいと思います。
お楽しみを☆
職場では動画が見られませんが、ファイル自体の操作は行えますので、
動画を見ながら触ったコードを何度も何度もやり直して体に染み込ませたいと思います。
そのうえで、フォローアップに挑みます!
> そのうえで、フォローアップに挑みます!
浦山さんの場合は、フォローアップをやってみて、行き詰まったら、それから講座本編の資料を見直したり、動画を見直したり、というのでも良いかと思います。
フォローアップ演習の動画は、通勤時間の電車の中等でも見られるかもしれません。
あと、実務もマクロをガンガン活用してください。
順を追って学んでいけば難しいことではないです v(^^*
>実務でもほかのファイルから情報を拾って埋めてまたさらに別のファイルからといくつものファイルを参照して再集計になるマクロを実行しています。どうやってやるのか不思議でしたが、なんとなくわかりました。
Workbooks.Open Filename:="D:\tsuika\sub\" & Workbooks("main.xls").Worksheets("Sheet1").Range("B5").Value
のように指定していましたが、
Workbooks.Open Filename:="D:\tsuika\sub\" & Range("B5").Value
でも開けると思い、実際に試してみたところ開けました。
その書き方だとそのときにアクティブなファイル、シートが何かによって結果が変わります。
この動画を見た人が操作ミス等のために別ファイル、別シートを開いていたとしても動くようにと考えたら面倒でもファイル、シートを指定したサンプルのほうがよいかなと思いまして。
>ブックを開く際に、動画では
>Workbooks.Open Filename:="D:\tsuika\sub\" & Workbooks("main.xls").Worksheets("Sheet1").Range("B5").Value
>のように指定していましたが、
>Workbooks.Open Filename:="D:\tsuika\sub\" & Range("B5").Value
>でも開けると思い、実際に試してみたところ開けました。
コメントありがとうございます。
>実務で生かすには、やはり基礎編だけでは不十分なことがわかりました。
どういう状態をもって「実務で活か」しているとみなすか次第かと。
「基礎編レベルの知識だけでマクロを十分にガンガン活用できている」という声も多いです。そういう方は、「基礎編だけでは十分なことがわかりました」とおっしゃいます。
※もっとも、そういう方は、以下の無料動画で言う「DPR」にしっかり基づいた仕事をされているようです。
http://www.exvba.com/dpr.php
> ところで、For Next構文では、行を変数にする方法は習いましたが、列を変数にする方法もあるのでしょうか。
発展編で扱います。
もっとも、縦にではなく、横に連続計算をしなくてはならないようだと、そもそも作業対象の表の設計に問題がある場合が多いです。どんな案件で困られているのかは見ていないので分かりませんが、上記「DPR」に基づいた仕事にできないか?再検討してみてください。
ちょっと言葉足らずでした。自分の業務上、もう少し勉強する必要があると感じました。経済調査関係の仕事をしており、業務の効率化のため、VBAの勉強を始めました。官公庁のホームページに掲載されている時系列データのフォームがまちまちなため、それを取り込むのに、行列を変換する必要があったり、不要な行や列を消去する必要があったり、あるいはテキストデータなどからデータを取り込む必要があります。ご指摘いただいたDPRやフォローアップ講座も活用し、もう少し勉強します。
>受講生 さん:
>
>コメントありがとうございます。
>
>>実務で生かすには、やはり基礎編だけでは不十分なことがわかりました。
>
>どういう状態をもって「実務で活か」しているとみなすか次第かと。
>「基礎編レベルの知識だけでマクロを十分にガンガン活用できている」という声も多いです。そういう方は、「基礎編だけでは十分なことがわかりました」とおっしゃいます。
>
>※もっとも、そういう方は、以下の無料動画で言う「DPR」にしっかり基づいた仕事をされているようです。
>http://www.exvba.com/dpr.php
>
>> ところで、For Next構文では、行を変数にする方法は習いましたが、列を変数にする方法もあるのでしょうか。
>
>発展編で扱います。
>もっとも、縦にではなく、横に連続計算をしなくてはならないようだと、そもそも作業対象の表の設計に問題がある場合が多いです。どんな案件で困られているのかは見ていないので分かりませんが、上記「DPR」に基づいた仕事にできないか?再検討してみてください。
なるほど、そういうことですか。
> 行列を変換する必要があったり
導入編で自動記録のやり方について紹介しています。
自動記録しつつ範囲指定してコピー→別の場所に、「行列を入れ替えて貼りつけ」してみてください。
> 不要な行や列を消去する必要があったり、
上記も、自動記録にて。
> あるいはテキストデータなどからデータを取り込む必要があります。
これも、まずは自動記録にて。
ということで、自動記録を使えば力業でなんとかなるかもしれません。
自動記録で出来上がるマクロはメソッドの構文を含んだりといろいろあります。
そこまできちんと読解して自在に編集できるようになりたいということでしたら、発展編1まで学ぶ必要はあります。
http://www.exvba.com/hatten1.php
> 官公庁のホームページに掲載されている時系列データのフォームがまちまちなため、それを取り込むのに、
これは、力業でやる方法とマクロで一気に片付けてしまう方法があります。
全社は、そのページからデータを取得する都度、 [Ctrl] + [A] で全体を選択、 [Ctrl] + [C] でコピー。そして、エクセルシートに貼り付けです( [Ctrl] + [V] )。
上記は、よけいな書式データのコピーもされるので時間はかかりますが、スキルがあまりなくてもやれる方法です。
複数回同様の処理をするのであれば、エクセルに貼りつけたあとの作業はマクロで行ってください。
マクロで一気に片付けるのであれば、マクロを使って直接ウェブページからデータを取得することもできます。
http://www.exvba.com/webr.php (←発展編1を修了してからの受講をおすすめします)
頻繁に似たようなデータ収集を行うということでしたら、マクロを使って直接ウェブページからデータを取得するほうが楽でしょう。
いずれにしても、ウェブページはDPRで言うところのRなので、ここから持ってきた情報を直接加工して作りたい帳票なりを作るというより、まずはウェブページから持ってきた情報を使って自分のエクセルファイルのどれかのシートにDを作ることを目指してください。
Dさえあれば種々のレポートを作ることも都度ウェブページから情報を引っ張ってきて処理するよりも簡単です。
経済調査関係のお仕事をされているということなので、自分用に基礎データを蓄積する仕組みを作っておけば、それ自体が職場での情報収集力の面でのさらに強烈な差別化点になるかと思います。
>小川さん、
>
>ちょっと言葉足らずでした。自分の業務上、もう少し勉強する必要があると感じました。経済調査関係の仕事をしており、業務の効率化のため、VBAの勉強を始めました。官公庁のホームページに掲載されている時系列データのフォームがまちまちなため、それを取り込むのに、行列を変換する必要があったり、不要な行や列を消去する必要があったり、あるいはテキストデータなどからデータを取り込む必要があります。ご指摘いただいたDPRやフォローアップ講座も活用し、もう少し勉強します。
>
>
>
>>受講生 さん:
>>
>>コメントありがとうございます。
>>
>>>実務で生かすには、やはり基礎編だけでは不十分なことがわかりました。
>>
>>どういう状態をもって「実務で活か」しているとみなすか次第かと。
>>「基礎編レベルの知識だけでマクロを十分にガンガン活用できている」という声も多いです。そういう方は、「基礎編だけでは十分なことがわかりました」とおっしゃいます。
>>
>>※もっとも、そういう方は、以下の無料動画で言う「DPR」にしっかり基づいた仕事をされているようです。
>>http://www.exvba.com/dpr.php
>>
>>> ところで、For Next構文では、行を変数にする方法は習いましたが、列を変数にする方法もあるのでしょうか。
>>
>>発展編で扱います。
>>もっとも、縦にではなく、横に連続計算をしなくてはならないようだと、そもそも作業対象の表の設計に問題がある場合が多いです。どんな案件で困られているのかは見ていないので分かりませんが、上記「DPR」に基づいた仕事にできないか?再検討してみてください。
>
学習記録としてメモを残す
※メモを残すにはこの講座の利用権限が必要です。