2017-10-12 7 views
0

私は100個以上の電子メールをフォルダに持っており、そのすべてに添付ファイルがあります。私は1つのExcelシート内のすべての電子メール添付ファイルからデータをコピーし、データに対して受信した電子メールの日付を持つ列を追加するパッケージを作成したいと思います。どのようにしても、私はssisの助けを借りてパッケージ。ssisパッケージ電子メールからデータをインポートして添付ファイルをExcelにインポートする

+0

これはpowershellまたはvbaで行う方が簡単です。メールサーバーとは何ですか? –

+0

これらのメールはメールサーバー上のフォルダに置かれません。 – brit

+0

ファイルシステムのフォルダを明確にするだけですか?添付ファイルを含む文書の内線は何ですか? –

答えて

0

しかし、それは望ましい結果をもたらすはずです。最後の行のパスを変更するだけです。

function Get-Attachment 
{ 
    [CmdletBinding()] 

    Param 
    (
     [Parameter(ParameterSetName="Path", Position=0, Mandatory=$True)] 
     [String]$Path, 

     [Parameter(ParameterSetName="LiteralPath", Mandatory=$True)] 
     [String]$LiteralPath, 

     [Parameter(ParameterSetName="FileInfo", Mandatory=$True, ValueFromPipeline=$True)] 
     [System.IO.FileInfo]$Item 
    ) 

    Begin 
    { 
     remove-item $Path\attachments.xlsx 
     $outlook = New-Object -ComObject Outlook.Application 
     $excel = New-Object -ComObject Excel.Application 
     $excel.visible = $true 
     $workbook = $excel.Workbooks.add() 
     $s1 = $workbook.Sheets.add() 
     $s1.name = "Attachments" 
     $cells= $s1.Cells 
     $s1.range("A1:A1").font.bold = "true" 
     $s1.range("A1:A1").cells="RecDate" 
     $s1.range("B1:B1").cells="Data" 
     $s1.range("B1:B1").font.bold = "true" 
    } 
    Process 
    { 
     switch ($PSCmdlet.ParameterSetName) 
     { 
      "Path"  { $files = Get-ChildItem -Path $Path } 
      "LiteralPath" { $files = Get-ChildItem -LiteralPath $LiteralPath } 
      "FileInfo" { $files = $Item } 
     } 
     $row=2 
     $col=2 
     $files | % { 
      $msgFn = $_.FullName 
      if ($msgFn -notlike "*.msg") { 
       return 
      } 
      $msg = $outlook.CreateItemFromTemplate($msgFn) 
      $rdate = $msg.ReceivedTime 
      $msg.Attachments | % { 
      $attFn = $msgFn -replace '\.msg$', " - Attachment - $($_.FileName)" 
      if (Test-Path -literalPath $attFn) { 
        return 
       } 
       $_.SaveAsFile($attFn) 
       Get-ChildItem -LiteralPath $attFn 
       $d = (Get-Content -Path $attFn -Raw) 
       $cells.item($row,$col)=$d.ToString() 
       $cells.item($row,1) = $rdate 
       $row++ 
      } 
      $s1.range("A1:B1").EntireColumn.autofit() | out-Null 
      $s1.range("A1:B1").EntireColumn.WrapText = $false | out-Null 
     } 
    } 

    End 
    { 
     $workbook.SaveAs("$Path\attachments.xlsx") 
    } 
} 

Get-Attachment -Path C:\Users\Administrator\pathtodir\ 
+0

これがあなたのために働くかどうかお知らせください。 –

+0

上記の – brit

+0

を実行するためにスクリプトタスクを使用する必要があります。いいえ、Powershellを使用してください。 –

関連する問題