アプリ版:「スタンプのみでお礼する」機能のリリースについて

独学でExcelを学んでおり、非常に有用に思われたので Application.Run を
さわり始めたのですが、
受け側.xlsm
Sub 受け側()
Dim FilePath, ModuleName, ProgramName, FileName
FilePath = "**********"
ModuleName = "Module1"
'ProgramName = "大元マクロ()"
FileName = Dir(FilePath)
Application.Run "'" & FilePath & "'!" & ModuleName & "." & ProgramName
Application.DisplayAlerts = False
Workbooks(FileName).Close
Application.DisplayAlerts = True
End Sub

大元.xlsm
Sub 大元マクロ()
Cells(12, "A").Value = "ああああ"
Rows(4).Copy
Rows(6).Insert Shift:=xlDown
End Sub

にて、Excelファイルは両方デスクトップにあり、エラーも出ないのですが
Cells(12, "A").Value = "ああああ"
↑は反映されるのですが

Rows(4).Copy
Rows(6).Insert Shift:=xlDown
↑部分が反映されません。

もちろん、大元.xlsm を起動し、Sub 大元マクロ()を単体で動かせば
大元.xlsm上にて指示通り反映されます

なにか根本的な間違いがあるのでしょうか?

質問者からの補足コメント

  • はい、処理対象は、受け側.xlsm Sheets("AAA")となります。
    私も当初、指定が必要かと思い
    Workbooks("受け側.xlsm").Sheets("AAA").Cells(12, "A").Value = "ああああ"
    Workbooks("受け側.xlsm").Sheets("AAA").Rows(4).Copy
    Workbooks("受け側.xlsm").Sheets("AAA").Rows(6).Insert Shift:=xlDown
    と、指定を行ないましたが結果に変化が見られなかったため、質問をさせていただきました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/17 16:22

A 回答 (5件)

>現在はマクロをアドイン化+登録方法をマニュアル配布で、近い状態を


>再現できるのでは? と、考えております。

application.runは、よくわからないところがあるので、
マクロのアドイン化で対応できるなら私も、そちらの方が良いかと思います。
    • good
    • 0

tatsumaru77 様


ご回答ありがとうございます。
質問者:おとしより で、ございます。

誠に恥ずかしながら、何故かログインができないため新規にて登録を
いたしまして、ご返答をさせていただいております。

はい、少し手を加えまして動作確認ができましたので、本命である
マクロへ変更し動作確認を行なったところ、結果が毎回変わる現象に
見舞われ、ステップインでの検証もできないため、application.run での
方向は断念をいたしました。

現在はマクロをアドイン化+登録方法をマニュアル配布で、近い状態を
再現できるのでは? と、考えております。

検証にお時間まで割いていただき、誠にありがとうございました。
    • good
    • 0

No2です。


結局のところ、何が原因なのかよくわかりませんでした。
あなたにとって、満足な回答にはなりませんが、ワークシート情報をパラメータとして渡せば、それなりに期待した動作になるようです。


Sub 受け側()
Dim FilePath, ModuleName, ProgramName, FileName
FilePath = "*****"
ModuleName = "Module1"
ProgramName = "大元マクロ"
FileName = Dir(FilePath)
Dim ws As Variant
Set ws = Worksheets("AAA")
Dim macname As String
macname = "'" & FilePath & "'!" & ModuleName & "." & ProgramName
Call Application.Run(macname, ws)
Application.DisplayAlerts = False
Workbooks(FileName).Close
Application.DisplayAlerts = True
End Sub


Sub 大元マクロ(ByRef ws As Variant)
ws.Cells(12, "A").Value = "ああああ"
ws.Rows(4).Copy
ws.Rows(6).Insert Shift:=xlDown
End Sub
    • good
    • 0

No1です。


補足ありがとうございました。
こちらでも再現しました。
copy命令はapplication.runで実行される場合、何かの制約があるのかもしれません。
解決に至るかどうかはわかりませんが、こちらでも調査してみます。
    • good
    • 0

Cells(12, "A").Value = "ああああ"


Rows(4).Copy
Rows(6).Insert Shift:=xlDown

シート名をきちんと記述していないのが原因かと思われます。
上記の処理対象となるシート名は何でしょうか。
又、このシートは、受け側.xlsmのシートですか。
それとも、大元.xlsmのシートでしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

間違えて補足コメントしてしまい失礼しました。

はい、処理対象は、受け側.xlsm Sheets("AAA")となります。
私も当初、指定が必要かと思い
Workbooks("受け側.xlsm").Sheets("AAA").Cells(12, "A").Value = "ああああ"
Workbooks("受け側.xlsm").Sheets("AAA").Rows(4).Copy
Workbooks("受け側.xlsm").Sheets("AAA").Rows(6).Insert Shift:=xlDown
と、指定を行ないましたが結果に変化が見られなかったため、質問をさせていただきました。

お礼日時:2023/06/17 16:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!