0

「送信」を押すと、フォームが表示されます。これは私がOutlook2010で開発しています。

コンボボックスにマクロのリストを入力する方法はありますか?

Public Sub Confidential()
    Application.ActiveInspector.CurrentItem.Sensitivity = olConfidential
    Application.ActiveInspector.CurrentItem.Save
    Set MsgSub = Outlook.Application.ActiveInspector.CurrentItem
    Set objMail = Outlook.Application.ActiveInspector.CurrentItem
    Subject = MsgSub.Subject
    MsgSub.Subject = Subject + " - [CONFIDENTIAL]"
    Email = objMail.HTMLBody
    info = " <html> <body> <FONT color=#666666> <font-size: 11px> <p></p> AUTO TEXT: This message has been marked as 'CONFIDENTIAL' please treat it as such </body> </font> </html>"
    objMail.HTMLBody = Email + info
End Sub

Private Sub Sens_DropButtonClick()
    Sens.AddItem "Confidential()"
    Sens.AddItem "Normal()"
End Sub

Public Sub Send_Click()
    Set objMail = Outlook.Application.ActiveInspector.CurrentItem
    objMail.Send
End Sub

これはパブリックサブだと思うのは正しいでしょうか?

私の目標は、[送信]ボタンを押すと、ドロップダウンボックスが表示されたフォームが表示されることです。これには、マクロとして作成してコードを追加したことを除いて、メールで使用できる感度オプションの4つのオプションがあります。メッセージの件名とフッターに追加します)が、ユーザーが選択を余儀なくされるので、4つのボタンを使用する代わりにこのフォームを作成するのはなぜですか。

4

2 に答える 2

2

私の目標は、[送信]ボタンを押すと、ドロップダウンボックスが表示されたフォームが表示されることです。これには、マクロとして作成してコードを追加したことを除いて、メールで使用できる感度オプションの4つのオプションがあります。メッセージの件名とフッターに追加します)が、ユーザーが選択を余儀なくされるので、4つのボタンを使用する代わりにこのフォームを作成するのはなぜですか。–rsmithy36分前

私があなたを正しく理解していれば、はい、あなたがやりたいことをすることは可能です。この例を参照してください

4つのオプションA、B、C、Dのユーザーフォームがあり、ユーザーフォームコードが

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "A"
    ComboBox1.AddItem "B"
    ComboBox1.AddItem "C"
    ComboBox1.AddItem "D"
End Sub

Private Sub CommandButton1_Click()
    lstNo = ComboBox1.ListIndex
    Unload Me
End Sub

次へこれをモジュールに貼り付けます

Public lstNo As Long

そしてこれはThisOutlookSession

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    UserForm1.Show

    MsgBox "user chose " & lstNo & "from combo"

    Select Case lstNo
    Case -1
        'User didn't select anything in the combo
    Case 0
        'User selected option 1 in the combo
    Case 1
        'User selected option 2 in the combo
    Case 2
        'User selected option 3 in the combo
    Case 3
        'User selected option 4 in the combo
    End Select
End Sub

ステートメント`の上記のコメントをSelect、ユーザーの選択に応じて実行するマクロ名に置き換えます。

動作中のスナップショット

ここに画像の説明を入力してください

そして、これはあなたが選択したときにあなたが得るものですOption D (ListIndex 3)

ここに画像の説明を入力してください

ファローアップ

Dim email As String, info As String

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    UserForm1.Show

    Select Case lstNo
        Case -1
            'User didn't select anything, default will be used
        Case 0
            With Item
                .Sensitivity = olNormal
                .Save
            End With
        Case 1
            With Item
                .Sensitivity = olPersonal
                .Save
            End With
        Case 2
            With Item
                .Sensitivity = olPrivate
                .Save
            End With
        Case 3
            With Item
                .Sensitivity = olConfidential
                .Subject = .Subject & " - [CONFIDENTIAL]"
                Email = .HTMLBody
                info = " <html> <body> <FONT color=#666666> <font-size: 11px> <p></p> AUTO TEXT: " & _
                "This message has been marked as 'CONFIDENTIAL' please treat it as such </body> </font> </html>"
                .HTMLBody = Email & info
                .Save
            End With
    End Select
End Sub
于 2012-07-15T14:30:18.240 に答える
0

コンボボックスにマクロのリストを入力する方法はありますか?

Outlookにはないので、恐れ入ります。VBA IDEへのプログラムによるアクセスは、ウイルスを拡散したり、電子メールを介して悪意のあるアクティビティを実行したりする可能性があるため、Outlookではサポートされていません。

参考のために、OutlookのVBA拡張性を参照してください。

最も近い方法は、次のようにプログラムで[マクロの実行]ダイアログを表示することです。

ActiveExplorer.CommandBars.FindControl(,186).Execute

ただし、これがOutlook2010で使用できるかどうかはわかりません。

しかし、ダイアログボックスを表示することはおそらくあなたの目標ではありません。たぶん、あなたがあなたの目標が何であるかを説明するならば、誰かがそれを達成するためのより良い方法を提案することができます。それはマクロ名のリストをコンボボックスに入れる必要がありません。

于 2012-07-15T13:03:53.760 に答える