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
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
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
' 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
urasakijhonさんの投稿
(投稿ID: 5262)
を実行すると実行時エラー1004となります。
また、
についても実行時エラー9となります。
urasakijhonさんのコメント
(コメントID: 7458)
アドバイスをお願いします。
小川 慶一さんのコメント
(コメントID: 7459)
エラーについての相談の場合は、エラーメッセージも記載してください。
たとえば、実行時エラー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」というフォルダが実在するのかどうか怪しい。
...と、そういう要領でチェックしていきます。
とはいえ、最初の[1]でひっかかるのではないかと思います。
なぜなら、ファイルパスを区切る円マークが、半角ではなく全角になっているからです。でも、そこだけ直せば問題は解決するのかというと、いただいたソースコードだけではわかりません。
サブプロシージャ「tenki」についても同様です。
まずは、右辺を単純にしてしまう。
それで動くようなら、右辺を次第に複雑にしていく。
以下は順を追ったテストの一例です。
初心者のうちはこのくらいのテストでも負担に感じますが、それは初心者だからです。
経験値を積むと(&講座で学ぶショートカットキーをしっかりマスターすると)、脳や身体にほとんど負荷をかけずに、速やかに解決できるようになります。
urasakijhonさんのコメント
(コメントID: 7462)
※ここにコメントする前に、エラーになったコードをメモ帳に張り付け、その張り付けたコードを、ここのコメントにコピペすると「/」に変換されてしまったので、手打ちで「¥」にしました。
実は違うエクセルbookを開いて同じように転記のコードを書くと、問題なく実行できました。
同じように書いているつもりでも、何かが違うのですねきっと。。。
アドバイスどおり、小分けにしてエラーを解消する作業をしていきます。
また、こちらで教えて貰っているショートカットキーと、都度調べているショートカットキーを駆使して、1週間で(20年使っていた)マウスを卒業することができました。快適です♪
ありがとうございました。
小川 慶一さんのコメント
(コメントID: 7467)
>アドバイスありがとうございます。実は全角で入っている「¥」は、実際は半角になっています。
>※ここにコメントする前に、エラーになったコードをメモ帳に張り付け、その張り付けたコードを、ここのコメントにコピペすると「/」に変換されてしまったので、手打ちで「¥」にしました。
そうだったのですね。
お気遣い恐縮です。
というか、「投稿欄にも、円マークがバックスラッシュになっても気にせず投稿してください」という趣旨の文言を追記すべきかもしれません。
なお、「投稿・相談のヒント」で示しているとおり、プログラムの前後をコードハイライト用のタグで囲うことができます。
その場合、円マークがバックスラッシュという変換は生じません。
https://forum.pc5bai.com/column/tips_to_post/#code_highlight
>また、こちらで教えて貰っているショートカットキーと、都度調べているショートカットキーを駆使して、1週間で(20年使っていた)マウスを卒業することができました。快適です♪
>ありがとうございました。
こちらも、失礼しました。
おみそれしました。快適とのこと、何よりです。
>実は違うエクセルbookを開いて同じように転記のコードを書くと、問題なく実行できました。
>同じように書いているつもりでも、何かが違うのですねきっと。。。
>アドバイスどおり、小分けにしてエラーを解消する作業をしていきます。
こちらは、しっかりやってみてください。
「同じように書いているつもりでも」ということですので、書くのではなく、動かないほうのコードをその「違うエクセルbook」のモジュールにコピー&ペーストで追加してから試してみる等々。
なお、発展編1で登場する ThisWorkbook.Path というプロパティを利用して、実行するマクロの入っているエクセルファイルのあるフォルダのパスを取得することができます。
(ThisWorkbook は実行するマクロの入っているエクセルファイル、 Path はそのフルバス)
長いパス文字列をソースコードに含めるより、マクロの入ったファイルと同じフォルダ(あるいはその下位のフォルダ)に処理対象のファイルを置いて、以下の要領でファイルを開くほうがたいていの場合簡単です。
小川 慶一さんのコメント
(コメントID: 7468)
あれ、すいません。
表示を再確認してみたのですが、やはりだめでした。
ともあれ、環境によって表示が変わるだけで円マークもバックスラッシュも中身は同じですので、気になさらないでください。
今後ともよろしくお願いいたします。