এক্সেল Outlook VBA একটি নেটওয়ার্ক ফোল্ডারে অপঠিত ইমেল সংরক্ষণ করুন


3

আমি এক্সেলের একটি আউটলুক ভিবিএ স্ক্রিপ্ট তৈরি করতে সক্ষম হয়েছিলাম যা একটি নির্দিষ্ট আউটলুক সাবফোল্ডারের কেবলমাত্র "অপঠিত" বার্তাগুলিকে আমার নেটওয়ার্কের একটি ফোল্ডারে সংরক্ষণ করে এবং তারপর বার্তাটি "পড়ুন" হিসাবে চিহ্নিত করে।

আমি পাশাপাশি ইমেল সংরক্ষণ করার চেষ্টা করছি। আমি আমার নেটওয়ার্কের দৃষ্টিভঙ্গি বার্তা সংরক্ষণ করার চেষ্টা করছেন সমস্যা হয়েছে। আমি নিকটতম হতে এসেছি নীচের সাহসী কোড যোগ করে। যদিও আমি পছন্দসই আউটপুট পাচ্ছি না।

যেমন, সংযুক্তি ফোল্ডারে সংরক্ষণ করা হচ্ছে, H: \ টেস্টিং \ XY \, এবং আমি Outlook এ বার্তাগুলি H: \ টেস্টিং \ XY \ ইমেল "ফোল্ডারে সংরক্ষণ করতে চাই। ইতিমধ্যে, আমি কেবল ইমেলগুলি চাই বিষয় নাম এবং ইমেলটি প্রাপ্তির তারিখের সাথে সংরক্ষণ করা হবে। যদিও আমি ভিবিএ কোডটি চালাতে থাকি তবে ইমেলগুলি ফোল্ডারে সংরক্ষণ করা হচ্ছে, H: \ testing \ XY \, এবং ফাইলের নাম ইমেলs.msg।

আমি তাদের চাই চাই সংযুক্তি সংরক্ষণ করা হয়। এই সম্পূর্ণ কোনো সাহায্য ব্যাপকভাবে প্রশংসা করা হবে।

Sub SaveEmailAndAttach()

Dim myOlapp As Outlook.Application
Dim myNamespace As Outlook.Namespace
Dim myFolder As Outlook.MAPIFolder
Dim myItem As Outlook.MailItem
Dim myAttachment As Outlook.Attachment
Dim myMail As Outlook.MailItem
Dim avDate() As String
Dim vDate As String
Dim i As Long
Dim myEmailPath As String

ReDim Preserve avDate(3)

Set myOlapp = CreateObject("Outlook.Application")
Set myNamespace = myOlapp.GetNamespace("MAPI")

Const myAttachPath As String = "H:\Testing\XY\"
**myEmailPath = enviro & "H:\Testing\XY\Emails"**

Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox).Folders("Auto").Folders("Manual")
For Each myItem In myFolder.Items
    If myItem.UnRead = True Then
        avDate = Split(CStr(myItem.ReceivedTime), "/")
        vDate = avDate(0) & "-" & avDate(1) & "-" & Mid(avDate(2), 1, 4)

        If myItem.Attachments.Count <> 0 Then
            For Each myAttachment In myItem.Attachments

            If UCase(Right(myAttachment.Filename, 4)) = "XLSX" Then
                i = i + 1
                myAttachment.SaveAsFile (myAttachPath & vDate & " " & myAttachment.Filename)

                End If
                Next
                **myItem.SaveAs myEmailPath & " " & vDate & ".msg"**
                myItem.UnRead = False
        End If
    End If
Next
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub

উত্তর:


2

আপনি বন্ধ ছিল (-শ)। প্রধান সমস্যা \থেকে অনুপস্থিত অনুপস্থিত myEmailPath। যে যোগ করা (এবং বহিরাগত অপসারণ enviro &) এই ঘোষণার দিকে পরিচালিত করে:

