今EXCELに書かれているのが
専用ならaqaurius0319,フレッツならshunsuke,INSならb230420
に送るVBAを書いているのですが専用とだけ書かれていても全員に送られてしまいます
また専用、フレッツ、INSと書かれているなら全員に送れるようにしたいです
どうしたらよろしいでしょうか?
Sub goosample()
Const olMailItem = 0
Dim file As String
Dim Bk As Workbook
Dim SH As Worksheet
Dim i As Long
Dim f1 As Boolean
Dim ol As Object
Dim mail As Object
Dim mailTo As String
Dim k(0 To 2, 0 To 2)
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "xls", "*.xls?"
.InitialFileName = "C:\"
.AllowMultiSelect = False
If Not .Show Then Exit Sub
file = .SelectedItems(1)
End With
k(0, 0) = "専用": k(1, 0) = "フレッツ": k(2, 0) = "INS"
k(0, 1) = "aquarius0319": k(1, 1) = "shusnsuke": k(2, 1) = "b230420"
Set Bk = Workbooks.Open(file)
f1 = False
For Each SH In Bk.Worksheets
For i = 0 To UBound(k, 1)
If mailTo <> "" Then
mailTo = mailTo & " ;" & k(i, 1)
Else
mailTo = k(i, 1)
f1 = True
End If
Next
Next
Bk.Close
If f1 = False Then
MsgBox "無かった"
Exit Sub
Else
MsgBox "見つけた"
End If
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
No.5ベストアンサー
- 回答日時:
失礼しました。
CountIf内のk(i, 0)と、If fi Thenが、間違っていました。
Option Explicit を追加しています。
私のPCに、Outlookのメールはインストールしていないので、その部分は
確認できていませんが、それ以外は正常に動作するのを確認したので、
これでどうでしょうか?
Option Explicit
Sub goosample()
Const olMailItem = 0
Dim file As String, Bk As Workbook, SH As Worksheet, i As Long, f1 As Boolean
Dim ol As Object, mail As Object, mailTo As String, k(0 To 2, 0 To 2), myRng As Range, o As Integer
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "xls", "*.xls?"
.InitialFileName = "C:\"
.AllowMultiSelect = False
If Not .Show Then Exit Sub
file = .SelectedItems(1)
End With
k(0, 0) = "専用": k(1, 0) = "フレッツ": k(2, 0) = "INS"
k(0, 1) = "aquarius0319": k(1, 1) = "shusnsuke": k(2, 1) = "b230420"
Set Bk = Workbooks.Open(file)
f1 = False
mailTo = ""
For Each SH In Bk.Worksheets
SH.Select
For i = 0 To UBound(k, 1)
Set myRng = SH.UsedRange
If Application.WorksheetFunction.CountIf(myRng, "*" & k(i, 0) & "*") > 0 Then
If f1 Then
mailTo = mailTo & " ;" & k(i, 1)
Else
mailTo = k(i, 1)
f1 = True
End If
End If
Next i
Next SH
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
For o = 1 To .SelectedItems.Count
mail.Attachments.Add .SelectedItems(o)
Next
End If
End With
'メール送信
mail.Send '送信
ol.Quit
End Sub
No.4
- 回答日時:
失礼しました。
End Ifが1つ抜けていた様です。 追加しました。下記で、構文エラーはなくなったと思います。 Dimはまとめています。
Sub goosample()
Const olMailItem = 0
Dim file As String, Bk As Workbook, SH As Worksheet, i As Long, f1 As Boolean
Dim ol As Object, mail As Object, mailTo As String, k(0 To 2, 0 To 2), myRng As Range, o As Integer
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "xls", "*.xls?"
.InitialFileName = "C:\"
.AllowMultiSelect = False
If Not .Show Then Exit Sub
file = .SelectedItems(1)
End With
k(0, 0) = "専用": k(1, 0) = "フレッツ": k(2, 0) = "INS"
k(0, 1) = "aquarius0319": k(1, 1) = "shusnsuke": k(2, 1) = "b230420"
Set Bk = Workbooks.Open(file)
f1 = False
mailTo = ""
For Each SH In Bk.Worksheets
SH.Select
For i = 0 To UBound(k, 1)
Set myRng = SH.UsedRange
If Application.WorksheetFunction.CountIf(myRng, "*" & k(i, 1) & "*") > 0 Then
If fi Then
mailTo = mailTo & " ;" & k(i, 1)
Else
mailTo = k(i, 1)
f1 = True
End If
End If
Next i
Next SH
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
For o = 1 To .SelectedItems.Count
mail.Attachments.Add .SelectedItems(o)
Next
End If
End With
'メール送信
mail.Send '送信
ol.Quit
End Sub
No.3
- 回答日時:
了解しました。
例えば、下記はどうでしょうか?
うまく行かない場合は、詳細を教えて下さい。
全シートで、Couuntif関数の、*を付けてあれば、個数を返します。
それが1つ以上なら、Mailアドレスを追加しています。
f1がTrueなら、1つ以上MailToにアドレスが入っているので、それを利用
しています。
Sub goosample()
Const olMailItem = 0
Dim file As String
Dim Bk As Workbook
Dim SH As Worksheet
Dim i As Long
Dim f1 As Boolean
Dim ol As Object
Dim mail As Object
Dim mailTo As String
Dim k(0 To 2, 0 To 2)
Dim myRng as Range
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "xls", "*.xls?"
.InitialFileName = "C:\"
.AllowMultiSelect = False
If Not .Show Then Exit Sub
file = .SelectedItems(1)
End With
k(0, 0) = "専用": k(1, 0) = "フレッツ": k(2, 0) = "INS"
k(0, 1) = "aquarius0319": k(1, 1) = "shusnsuke": k(2, 1) = "b230420"
Set Bk = Workbooks.Open(file)
f1 = False
mailTo = ""
For Each SH In Bk.Worksheets
SH.Select
For i = 0 To UBound(k, 1)
Set myRng = SH.UsedRange
IF Application.WorksheetFunction.CountIf(myRng, "*" & k(i, 1) & "*")>0 Then
IF fi Then
mailTo = mailTo & " ;" & k(i, 1)
Else
mailTo = k(i, 1)
f1 = True
End If
Next
Next
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
No.2
- 回答日時:
詳しい説明をお願いしたいと、以前に書いた様な気がするのですが。
。。書かれたマクロと、質問者さんの質問内容だけですと、推測しながらの
回答になるので、マクロコードを書いても、きっと、思った通りに動かない事になるかと。
こちらは、Excelシートは見れないですし、どの様な構成になっているかも
分らない状態なので、正確に把握しないと、回答ができないです。
下記の質問に
①Excelのブックに、シートが幾つかあるのでしょうか?
②いくつかあるなら、全てのシートの中から、専用、フレッツ、INSを
探すので合っているでしょうか?
③1つのシートだけでしたら、どのシートかの指定が必要です。
④書かれているセルは、特定できないのでしょうか?
⑤セルに書かれているのは、"専用"、"フレッツ"、"INS" の3つだけを
探すで良いのでしょうか? 前後に文字や空白はないと思って良い?
取り合えず、上記の回答をお願いします。
No.1
- 回答日時:
おはようございます。
For Each SH In Bk.Worksheets
For i = 0 To UBound(k, 1)
If mailTo <> "" Then
mailTo = mailTo & " ;" & k(i, 1)
Else
mailTo = k(i, 1)
f1 = True
End If
Next
Next
???
IFで k(i, 1)との判定がないので、全てスルーしているからだと思いますが。
前回のFINDの検索か、以前に提示した内容のCOUNTIF関数などを
組み込んで下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mail の出力をファイル...
-
mb_send_mailを実行するとエラ...
-
PHPプログラムからプロバイダー...
-
PHPのif文でその処理を途中で抜...
-
3つ以上の論理積は利用可能なの...
-
.phpと.incファイルの違いはな...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
値の受け渡しが出来ない。
-
2つの画像ファイルが異なるファ...
-
遷移前のページのクエリを取得...
-
「クラス関数」「メンバ関数」...
-
CFileDialogの最初のディレクト...
-
phpのクラスにて別ファイルの変...
-
C# Excelファイルへの画像挿入。
-
HPを開くとダウンロードページ...
-
VBでメールを送る時のSMT...
-
FTPコマンドでディレクトリごと...
-
PHP8を使うと、大量のWarningが...
-
Androidで画像をサーバーから取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
さくらサーバーにて、phpからメ...
-
PHPからメールを送る@さくらイ...
-
mb_send_mail関数が利用出来ない
-
phpでメール送信できません 原...
-
PHPMailerのコードエラーが解決...
-
【初歩?】変数をセットできな...
-
PHPsendmailにて送信元を変更
-
phpでのメール転送(添付ファイ...
-
if( mb_send_mail( ・・・) ) {...
-
PHPでメールを送信するには
-
メールフォームのタイトルが文...
-
mb_send_mail内でif文を使いた...
-
PHP CRONでメールの自動受信を...
-
ローカル環境でのメール送信
-
mail関数を使った場合のReturn-...
-
指定した時間にPHPプログラムを...
-
PHPからロリポップ!のメールサ...
-
mailやmb_send_mail関数で、本...
-
メール送信プログラム
-
PHPでの仮登録時の会員認証メー...
おすすめ情報
すいません
どこにどう組み込んだらいいか教えて貰ってもいいですか?
素人なので助けてください
①Excelのブックに、シートが幾つかあるのでしょうか?
回答 あります
②いくつかあるなら、全てのシートの中から、専用、フレッツ、INSを
探すので合っているでしょうか?
回答 そうです
④書かれているセルは、特定できないのでしょうか?
回答 毎回変わるので特定できません
⑤セルに書かれているのは、"専用"、"フレッツ"、"INS" の3つだけを
探すで良いのでしょうか? 前後に文字や空白はないと思って良い?
回答 前後に文字があります
Else
mailTo = k(i, 1)
f1 = True
End If
Next
Next
でnextに対応するforがありませんとでます
すいません
エラー無く起動はするのですが
excelに専用とかかれていても宛先が空欄になってしまいます
すいません
空欄の問題は解決したのですが専用とフレッツとINS全てあるときb230420にだけ送られてしまいます