- ベストアンサー
MSワード文書をランダムに抽出して自動メール発信する方法
- MSワードの文章をランダムに抽出して自動でメールを発信する方法について調査しています。
- 常時起動しているパソコンを使用して、スケジュールされたタイミングでワード文書を自動的に抽出し、メールの本文として送信する方法を探しています。
- VBAを使用することで、ワード文書からランダムに3つの文章を選んで、メールの本文にすることが可能なようです。近い動作をするフリーソフトや他の方法も教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エクセルならVBAでなんとかなるかもしれませんね。 ま、ワードでも出来ないことはないですが、 多分、エクセルの方が楽です。 と言いつつ、 > メール発信をスケジュールするのは調べれば出来そうな気が とのことなので、私はワードからメールを送信する部分だけは 出来そうな気がしたので、楽しそうだったので少し考えてみました。 以下、ワードVBAで該当の文書(Project)の 「Microsoft Word Objects」の「ThisDocument」に書きます。 Sub SendRandMail() ' まず、文書を「段落」ごとに分割 Dim myStr As String Dim myArr As Variant ' 文書全文をとりあえず格納 myStr = ActiveDocument.StoryRanges(wdMainTextStory).Text ' 格納した全文を「段落」で分割して配列に格納 myArr = Split(myStr, vbCr) ' 「何番目の段落」を抜くか?のための乱数を発生 Dim myRands As Object ' .NET Framework のクラス System.Random を使用して乱数発生 Set myRands = CreateObject("System.Random") ' 乱数の範囲を「配列の開始位置(多分0)」から ' 「配列の要素の数」に設定しつつ、 ' その範囲の乱数を変数iに格納 i = myRands.Next_2(LBound(myArr), UBound(myArr)) ' メールを作って送信 ' 「Microsoft Outlook **** Object Library」を参照設定しておく Dim myOLApp As Object Dim myData As MailItem ' なんとなく、前回エラー終了していると厄介なので ' オブジェクト変数を解放しておく Set myOLApp = Nothing Set myData = Nothing ' アウトルックアプリケーションをオブジェクト変数に格納 Set myOLApp = CreateObject("Outlook.Application") ' 新規メールを作成してメイルアイテム変数に格納 Set myData = myOLApp.CreateItem(olMailItem) ' 以下、メールのデータ各項目 myData.To = "mail@domain.com" ' 宛先のアドレス ' myData.CC = "mail2.domain.net" ' 必要ならCC myData.Subject = "Title" ' メールの件名 ' 変数からi(乱数)番目の文字列を取り出し、メールの本文に myData.Body = myArr(i) myData.Send ' メール送信 ' オブジェクト変数を解放して終了 Set myData = Nothing Set myOLApp = Nothing End Sub なお、あくまでもEnter単独押下による 「段落」(いわゆるエンターキーのマークのアレ)での分割です。 Shift+Enterによる「段落が変わらない改行」 (下矢印↓が出るソレ)は対象にしていません。 違い?そこはご自身でお試しください。 > ランダムに3つ選んで すいません。見落としていました。 というか、面倒だったので手抜きしました。 でも > プログラムはVBAなら少々、というレベル とのことですし、軽く応用してくだされば出来るはず。 「i,j,k」辺りで変数を3個持たせて、 重複したら再度乱数を発生、程度で充分事足ります。 で、「Microsoft Outlook **** Object Library」を 参照設定しておくのをお忘れなくどうぞ。 ****はお使いのオフィスのバージョンによって変わります。 ちなみに、アウトルックに登録されている 「既定のアカウント」を使ってメール送信しますので、 コレが無いとどれだけ頑張っても送信されません。 こんな感じでどうかなぁ、と思うんですが。 もっと効率が良い方法があるかもしれませんが、 私にはコレが限界です(笑)。 あー、楽しかった。 ありがとうございます。
その他の回答 (1)
- aokii
- ベストアンサー率23% (5210/22062)
お礼
AutoHotKeyと同じような動作をするソフトでしょうか?それだと、ランダムに文章を抽出できませんよね。でもお答えありがとうございました。
お礼
力作青写真をありがとうございます! Outlookを使うのは…業務用パソコンにならインストールしてあります。 段落の終わりにはPの左右反転した文字があります。実際の文章は本の題名や日付の段落(見出し1が本の題名、見出し2が日付)があるので、素材の下準備が必要そうです。 実際のプログラム部分については週末に挑戦してみたいです。ありがとうございました。