[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『メールから自動でExcelの該当行に転記したい』(ぱんた)
教えてください。
Outlookの投票機能で回答してもらったメールが受信フォルダの「回答1」に格納されています。(件名による自動仕分けでこのフォルダへ格納している)
一方で、Excel表のA3セル以降の各行にaさん、bさん、cさん、(以下200人続く)と名前が入っており、
B2セルには項目名として「回答1」(←メールのフォルダ名)が書いてある。
B3以降の該当行に回答1フォルダの投票結果を自動転記したい。例えば、Bさんが「はい」と投票したなら、
Excel表のBさんの行のB列に「はい」と書きたい。
C列以降も同じ考えで自動化したい。
人の判別はeメールアドレスでも可。
何か良い方法がありましたら、ぜひ教えてください。
Outlookのポーリング機能ならformsと連携するので自動化しやすいと思ったのですが、
文面の配置が左下に小さく表示され、うまくいかないので、単純な投票機能で集計できないかと考えています
よろしくお願いします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
投票機能 とか
formsと連携。。。使ったこと無いので良くわかっていませんが
↑ で エクセルに回答情報をポチ!で、取り込めるなら。。。大きかろうが小さかろうが
あとは
エクセル、サイドで機能をフル活用すればどうとでも、お好きなように加工できるのではないでせうか
(*^^*)v。。。全自動は洗濯機。。。wもとい。。。VBA〜〜〜
でわ
m(__)m
(隠居Z) 2024/11/04(月) 09:16:06
・各メールの該当項目とユーザーアカウント取得
・Excel表の上記条件に該当する項目(列)とユーザー(行)取得
・投票内容の転記
(ぱんた) 2024/11/04(月) 10:21:06
ありがとうございます。
formsと連携については、文面がうまく配置できないので今回はできれば外したいと思っています(Excelでダウンロードできるので、マクロでは操作し易いのですが…)
投票機能で回答されると、各自からメールがとんできます。
そのメールを使って、判別したいと考えています。
メールを開くと、
i : 実施済が選択されました。と各人からメールが飛んできて、
「i : 実施済が選択されました。」をクリックすると、投票結果の表示で一覧になるようです。メールなのか、その結果表示からなのか、マクロで読み取れるようなら何か手立てはあるのでしょうか。。
Excelのシート名は「集約」、項目名は下記のようなイメージになります。
A列 B C D 1 部署 名前 回答1 回答2 2 A Aさん 実施済 3 A Bさん 実施済 実施済 4 B Cさん 5 C Dさん 実施済 6 B Eさん 実施済
A列、B列は予め入力済の表です。
C列、D列はそれぞれ、投票を実施するテーマになります。1テーマ1列。
投票のメールを送信する ➡ 各自が投票する ➡ メールが届く
理想はメールが届くたびに集約表に入力されると嬉しいですが、マクロでは厳しいと思うので、
まずは、該当のテーマに対し、マクロを稼働すると、回答いただいた方には実施済と入力されるようにしたいです。
さらに、期限になっても空欄の人には、リマインドメールを送りたいですが、
そこは、別マクロで検討が必要になると思うので、まずは、Excelに転記するところを良い方法があればアドバイスいただけると嬉しいです。
(ぱんた) 2024/11/04(月) 13:38:59
(隠居Z) 2024/11/04(月) 14:19:06
Option Explicit Sub OneInstanceMain() Dim i As Long Dim y As Long Dim idx() As Variant Dim Ol As Object Dim Nsp As Outlook.Namespace Dim dFd As Folder Set Ol = New Outlook.Application Set Nsp = Ol.GetNamespace("MAPI") Set dFd = Nsp.GetDefaultFolder(olFolderInbox) With Worksheets("Sheet1") .UsedRange.Clear .Cells(1).Resize(, 6) = Array("送信者名", "送信者メルアド", "受信者名", "受信時間", "送信時間", "件名") For i = 1 To dFd.Items.Count If i Mod 16 = 0 Then DoEvents ReDim Preserve idx(y) On Error Resume Next idx(y) = Array(dFd.Items.Item(i).SenderName, _ dFd.Items.Item(i).SenderEmailAddress, _ dFd.Items.Item(i).ReceivedByName, _ dFd.Items.Item(i).ReceivedTime, _ dFd.Items.Item(i).SentOn, _ dFd.Items.Item(i).Subject) If Err.Number > 0 Then MsgBox Err.Number & " " & Err.Description Else y = y + 1 End If On Error GoTo 0 Next .Cells(2, 1).Resize(UBound(idx) + 1, UBound(idx(0)) + 1) = Application.Index(idx, 0, 0) .UsedRange.Columns.AutoFit End With Set Ol = Nothing Erase idx End Sub (隠居Z) 2024/11/04(月) 16:13:45
↑ マイクロソフト outlook のライブラリを参照設定する必要があります。
複数のアカウントで運用の場合は別途アカウントを指定しなければいけない
場合も有るかもしれません。
でわ
<< _ _ >>
(隠居Z) 2024/11/04(月) 16:18:40
ありがとうございます!
投票の回答結果を書き出すのではなく、メールの受信内容を一行づつ書き出すマクロですね。
たしかに、実施済かどうか判別したいなら、これでいきそうですね。
誰が回答したかを表に埋めるのは、もう1ステップマクロを考えるということですね。
Set dFd = Nsp.GetDefaultFolder(olFolderInbox).Folders("回答1")
のようにして、回答1の部分を可変にしておけば、受信内容のメール書き出し部分はクリアできそうです。
大変参考になります。ありがとうございます。
(ぱんた) 2024/11/04(月) 18:27:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.