自動運転は機能するのに請求書の締め日だけが反映されないが? 他のブックのAuto_Openプロシージャを実行する方法?
Question 009k 拙著「組み方講座」 Previous Next
312ページ [4-1-1図] ◆ 環境・・ Excel2000 & Windows2000
詳細は こちら
「Excel VBA マクロ組み方講座」を購入し、必死で勉強しています。
これまで記録マクロだけでどうやらすごしてきたのですが、限界かなと思い、先週購入させていただきどうやら第4章にたどりつきました。
とても複雑で難しいですが、わかりやすく説明していただいて、「なるほど」とか 「こんなことも知らなかった」とつぶやきながら楽しんでいます。 ぜひ実際の業務に生かしたいと思っています。

自動運転のマクロについて
自動運転はきちんと働くのですが、なぜか請求書の締め日が反映されません。
オートオープンがうまく働いていないのかと思うのですが、他のデータはきちんと反映されているし、デバックもでません。
試しに、請求書作成のマクロボタンを使わずにMENU、売上DB、請求書作成の順に開くと締め日はきちんと反映されます。 CD-ROMのマクロ組み方講座MENUの完成版でも確認してみたのですが、やはりうまくいきませんでした。

もうひとつ第2章のカレンダーコントロールですが、ユーザーフォームのプロパティウィンドウは働くのですが、ワークシートのプロパティは働かないのですが? わからないまま先に進んでしまいました。
Answer   Copyright (C) 2003.10.28 永井善王
早いですね。
先週に本をご購入いただき、わずか10日間ほどで 312ページまで進まれるとは。 あなたの必死さが伝わってきます。
超特急でご回答しなければと早速調査しましたところ、あなたの仰るとおり、オートオープンが機能していませんでした。すみません。

実践編第4章1では、「マクロの自動運転 (1) リレーでマクロをシステム化しよう」 というタイトルのとおり、
前章で 3段階にわたって作成した小さい機能のマクロを、1つのシステムとして組み上げます。
そして、指定した顧客の請求書が、簡単な操作で作成できることを体験(312ページ)し、自動運転の醍醐味を味わいます。 システムの全体像は 300~301ページの [4-1-1図]で、わかりやすく見ることができます。

請求書に表示する締め日は、本文 256ページにあるとおり、

左図 「年月日入力」シートの D5セルをコピーして、
下図 「請求書」シートの G6セルへ形式を選択して貼り付けています。

そのためのマクロは 280ページ [3-5-13図]の
Sub 閉め日をコピーし当月分売上データを並べ替える( ) で、それには間違いがありません。 しかし、そのマクロは同図にある Sub Auto_Open( ) で実行するようになっています。

この
Auto_Openプロシージャは、そのブックを開くと自動的に実行されますが、マクロによって開いた場合、通常は実行されません。 そのため、マクロから実行するコードつまり Application.Run "請求書作成.xls!Auto_Open" を追加する必要があります。
305ページ[4-1-5図]で、MENU.xls の Module3 に 21~26行目を追加入力していただきました。そこへ、もう1行、上記のコードを追加入力し、下図のとおりにしてください。
Sub DBから指定期間分を抽出する()
    開始年月日 = ">=" & Worksheets("年月日入力").Range("D4")
    終了年月日 = "<=" & Worksheets("年月日入力").Range("D5")
    売上DBを開く
    Sheets("当月分").Select
        Cells.Select
        Selection.Clear
    Sheets("DB").Select
        Range("A1").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=1, Criteria1:=開始年月日, Operator:=xlAnd, _
            Criteria2:=終了年月日
        Selection.CurrentRegion.Select
        Selection.Copy
    Sheets("当月分").Select
        Range("A1").Select
        ActiveSheet.Paste
    Sheets("DB").Select
        Application.CutCopyMode = False
        Selection.AutoFilter

    If Workbooks("MENU.xls").Worksheets("年月日入力").Range("F6") = "請求書" Then
        Workbooks.Open Filename:="請求書作成.xls"
        Worksheets("選択").Activate
        Application.Run "請求書作成.xls!Auto_Open"  '←←← ●この行を追加●
    End If
End Sub
お手数をお掛けしますが、よろしくお願いします。

カレンダーコントロールの件は、引き続き調査してご回答する予定です。

Excel VBA Macro