人に聞けない痔の悩み、これでスッキリ >>

SEIBETSU = 女性
AGE = 30代
AREA = 東京都
EMAIL = ○○○@○○.ne.jp

このように送られてきたアンケートメールを

女性  30代 東京都 ○○○@○○.ne.jp

とEXCELへ格納したいのですが・・・。
マクロで出来るでしょうか?
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは。


このマクロは、クリップボードで取得したものをワークシートに貼り付けるためのマクロです。

SEIBETSU = 女性
AGE = 30代
AREA = 東京都
EMAIL = xxx@xxxx.xx.xx

本来、このフォーマットを使いたいところですが、メールでは、さまざまなケースが考えられます。

例えば、

男性
20 代 (全角スペースが開いている)
大阪府
xxx@xxxx.xx.xx

女 性, 20 歳, 鹿児島県, xxxx@xxxx.xxx
(20歳と入れて、なお、半角スペースが入っている)

相手の方が、フォームに従わない場合でも、ある程度の対応ができるように以下のマクロでは作られています。よほど、いいかげんな書き方をしていなければ、おそらく、以下のマクロで可能かと思います。

メール全体をCtrl + C で取っても、ただし、1つのメールで、一回だけです。
また、「東京」とか、「大阪」と書かれると、現在のマクロでは、地域は取れません。

なお、ショートカットは、Alt + c にしてありますので、ショートカットのみを実行してください。
'----------------------------------------------------------
'<標準モジュール>
Sub ClipBoardPaste()
  '要参照設定-Microsoft Forms 2.0 Object Library
  Dim CB As New DataObject
  '要参照設定 'Microsoft VBScript Regular Expression 5.5
  Dim ObjRE As New RegExp
  Dim buf As String
  Dim buf2(0 To 3) As String
  Dim MyPattern() As Variant
  Dim p As Variant
  Dim i As Integer
 
   MyPattern() = Array("\.*([男女]性)", "\b(\d{1,3}[代年歳])", "\.*(.{2,3}[都道府県])\S*", "\b([\w\-\.]+@[\w\-\.]+)\b")
  CB.GetFromClipboard
  buf = CB.GetText
  With ObjRE
   .Global = True
   .IgnoreCase = True
   If Len(buf) > 0 Then
     For Each p In MyPattern
      .Pattern = CStr(p)
      If .Test(buf) Then
        buf2(i) = VBA.Trim((.Execute(buf)(0).SubMatches(0)))
      End If
      i = i + 1
     Next p
   End If
  End With
  If IsEmpty(ActiveCell.Value) Then
   ActiveCell.Resize(, 4).Value = buf2()
   buf = ""
  Else
   MsgBox "そこは貼り付けられません。", vbCritical
  End If
End Sub
Sub ShortCutEntry()
'ショートカット設定
'Alt + C
 Application.OnKey "%c", "ClipBoardPaste"
End Sub
    • good
    • 0

出来る出来ないで言えば出来ます。


基本的にVBなどの貧弱な言語でもWindows上で可能なことは殆ど可能です。ただどれだけ面倒かとか手間がかかるのかということぐらいで。

でこのケースならメールソフトはOutlookを使うという前提なら割と簡単にできます。まぁマクロというよりはVBAによる開発みたいな勢いで作るだけの意欲があればの話しですが。
他のメールソフトならそのメールソフトの仕様次第ですが、一旦txtに書き出したりする必要があるでしょう。

参考
VBAでOutlookオブジェクトを使用する
http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング