No.1
- 回答日時:
ファイル名が変わっても…というと常に何を実行するかは決まっていないんでしょうか?
もしファイル名のパターンが決まっているなら可能ですが(特定セルでファイル名を取得するようにしてファイルパスにし、それを開くようにするなどで)、どういう変わり方なんですかね?
また、さすがにファイルの置き場所(パス)は変わらないですよね?
なるほど、そんな感じになりますよね。私自身マクロについて詳しくないのと、せいぜい7〜8のファイルに分けるだけですので、その度にこのマクロの一文を変更するのがいいのでしょうか。
No.2
- 回答日時:
No1の者です。
どういう作業内容かが読め無いので回答に困っています。
作業内容によってもやり方が変わりますし条件によっても何ができて何ができるのか、提案ができるのですが、今提案のしようが無いので、作業内容の詳細を記載されたほうがいいですね。
なんのためにファイル名を変えているか、ファイル名はパターン化されているのか(〇〇年〇月.xlsmというふうに)、それとも勝手に誰かに全然関係ないファイル名に変えるのか、一体なんの為のApplication.Runなのか、同時に複数ファイルを開いているだけなのか、別の作業なのか…全然分からないので勝手に必要ないと決めつけずにある程度質問するときは詳細を伝えてください。
お返事ありがとうございます。初心者でマクロの何を伝えて良いのか分かっておらず申し訳ありません。
Excelで勤怠管理を行おうと考えています。打刻をして保護をかけてある程度不正などは起こらないように作成し、完成に近づいて来ました。
事務所ごとに1ファイル作成し、原本のタイムカードにあたるシートをコピーして職員の方には使っていただこうと考えています。
ですので、事務所ごとにファイルを作成する時に当然ファイルの名前が変わってしまい、マクロの行にファイル名が入っているとその度にエラーがでるので訂正する作業が出て来る事に気づきました。この作業を出来るだけ簡単に行えれば良いと考えています。
ファイル名は規則性は出てくると思います。ファイル名の変更と同時にマクロの行のファイル名も変更になると1番良いです。
こんな説明で足りているでしょうか。よろしくお願いします。
No.3
- 回答日時:
補足ですが、
もし仮に、全然関係ないファイル名に誰かに変えられる場合(そんなことあるか不明ですが)で、ただほかブックのマクロが必要で実行したいだけであれば、
その実行したいマクロのあるブックすべて特定フォルダに移し、
Application.runで各ブックのマクロを実行する側のブックではその特定フォルダのファイル名を全取得するようにし、取得したファイル名全てに実行予定のマクロ呼び出し、エラーは全てOn Error Resume Nextで弾くということもできます。
例えばtest2.xlsmに実際はマクロaがあるがtest1,2,3いずれに入っているか不明な場合、なので取り敢えず全部に実行命令する感じです。
荒っぽいですが。
本当に早くて丁寧な返信ありがとうございます。何となくイメージ出来るのですが初心者の私には複雑になりすぎている気がします。小さい会社なのですがシステム担当の方に相談しても良い反応をしてもらえず困っていましたがUh-huhさんのお陰でほぼ完成に近づいて来ています。直接依頼したいぐらいです。本当にありがとうございます。
No.5
- 回答日時:
>ファイル名の変更と同時にマクロの行のファイル名も変更になると1番良いです。
分かりました!詳細ありがとうございます!
原本ファイルがあるとのことなので、その原本ファイルにマクロ構文が入っているということで間違いないですか?
その原本をコピーして、毎回ファイル名は変わるということですかね?
ちなみに現在開いているブックのマクロを呼び出す際ファイル名取得は必須じゃないので、もし仮に原本ファイルにマクロ構文が入っているならわざわざ他ブックから呼び出すやり方でマクロ実行しなくても良くて、ファイル名取得する必要もないのですが、なにかやむを得ない理由があると思って良いでしょうか?
一応私ならこうするというやり方ですが、原本ファイルにランダムで変わるファイル名を取得するために任意のセル、例えばA1にCELL関数を入れ自ブックのファイル名含むフルパスを取得できるようにします。そしていじられないように適当に非表示にしておきます。
その上でApplication.run を実行する際構文ではファイル名を指定せずに A1セル値を引っ張るように書きます。そうすることで毎回変わるファイル名はA1に反映するので変わっても大丈夫です。
本当にありがとうございます。
原本ファイルにマクロが入っています。
その原本をコピーして事務所ごとにファイル名を変えようと思っています。
原本ファイルが開いていたら、ファイル名を変えたファイルのマクロも使えるんですよね。これを知らなくて自分のPCで作成したファイルを名前を変更して別のPCで開いた時にマクロ実行するとエラーが出て驚きました。でもこれは名前を変えたファイルを使う時に常に原本ファイルを開いておかなければいけないということですよね。そうだとしたらそれをタイムカードに打刻をする度に職員にお願いするのは良くないと・・・。こんな説明で理解していただけているのでしょうか。
ランダムで変わるファイル名を取得するというのは何となく理解出来ますがこのマクロを書くとなると私にはハードルが高いです。
No.7
- 回答日時:
ある程度どうしたらいいか想像できたので具体的な構文後ほどきちんと回答いたします
イメージとしてはNo3の回答に近くなるかと思います。
ちなみに職員にお願いするとどうせ漏れるからNGなのか、不正に関わるからNGなのかどちらでしょう?
また、どのくらいの頻度で実行しますか?
ありがとうございます。どのように返事すればうまく伝わるか難しいですが、タイムカードとしてExcelファイルを使うので職員は出勤する度にこのファイルを使います(打刻します)。毎月5日〆ですので、〆が来る度に次の月の原本を作成し職員に回す予定です。作成とは言っても月日曜日を更新するだけですので簡単です。
No.8ベストアンサー
- 回答日時:
Sub aaa()
Const path As String = "C:\testes\" '各事務所のファイルを置くフォルダのパス
pasu = Dir(path & "*.xls") '上で指定したフォルダ内に入っているxls(xlsm、xlsx全て含む)ファイルを
Do While pasu <> "" '探して
cnt = cnt + 1
Cells(cnt, 1) = path & pasu 'A1から純につっこむ
pasu = Dir() 'ファイルが無くなるまで繰り返す
Loop
For Each Rng In Range("A1", Cells(Rows.Count, 1).End(xlUp)) '行がいくつあるかわからないのでA1から下にかけて何かしら値が入っているセルまで範囲指定
Application.Run ("'" & Rng & "'!Sheet1.m1") 'Sheet1.m1=実行したいマクロ名
On Error Resume Next 'エラーを弾く
Next
End Sub
各行の意味は適当すぎる説明ですがこんな感じです。
内容としては、
各事業所のマクロを実行するだけのAというエクセルファイル(以下A)を作成し上記のマクロを組んでおき、
各事業所に配るエクセルファイルabcd…(以下abcd)の中にあるマクロを呼び出すのですが、
abcdは毎回ファイル名が変わるとのことなので、そのファイル名をまず取得してA列上に入れます(ただしabcdを置くフォルダはバラバラではそもそも探せないので、場所を決めなくてはいけません、上記のマクロではC:\testes\配下にあることになっています)
その後に、取得したファイル名からマクロを実行します。原本があるとのことなのでマクロ名は同じだろうということでそのまま構文に入れています(上記ではマクロ名Sheet1.m1)。
これで元の質問の答えになるはずです!
が、ただちょっと気になるのは、マクロってブックを指定しない限りアクティブブックに対して有効になるので、既に組まれているマクロがAに対して実行されないように組まれているかな?ということですが…でもまあ元々フォルダ名さえ指定できれば上手く動いていたマクロなので大丈夫なんだろうと思っています…!
ちなみに補足読んでですが、abcdのファイルは毎日みんな出勤するたびに開くんですよね?
自動実行にしたらまずそうですかね?なんなら変なところいじられたくないとかならユーザーフォームとかでブック自体は見えなくしてユーザーフォームだけ見せてクリックだけさせるとかもできるんですが(クリックしたら打刻~マクロ実行し保存して閉じてエクセルアプリケーションをプロセス終了するまでを一連のマクロで組むとか)
そしたら毎週日曜に更新しなくてもいいはずなんですけどね!環境が見えないので提案が難しいですね…
回答ありがとうございます。う〜ん、私の知識のなさが問題です。書いていただいたマクロあと一歩のところでつまずいてしまいました。
「Application.Run ("'" & Rng & "'!Sheet1.m1") 'Sheet1.m1=実行したいマクロ名」の部分に何を入れていいのかがわかりません。A列上にファイル名を取得することはできています。このマクロを実行するために作ったファイル名も取得されています。
No.9
- 回答日時:
Application.Run ("'" & Rng & "'!Sheet1.m1") 'Sheet1.m1=実行したいマクロ名
の'Sheet1.m1=実行したいマクロ名はただのコメントですからね!?一応コピペしたら緑色の文字になるので気づくとは思いますが…
Application.Run ("'" & Rng & "'!Sheet1.m1")
これはあくまで例なので、Sheet1.m1がマクロ名になっていますが、
もし標準時というマクロ名なら、
Application.Run ("'" & Rng & "'!標準時")
になります
エラーが出なくなり一瞬喜んだのですが、指定したファイルがすべて開いた状態で終わり、その他の変化がありません。このマクロは各ファイルの「Application.Run "専任タイムカード集計ファイル.xlsm!標準時"」の部分を各ファイルのファイル名に変換してくれるマクロなんですよね。新しいファイル名は上記の専任の前に事務所所在地、例えば「大阪専任タイムカード集計ファイル」のように変わっているだけです。
No.10
- 回答日時:
多分エラーが出ていますね…
一度on error resume next を省いて見てもらえますか?即エラーが出ますかね?
一応作成後試用したので(単純なmsgBox出すだけのマクロを2つとマクロなしファイル1つの合計3ファイル保存したフォルダを対象に)、使えたんですが…。
それと、質問者さんが実行したいマクロをSheetモジュールに入れることはできますか?
ちなみにパスがかかっていることが原因かは不明です、私はパスをかけずに試したので。一回外して上手くいくなら原因ですね。
on error resume next を省いてもエラーは出ません。普通に実行されたような感じになります。対象のファイルが開いた状態で終了になりますが、マクロが書き換えられた形跡はありません。
Sheetモジュールとは何でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
マクロについて教えてください。 ファイル名を変更すると、デバックエラー
Word(ワード)
-
ファイル名変更後も、マクロを動作させたいのですが?
Access(アクセス)
-
エクセルマクロで不特定なファイル名を使用するには
Excel(エクセル)
-
-
4
Application.Runエラー(1004)
Excel(エクセル)
-
5
エクセルマクロ 異なるファイル名でも実行してくれるマクロ
Excel(エクセル)
-
6
エクセル マクロ名にブック名が付いた場合の修正方法
Excel(エクセル)
-
7
エクセルVBA 「Application.Run」について
Excel(エクセル)
-
8
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
9
シート名を変更してもVBAに影響がないようにしたい
Excel(エクセル)
-
10
エクセルマクロ ファイル名を変更したとき
Excel(エクセル)
-
11
EXCELのボタンによるマクロの登録名にファイル名が入ってしまう
PowerPoint(パワーポイント)
-
12
シート名を変更してもVBAでエラーにならないように
Excel(エクセル)
-
13
名前の変わるブックをアクティブにしたい。
Excel(エクセル)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
【Excel VBA】ファイル名が一定でないファイルの指定方法
Excel(エクセル)
-
16
VBA 実行時エラー 1004 マクロが使用できないエラーの原因がわかりません
Visual Basic(VBA)
-
17
エクセル関数>参照ファイル名をセルから呼び出す
Excel(エクセル)
-
18
参照元のブック名の変更を自動的に式に反映させたい
Access(アクセス)
-
19
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
20
EXCELマクロでファイル名を指定して実行.....
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】その時、その時で変...
-
「開いているすべてのブック」...
-
エクセルファイルを自身のファ...
-
エクセルのマクロについて教え...
-
AccessからExcelマ...
-
マクロの有効化するダイヤログ...
-
Excelファイルがxslからxslmに??
-
エクセル終了時の保存確認メッ...
-
エクセルのマクロについて教え...
-
Accessの警告
-
【VBAファイル移動】2つのマク...
-
エクセル開く時重たい
-
ファイルリネームの良い知恵を...
-
EXCEL マクロ クリップボードク...
-
複数のpowerpointのファイルを...
-
エクセルマクロが海外PCで開けない
-
VBA マクロ実行時エラー’1004Ra...
-
秀丸で保存時のフォルダを固定...
-
秀丸で、1行目と2行目を入れ替...
-
エクセルマクロ実行中に別ファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
別のパソコンでエクセルのマク...
-
VBA マクロ実行時エラー’1004Ra...
-
EXCEL マクロ クリップボードク...
-
昨日まで動いていたエクセルの...
-
Excelマクロ ファイル名が変わ...
-
excelファイルに使われているVB...
-
アクセスでファイルを開いたと...
-
エクセルマクロ実行中に別ファ...
-
エクセルマクロにてパワーポイ...
-
エクセル2013vbaで、見えない名...
-
マクロを消すマクロは不可能?
-
excelが別プロセスで起動してし...
-
エクセルファイルを自身のファ...
-
excelでpersonal.xlsを常に開く...
-
Excelが勝手にシート移動してし...
-
Excel2010 PERSONAL.xlsbの挙動...
-
excelのマクロ実行でブロックさ...
おすすめ情報
マクロにパスワードがかかっているとか関係しますか。