• 締切済み

ワードのマクロで「メール送付」を組みたいです

ワード上でコマンドボタンをつくり、そこに 「このファイルを添付してメールを送る」という意味をこめて以下のような記述をしました。 Private Sub CommandButton2_Click() Dim strAddress As String strAddress = "●●@●●●.com" ActiveWorkbook.SendMail Recipients:=strAddress End Sub しかし、「オブジェクトが必要です」というエラーが出てしまいます。 エクセルではこれで問題なかったのですが、どうしたら正しい記述になりますでしょうか。 ご教示よろしくお願いします。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

エラーの克服方法はWORDのVBAヘルプで関連項目を 調べる事です。教えて!Gooより詳細があります。 Private Sub CommandButton2_Click() Dim strAddress As String Options.SendMailAttach = True strAddress = "●●@●●●.com" ActiveDocument.HasRoutingSlip = True With ActiveDocument.RoutingSlip .Subject = "Status Document" .AddRecipient Recipient:=strAddress End With ActiveDocument.SendMail End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>ActiveWorkbook.SendMail Recipients:=strAddress Workbookはエクセルのブックですから、wordなら、 ActiveDocument.SendMail Recipients:=strAddress ではないでしょうか?

yrrpk059
質問者

補足

早速のご回答ありがとうございます。 試してみたところ 「コンパイルエラー:引数の数が一致していません。または不正なプロパティを指定しています」 と出てしまいます。 申し訳ありませんが、このエラーの克服方法を教えてください。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 使用するパソコンの違いでメソッドのエラーが出ます。

    以下のようなVBAで、ボタンを押すと、指定したアドレスにファイルが添付されるようにしました。 大抵のパソコンからは送れるのですが、たまにエラーで 「実行時エラー'1004' 'send Mail メソッドは失敗しました。'_Workbook'オブジェクト」 と言うのがでて送れなかったと報告を受けます。 4行目が黄色くなっているそうなのですが、使用するパソコンの設定か何かで送れないことがあるのでしょうか? それとも、そもそも根本的に違っているのでしょうか? よろしくお願いします。 Sub SendMail() Dim strAddress As String strAddress = "ここは送付先のアドレス" ActiveWorkbook.SendMail Recipients:=strAddress Range("J1:K6,K11:K25").Select Range("K11").Activate Selection.ClearContents End Sub

  • EXCELでの変数によるMacro自動実行について

    すいませんが教えてください・・・・・・ EXCELシートにツールボックスより、コマンドボタンを2つ配置しました。 (AUTOMATICはPublic変数で標準モジュールで定義しています Dim AUTOMATIC As Boolean ) ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() AUTOMATIC = True End Sub CommandButton_2 : Private Sub CommandButton2_Click() AUTOMATIC = False End Sub ------------------------------------------------------------------ あとはEXCELを起動中に、AUTOMATICが Trueでセル(例えばA2のセル)の 値が100のときには Macroを起動したいのですが、どこにどう記述したら いいか教えて欲しいのです。 ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() if Cells(2,1) = 100 then 'A2はCells(2,1) Macro実行 end if End Sub とAUTOMATICを使用せずに記述しても、毎回CommandButton_1をクリックしな ければMacroが起動することができないので煮詰まってしまいました。 (一度CommandButton_1をクリックしておくとあとはA2セルを監視するだけ でMacroを起動させたい) すいませんがわかる方、教えていただけないでしょうか よろしくお願いします。

  • [Excel VBA]コマンドボタンの入力待ち方法

    コマンドボタンの入力を待つ方法についてご教示願います、 以下に詳しい状況と、具体的な質問を記載します。 【構成】 ・ユーザーフォーム上に5つのコマンドボタン(CommandButton1~CommandButton5) 【やりたいこと】 ・CommandButton1を押したらスタート ・1ラウンドにつき1回、CommandButton2~CommandButton5のいずれかのボタンが押せる。  そして、押されたボタンが何かを毎ラウンド判定する。  これを10ラウンドまで繰り返す。 (つまり、どのボタンが押されたかを10回判定する) なお、「ボタンが押されるまでは勝手にループしないこと」。 【コード】(UserFrom1に記載。質問用として、変数名は仮に日本語にしてあります) Public 押された As Long Dim 現在のラウンド As Long Dim 最終ラウンド As Long Private Sub ラウンド処理() 最終ラウンド = 10 For 現在のラウンド = 1 To 最終ラウンド ボタン判定 Next 現在のラウンド End Sub Private Sub ボタン判定() MsgBox 現在のラウンド & ":" & 押された End Sub Private Sub CommandButton1_Click() ラウンド処理 End Sub Private Sub CommandButton2_Click() 押された = 2 End Sub Private Sub CommandButton3_Click() 押された = 3 End Sub Private Sub CommandButton4_Click() 押された = 4 End Sub Private Sub CommandButton5_Click() 押された = 5 End Sub 【詰まっている点】 ボタンの入力待ちになるような文が入っていないため、 「1:0」「2:0」「3:0」…「10:0」とmsgboxが出るだけの状態です。 (当然ですが…) VBAの 【質問】 毎ラウンドごとにボタンの入力待ちのような状態を 「できるだけこの形を崩さずに」組み込むためには、どのような処理を加えればいいでしょうか。

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • このマクロの説明をお願いします

    Dim buf As String Private Sub CommandButton1_Click() End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim tmp As Variant Application.EnableEvents = False tmp = InStr(2, buf, "$", vbTextCompare) tmp = Right(buf, Len(buf) - tmp) If buf = "$B$" & tmp Then Range("C" & tmp).Value = Range("C" & tmp).Value + Range("B" & tmp).Value Range(buf).Select End If Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) buf = ActiveCell.Address End Sub どうやらB列の各セルに入力がされた場合、隣接するC列のセルに加算していくマクロのようです。 なんですが、 InStr関数、Right関数、Len関数あたりでやっていることがよくわかりません。 Private Sub CommandButton1_Click()は必要なのでしょうか? あと、 もっとシンプルなマクロができるようでしたらご教授ねがいます。

  • 実行中のマクロを中断したい

    過日、「マクロの中断」について質問し適切な回答をいただき無事解決したものです。 ところが、初心者の悲しさ、少し変わると全く応用がききません。 Range("A1:B10")を読み上げている途中で中断したいのです。前回ご教示いただいたところにより 「DoEvents」や「Me.Repaint」「Sleep」などをあちこち挿入してみましたがうまくいきません。理屈、理論を理解できていないので仕方ないのでしょうがよろしかったら又ご指導のほどお願いします。Excel2003です。 Dim c As Range Dim CancelFlg As Integer Private Sub CommandButton1_Click() Range("A1:B10").Select CancelFlg = 0 For Each c In Selection   ’ DoEvents Application.Speech.Speak c.Value  ’ DoEvents If CancelFlg = 1 Then Exit For  ’ DoEvents Next c Range("A1").Select End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub 前回のご教示いただいたもの Private Sub CommandButton1_Click() Dim i As Integer CancelFlg = 0 For i = 1 To 100 DoEvents ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Activate Application.Wait (Now + TimeValue("0:0:01")) If CancelFlg = 1 Then Exit For Next i End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub

  • マクロがうまくいきません!

    office2000を使用してます。 Excelでボタンをクリックするのみであらかじめ作られたメッセージがメールで送信されるマクロを作成中です。 Private Sub CommandButton2_Click() Dim OLApp As Outlook.Application Dim mItem As Outlook.MailItem Set OLApp = CreateObject("Outlook.Application.9") Set mItem = OLApp.CreateItem(olMailItem) With mItem .Recipients.Add("abcd@abcd.co.jp").Type = olTo .Subject = "明日の件" .BodyFormat = olFormatPlain .Body = "明日、久しぶりに会えるのを" & _ "楽しみにしています。" & vbCr & _ "それじゃ。" .Send End With Set mItem = Nothing Set OLApp = Nothing End Sub このように作成したのですがうまくいきません。 エラーで「オブジェクトは、このプロパティまたはメソッドをサポートしていません」と出ます。参照設定も行ったのですが、どうしてでしょうか?どなたかお願いします。

  • VBAでのフォルダ指定方法について

    EXCELファイルが保存されているディレクトリ配下のフォルダーを指定できるようにしたくていろいろ試してみたのですが、うまくいきません。 どなたか、お知恵をお貸しください。 以下ソースです。 Private Sub CommandButton1_Click() Dim ShellApp As Object Dim oFolder As Object Dim MyPath As String MyPath = ActiveWorkbook.Path Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "処理ファイルの格納フォルダ選択", 1, MyPath) If Not oFolder Is Nothing Then TextBox1.Value = oFolder.Items.Item.Path End If Set ShellApp = Nothing Set oFolder = Nothing End Sub

  • 値渡しについて

    UserForm1で以下のように求めた値「R」を UserForm2に渡すにはどのようにすればよいのでしょうか。 **************************************** <UserForm1(コード)> Public R As Integer ----------------------------------- Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub **************************************** <UserForm2(コード)> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub **************************************** どなたか教えて下さい。

  • マクロのことで再度質問です。

    すいません、先ほど質問した者です。 http://okwave.jp/qa/q7357905.html 以下のマクロを試すと・・ Aのセルに「ファイル名.txt」 Bのセルに「C:\Users\~¥フォルダ名」 となります。 この「.txt」と「C:\Users\~¥」は表示させたくありません。 自分でもいじってみたのですが、できませんでした。 表示させないようにするにはどうすればいいでしょうか? 度々の質問で恐縮ですが、よろしくお願いします。 Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String FolderPath = ThisWorkbook.Path Dim myFile As Object Dim i As Long i = 2 Dim myFolder As Object For Each myFolder In fso.GetFolder(FolderPath).SubFolders For Each myFile In fso.GetFolder(myFolder).Files Cells(i, 4).Value = myFolder Cells(i, 1).Value = myFile.Name Cells(i, 7).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next Next End Sub Private Sub CommandButton1_Click() End Sub