戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
ActiveXコントロールボタンからOutlookを立ち上げる方法

    [195412] ActiveXコントロールボタンからOutlookを立ち上げる方法-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/11/28(01:07))
    □U R L/
      <やりたいこと>
      ・標準モジュールにプロシージャ(macro(1))を記述するWorkbook(1)に、Outlookを立ち上げるボタン(macro(2))を設置したWorksheet(1)を準備。
      ・macro(1)を実行すると、macro(2)のボタン付きでWorksheet(1)をコピーし、別のWorkbook(2)を作成(Worksheet(1')にmacro(2')ボタン付き)
      ・Workbook(2)のmacro(2')ボタンを実行すると、Outlookが立ち上がるようにしたい。
      
      <補足>
      ・macro(2)はWorksheet(1)のコピーWorksheet(1')でmacro(2')として機能するよう、ActiveXコントロールのコマンドボタン内に記述。
      
      <問題点>
      ・Workbook(2)のmacro(2')ボタンを実行すると、「非表示モジュール内でコンパイルエラーが発生しました。」とのエラーが表示される。
      ・なお、コピー元のWorkbook(1)のmacro(2)は正常に機能します。また、コピーするマクロをexcel上の操作のみに限定(macro(3))すれば、コピー先のWorkbook(2)のmacro(3')も正常に機能します。他アプリ(Outlook)に跨がる場合に影響があるのかと推察。
      
      <Code>
      Private Sub CommandButton1_Click()
      
      CreateObject("Outlook.Application").CreateItem(olMailItem).Display
      
      End Sub
      
      <環境>
      Windows11
      Office365
      
      素人ゆえ、うまく説明ができず、申し訳ございません。
      お助け頂けますと大変助かります。
      
      何卒よろしくお願いいたします。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [195417] Re[1]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ 記事 -(2022/11/30(00:32))
    □U R L/
      質問の意味が解りませんが。
      こんな風にすれば良いのでは?
      
      Private Sub CommandButton1_Click()
       マクロ1
      end sub
      
      標準モジュール
      
      sub マクロ1()
        実行したいマクロ
      end sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195418] Re[2]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/11/30(10:01))
    □U R L/

      アドバイス有難うございます。
      当方説明が分かり難くすみません。

      Workbook(1).Worksheets(1)のCommandButtonを、
      Worksheets(1)ごとコピー&切り離して新しいworkbookを作成
      (Workbook(2).Worksheets(1’))しています。

      Workbook(1)には標準モジュールにマクロは記載できますが、
      それをWorkbook(2)にコピーする方法、
      若しくは、Workbook(2j.Worksheets(1’)のCommandButtonから、
      Workbook(1)の標準モジュールを参照させる方法がわからないのですが、
      追加でアドバイス頂けないでしょうか。

      宜しくお願い致します。




    [195419] Re[3]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/11/30(11:45))
    □U R L/
      Workbook(1)をコピーしてWorkbook(2)とし、
      そこから、Sheet1以外を削除したらどうですか?




    [195420] Re[4]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/11/30(13:16))
    □U R L/

      半平太さま

      有難うございます。なるほど、そういう手もありますね。試してみます。

      ちなみに、Workbook(1)の標準モジュールには、コピー先では全く関係しないコードも
      相応に記載しており、可能であればWorkbook(2)の標準モジュールはシンプルにしたい希望はあります。

      Workbook(1)上のマクロで、特定のコードを、Workbook(2)の標準モジュールに直接書き込むことは
      出来ないものでしょうか。




    [195421] Re[5]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/11/30(13:27))
    □U R L/

      >Workbook(1)上のマクロで、特定のコードを、Workbook(2)の標準モジュールに直接書き込むことは
      >出来ないものでしょうか。

      出来ないことはないです。・・が私は気が進みません。
        ↓
      【VBAでVBEを操作する】
      h ttp://officetanaka.net/excel/vba/vbe/

      あと、必要なコードだけ、Sheet1に移してしまう、と言うのも選択肢になるのでは?




    [195422] Re[6]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/11/30(13:36))
    □U R L/

      半平太さま

      有難うございます。理解しました。(空気も読めました)
      Sheet1に必要なコードを移す方法で、今晩やってみようと思います。
      結果は改めて共有させて頂きます。

      まずは、一旦御礼まで。




    [195423] Re[7]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/12/01(00:00))
    □U R L/
      半平太さま
      
      やってみましたが、上手くいかないです。
      理解したつもりでしたが、私が間違っているのだと思います。
      
      試してみたのは、Workbook(1).Worksheet(1)のシートモジュールに、
      最終的にやりたいマクロ(含むOutlook立ち上げ)を記載。
      Workbook(1)の標準モジュールのマクロで、Worksheet(1)をコピーして
      Workbook(2).Worksheet(1')を作成。
      Workbook(2).Worksheet(1')のマクロを走らせようとしましたが、
      エラーになります。
      
      抜粋ですが、codeは以下の通りです。
      
      ■ Workbook(1) 標準モジュール
      
      Sub newWaitList(ByRef waitList As String, wbChild)
      
      wbChild.Worksheets("template").Copy
          With ActiveWorkbook
              Application.DisplayAlerts = False
              .SaveAs fileName:=waitList, _
                          FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
                          AccessMode:=xlShared
              .ProtectSharing
              .ActiveSheet.Name = Format(Now, "yyyymmdd")
              .Close SaveChanges:=True
              Application.DisplayAlerts = True
          End With
      
      End Sub
      
      ■ Workbook(1)Worksheets(template) シートモジュール
      Private Sub CommandButton1_Click()
      
      Dim maxRow As Long
      maxRow = Cells(Rows.Count, 1).End(xlUp).Row
      
      Dim iCounter As Long
      
          For iCounter = 2 To maxRow
              Range(Cells(iCounter, 2), Cells(iCounter, 10)).BorderAround
              If Range("J" & iCounter).Value = "確認済" Then
                  If Range(Cells(iCounter, 2), Cells(iCounter, 10)).Interior.Color <> rgbGray Then
                      
                      Call mailer 'メール立ち上げ
                                     
                  End If
                     Range(Cells(iCounter, 2), Cells(iCounter, 10)).Interior.Color = rgbGray
                              
              ElseIf iCounter Mod 2 = 0 Then
                  Range(Cells(iCounter, 2), Cells(iCounter, 10)).Interior.Color = rgbLightSteelBlue
              Else
                  Range(Cells(iCounter, 2), Cells(iCounter, 10)).Interior.Color = vbWhite
              End If
          
          Next iCounter
      
      ThisWorkbook.Save
      
      End Sub
      
      
      
      Sub mailer()
      
       CreateObject("Outlook.Application").CreateItem(olMailItem).Display
      
      End Sub
      
      
      ちなみに、コピーして作成したWorkbook(2)の標準モジュール、シートモジュールを
      見ようとすると、「プロジェクトがロックされています。」と表示され、
      見ることができません。
      
      あと、シートモジュールのコードをSub mailer()のみ実行する分には機能します。
      
      また、Private Sub CommandButton1_Click()をイベントプロシージャではなく、
      シートモジュール上の通常のSubプロシージャにすると、
      挙動が、Workbook(1)を参照しに行っているような気がします。
      
      恐らく、基本的なところの理解が足りていないのだと思います。
      改めまして、アドバイス頂けますと、大変助かります。
      何度もすみません。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195424] Re[8]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/12/01(15:53))
    □U R L/
      >CreateObject("Outlook.Application").CreateItem(olMailItem).Display
      
      Workbook(2)の実行は、Outlookを参照設定しない状態下で行うので
      olMailItem → 0(定数) にしないと拙いのでは?
      
        CreateObject("Outlook.Application").CreateItem(0).Display




    [195430] Re[9]: ActiveXコントロールボタンからOutlookを立ち上げる方法-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ FlyingPan -(2022/12/03(12:48))
    □U R L/

      半平太さま

      アドバイス有難うございました。
      ご指摘の通りで、無事解決しました。

      大変助かりました。

      まだまだ理解が足りていないことを実感。
      ますます、勉強意欲が湧きました。

      引き続き宜しくお願い致します。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G