[[20241103205042]] 『メールから自動でExcelの該当行に転記したい』(ぱんた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『メールから自動で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


隠居Z様
ありがとうございます!
イメージは、マクロで下記を行う感じでしょうか?
(よく理解できていませんが、マクロでも検討可能な範囲でしょうか?)

・各メールの該当項目とユーザーアカウント取得
・Excel表の上記条件に該当する項目(列)とユーザー(行)取得
・投票内容の転記

(ぱんた) 2024/11/04(月) 10:21:06


こんにちは。。。^^
私の提案は
1.formsと連携。。。簡単にアンケートのご回答内容をエクセルファイルで
  結果を返してくれるようでしたので、もしそれが出来たらのお話です。
2.直接アウトルックフォルダにアクセスの場合は、メールでしたら扱ったことは
  有るのですが、投票機能については、わたしは、全く無知なので
  たの、回答者様のお出ましをお待ちくださいませ。
3.単にエクセルの加工だけでしたら詳細を、シート名、項目名、セル番地
  等々が解るように加工前、加工後に分けてご説明賜れば、何かお手伝い
  くらいは、出来るかもしれません。。。←多分ですが。。。A^^;
でわ
m(__)m
(隠居Z) 2024/11/04(月) 11:13:54

隠居Z様

ありがとうございます。
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


とりあえずこんな感じでしょうか。。。ご提示の様に記録は取れませんが
重複の削除等をすれば。。。最新情報にA^^;
( ̄▽ ̄;)
お試の際は新規ブックにて。。。←重要(*^^*)

 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


隠居Zさま

ありがとうございます!
投票の回答結果を書き出すのではなく、メールの受信内容を一行づつ書き出すマクロですね。
たしかに、実施済かどうか判別したいなら、これでいきそうですね。
誰が回答したかを表に埋めるのは、もう1ステップマクロを考えるということですね。

Set dFd = Nsp.GetDefaultFolder(olFolderInbox).Folders("回答1")
のようにして、回答1の部分を可変にしておけば、受信内容のメール書き出し部分はクリアできそうです。
大変参考になります。ありがとうございます。

(ぱんた) 2024/11/04(月) 18:27:38


恐縮で御座います。(*^^*)
m(__)m
(隠居Z) 2024/11/04(月) 19:17:49

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.