質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

解決済

VBA メールの送り方について

shunsuke_0319
shunsuke_0319

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

4回答

0評価

0クリップ

257閲覧

投稿2021/10/30 23:56

編集2021/10/31 02:51

再度修正しました
VBAで専用かつINSの時にメールをsyunsukeに送りたいのですがこれだとaquarius0319にしか行きません なぜでしょうか?

VBA

Sub 最終sample() Const olMailItem = 0 Dim file As String Dim pr As Presentation Dim sl As Slide Dim sh As Shape Dim tb As Table Dim r As Integer Dim c As Integer Dim s As String Dim t As String Dim f1 As Boolean Dim f2 As Boolean Dim ol As Object Dim mail As Object Dim f As Object Dim dic As Object Dim k As Variant Dim n As Variant Dim mailTo As String With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "ppt", "*.ppt?" .InitialFileName = "C:\" .AllowMultiSelect = False If Not .Show Then Exit Sub file = .SelectedItems(1) End With Do Set pr = Presentations.Open(file) For Each sl In pr.Slides f1 = False f2 = False For Each sh In sl.Shapes If sh.HasTable Then Set tb = sh.Table For r = 1 To tb.Rows.Count For c = 1 To tb.Rows(r).Cells.Count s = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text t = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text '宛先 If InStr(s, "専用") > 0 And InStr(t, "INS") > 0 Then f1 = True mailTo = "syunsuke" End If If InStr(s, "フレッツ") Then f1 = True mailTo = "b230420" End If If InStr(s, "INS") Then f1 = True mailTo = "b230420" End If If InStr(s, "専用") Then f1 = True mailTo = "aquarius0319" End If If InStr(s, "秋田") And r < tb.Rows.Count Then If IsNumeric(tb.Rows(r + 1).Cells(c).Shape.TextFrame2.TextRange.Text) Then f2 = True End If If f1 And f2 Then Exit Do Next Next End If Next Next MsgBox "無かった" Loop Until True pr.Close If Not (f1 And f2) Then Exit Sub ' MsgBox "見つけた" Set ol = CreateObject("Outlook.Application") Set mail = ol.CreateItem(olMailItem) mail.Display mail.To = mailTo '宛先 mail.Subject = "件名" mail.Body = "本文" '添付ファイル mail.Attachments.Add file '添付ファイル With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "添付ファイル", "*.*" .InitialFileName = "C:\" .AllowMultiSelect = True If .Show Then Dim o As Integer For o = 1 To .SelectedItems.Count mail.Attachments.Add .SelectedItems(o) Next End If End With 'メール送信 mail.Send '送信 ol.Quit End Sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai

2021/10/31 00:56

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
cx20

2021/10/31 01:35

(主に回答者向けの情報です) VBA のコードを見やすく整形してくれるサイトがあるようです。構文の色付けもされるので多少読みやすくなります。 https://www.automateexcel.com/vba-code-indenter/
shunsuke_0319

2021/10/31 02:19

ありがとうございます 修正させていただきました
cx20

2021/10/31 02:28 編集

残念ながら質問文のコード整形が解消していないようです。ソースコードの前後を「```」で囲む必要があります。 <コードブロックの記入例> ```VBA ソースコード ```
shunsuke_0319

2021/10/31 02:40

cx20様 ありがとうございます 修正させていただきました
cx20

2021/10/31 02:41

修正ありがとうございます。インデントが付いていた状態でコード記載して頂けるとより見やすくなるかと思います。
ken3memo

2021/10/31 04:45

素朴な疑問だけど、 ループを作り、パワーポイント内の表・テーブルのtb.Rows(r).Cells(c)でテキストを取り出し VBAで 専用かつINSの時に メールをsyunsukeに送りたい 仕様だと思いますが、 Set tb = sh.Table For r = 1 To tb.Rows.Count For c = 1 To tb.Rows(r).Cells.Count s = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text t = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text '宛先 If InStr(s, "専用") > 0 And InStr(t, "INS") > 0 Then ↑変数sとtが同じ場所を(同じ値なのでは?) s = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text t = tb.Rows(r).Cells(c).Shape.TextFrame2.TextRange.Text で 専用かつINSの時って? あっ、"INSxxxx専用"とか"xx専用xxINS"のデータをチェックしている場合もあるか。 sとtに変数を分けているので、別の場所(隣や下のセルなど)を参照したいのかと、深読みしてみた。 なんて、やりたいこと・仕様を勝手に想像すると、痛い目見るので、 ※実データは無理だとおもいますが、  例題の表があると(テストの表があると)  ズバリの回答が得られやすいかも。。 ※※過去質問に書いてあったらすみません。 長々、コメント書いたけど、 一言、 表の値・条件を書いてください ^^^^^^^^^^^^^^^^^^^^^^^^ と言えばヨカッタかも。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。