Const myEmailPath = "H:\Testing\XY\Emails\"


ইমেল সংরক্ষণ করার জন্য আপনার কোড এখন কাজ করা উচিত। যাইহোক, আমি আপনার প্রয়োজন অনুযায়ী বিষয় অন্তর্ভুক্ত করার জন্য এটি প্রসারিত করার স্বাধীনতা নিয়েছি:

myItem.SaveAs myEmailPath & vDate & " " & myItem.Subject & ".msg"

যাইহোক, যেহেতু এই বিষয়টিতে একটি ফাইলনামতে নিষিদ্ধ অক্ষর থাকতে পারে, তাই সেই অক্ষরগুলি বাদ দেওয়ার জন্য এটি আরও ভাল হবে। নিম্নলিখিত কোডটি ঠিক করবে (উইন্ডোজের জন্য):

'v0.1.1
Dim strSubject As String: strSubject = myItem.Subject
Dim varForbiddenChar
For Each varForbiddenChar In Split("\ / : * ? "" < > |")
  strSubject = Replace(strSubject, varForbiddenChar, "-")
Next varForbiddenChar

অবশ্যই, ইমেলটি সংরক্ষণ করার জন্য কোডটি ঠিক করার আগে চরিত্রের বিচ্ছিন্নকরণ কোডটি সন্নিবেশ করা দরকার এবং সেই কোডটি নিম্নরূপ সংশোধন করা দরকার:

myItem.SaveAs myEmailPath & vDate & " " & strSubject & ".msg"

হাই, তথ্যের জন্য ধন্যবাদ! MyEmailPath জন্য সমন্বয় পুরোপুরি কাজ। আমি 'লাইফ টাইম ত্রুটি' -2147287037 (80030003) ': MyImem.SaveAs myEmailPath & vDate & "" & myItem.Subject এবং ".msg" এর অধীনে বিষয় লাইনটি কাজ করতে পারিনি। অপারেশন ব্যর্থ হয়েছে".
ড্রিউডডিও

1
@DrewDaddio এটি এমন হতে পারে কারণ এটি একটি ফাইলের নামের অংশ হিসাবে গ্রহণযোগ্য নয়। Debug.Print myEmailPath & vDate & " " & myItem.Subject & ".msg"যে অংশ কাজ দেখতে চেষ্টা করুন । এছাড়াও মান আউটপুট চেষ্টা করে দেখুন myItem.Subject। আমি কোডটি পরীক্ষা করি নি যেমন আমি Outlook ব্যবহার করি না, কিন্তু এটি কাজ করা উচিত।
রবিনসিটিস

1
@DrewDaddio আমি নিষিদ্ধ অক্ষর ফালা কোড অন্তর্ভুক্ত অন্তর্ভুক্ত আমার উত্তর আপডেট করেছি।
robinCTS

1
অবকাশ ও চলন্ত কারণে এটি আমাকে কিছুটা সময় দিয়েছে, কিন্তু আমি কেবল আপডেট করতে চেয়েছিলাম এবং বলতে চাই যে চরিত্রটি বিচ্ছিন্ন করার কোডটি দুর্দান্ত কাজ করছে! আমার একটি লার্নিং বক্ররেখা ছিল কিন্তু তাড়াতাড়ি আগে 'varForbiddenChar' নির্বাণ করে এটি কাজ করতে সক্ষম হয়েছিল myEmailPath & vDate & " " & myItem.Subject & ".msg"। আবার আপনাকে ধন্যবাদ!
ড্রিউডডিও

1
@DrewDaddio এটা যে আপনি আমার দুটি কোড স্নিপেট একত্রিত পরিচালিত। আরেকটি পাঠক এমন কাজ করতে সমস্যা হলে আমি আমার উত্তর আপডেট করেছি। আমি সামান্য অক্ষর stripping কোড উন্নত করেছি।
রবিনসিটিএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.