戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
最終項目のみワークシートに出力されない。他1点

    [195313] 最終項目のみワークシートに出力されない。他1点-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ はやし -(2022/10/17(01:01))
    □U R L/
      どなた様かお知恵をお貸しください。
      当方VBA初心者です。初めて投稿いたします。
      
      Outlookで受信し、特定のフォルダに格納されているメールを
      項目ごとにワークシートへ転記するコードを作成しています。
      抽出項目は、受信日時、問合番号、電話番号、ドライバーコード
      希望日、時間帯、住所の7項目です。
      
      いくつかのサイトを参考にし下記コードを書いたのですが、
      以下の2点で躓いてしまいました。
      ----------------
      1 7項目目の住所の出力が思うようにできません。実行すると
      「実行エラー5 プロシージャの呼び出し、または引数が不正です。」とダイアログ表示がでます。
      デバッグを選択すると” GetText = Trim(Mid(strBody, ls, le - ls)) '”が蛍光マーカー表示になります。
      
      ”strAdd = GetText("住所      :", oneItem.Body)
        .Cells(i + 1, 8).Value = strAdd”
      を削除すると実行・出力できることから、抽出元メール文の最終行に
      改行がないことが原因なのではないかと考えているのですが、
      どのように書き換えれば良いかわからず途方に暮れております。
      
      2 項目別に抽出する際に項目を並び替えて転記することはできるのでしょうか。
      現在の問合番号、電話番号、ドライバーコード、希望日、時間帯、住所は
      抽出元のメールにある順番と同じです。
      こちらを受信日時、住所、問合番号…と順序を変えることができたら
      その後の作業がより楽になるので…。
      (上から順番に実行されるため難しいですよね?)
      
      最後になりますが、作業環境はWin11 Excel2021になります。
      読みずらいコードで申し訳ありませんがご教示いただけますと幸いです。
      よろしくお願いいたします。
      -----------------------------------------
      Option Explicit
      Sub JOBLIST()
           Dim objOutlook As Outlook.Application
           Dim myInbox As Outlook.Folder
           Dim myNamespace As Outlook.Namespace
           Dim mySubfolder As Outlook.Folder
           Dim i As Long
           Dim oneItem As Outlook.MailItem
           Dim strInquiry As String
           Dim strTel As String
           Dim strDrcode As String
           Dim strDdd As String
           Dim strDtz As String
           Dim strAdd As String
           
           ' Outlook の Application オブジェクトを取得
           Set objOutlook = New Outlook.Application
           Set myNamespace = objOutlook.GetNamespace("MAPI")
           Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
           Set mySubfolder = myInbox.Folders.Item("JOBLIST")
           ' フォルダー内のアイテムをすべて処理
           For i = 1 To mySubfolder.Items.Count
               Set oneItem = mySubfolder.Items(i)
               ' アイテムの情報を Excel のワークシートにコピー
               With ThisWorkbook.Worksheets("Sheet3")
                   .Cells(i + 1, 1).Value = oneItem.SentOn
                   .Cells(i + 1, 2).Value = oneItem.Subject
                   strInquiry = GetText("問い合わせ番号 :", oneItem.Body)
                   .Cells(i + 1, 3).Value = strInquiry
                    strTel = GetText("電話番号    :", oneItem.Body)
                   .Cells(i + 1, 4).Value = strTel
                    strDrcode = GetText("ドライバーコード :", oneItem.Body)
                   .Cells(i + 1, 5).Value = strDrcode
                   strDdd = GetText("希望日     :", oneItem.Body)
                   .Cells(i + 1, 6).Value = strDdd
                    strDtz = GetText("時間帯     :", oneItem.Body)
                   .Cells(i + 1, 7).Value = strDtz
                  strAdd = GetText("住所      :", oneItem.Body)
                   .Cells(i + 1, 8).Value = strAdd
               End With
           Next i
      End Sub
      Private Function GetText(strName As String, strBody As String) As String
          Dim ls As Long
          Dim le As Long
          ls = InStr(strBody, strName) '
          If ls > 0 Then
              ls = ls + Len(strName) '
              le = InStr(ls, strBody, vbCrLf) '
              'case no vbCrLf ( in last row)
              GetText = Trim(Mid(strBody, ls, le - ls)) '
          Else
              GetText = ""
          End If
      End Function


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [195314] Re[1]: 最終項目のみワークシートに出力されない。他1点-

    記事引用/メール受信=OFF■

    □投稿者/ はやし -(2022/10/17(01:06))
    □U R L/

      すみません。
      件名を取得するコードが残ったままで投稿してしまいました。
      実際のコードは.Cells(i + 1, 2).Value = oneItem.Subjectはなく
      数字は繰り上げています。

      こちらに再度書くのも忍びないので、このままお教えいただきたく存じます。
      ご迷惑をお掛けします。


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [195315] Re[2]: 最終項目のみワークシートに出力されない。他1点-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2022/10/18(18:52))
    □U R L/
      こうしては?
      
      Private Function GetText(strName As String, strBody As String) As String
          Dim ss, s
          
          ss = Split(strBody, vbCrLf)
          s = Filter(ss, strName)
          If UBound(s) > -1 Then GetText = s(0)
      
      End Function
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195316] Re[3]: 最終項目のみワークシートに出力されない。他1点-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2022/10/18(18:58))
    □U R L/
      >こちらを受信日時、住所、問合番号…と順序を変えることができたら
      
      .Cells(i + 1, 1).Value 
                   ^^~
                  ここの数字が列番号なのでは?
      
      
      
      




    [195319] Re[4]: 最終項目のみワークシートに出力されない。他1点-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ ばやし -(2022/10/19(19:45))
    □U R L/

      マナ様

      ご返信ありがとうございます。
      早速修正いたしました。
      ご教示いただきありがとうございました!



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G