2016-12-01 34 views
-3

AccessからCSVファイルにエクスポートする手順があるので、Outlookにインポートできます。エクスポートされたCSVはExcelに再保存されるまでOutlookにインポートされません。

ただし、一度Outlookにインポートしようとすると、MAPIエラー0x80040107が発生しています。

ExcelでCSVファイルを開いた後、「保存」を押して保存しました.CSVを保存するように求められたので、「はい」を押しました。私はそれを閉じたが、閉じる前に、再びCSV形式で保存するように頼んだので、保存したダイアログが表示されたので、同じファイル名と拡張子(Customers AF.csv)を入力した。このファイルは既に存在していたので、それを置き換えるか、取り消すように頼んだ。既存のファイルを置き換えるために「はい」を押すと、Excelファイルが閉じられました。

これで、この新しいバージョンの同じファイルをOutlookにインポートしようとしましたが、今回はうまくいきました。

誰もこの問題を経験したことがありますか?私は本当になぜファイルを開いて、それを同じ名前/タイプとして保存するのが問題を解決するのか理解できません。

助けてください、これは私のコードです。

If MsgBox("Are you sure you wish to output this customer data to Outlook?", MsgBoxStyle.YesNo, "Confirm") = MsgBoxResult.Yes Then 

    Dim sPath As String = "" 

    Using ofd As New SaveFileDialog 
     ofd.Filter = "CSV files (*.csv)|*.csv" 
     ofd.FilterIndex = 1 
     ofd.FileName = "Customers " & range 
     If ofd.ShowDialog = DialogResult.OK Then 
      sPath = ofd.FileName & "" 
     End If 
    End Using 

    ExportToCSV(dgvExport.DataSource, sPath) 

    Me.Cursor = Cursors.Default 
    MsgBox("Export Successful!", MsgBoxStyle.OkOnly, "CSV Exported Successfully") 

End If 

ExportToCSV

Dim result As Boolean = True 

    Try 
     Dim sb As New StringBuilder() 
     Dim separator As String = "," 
     Dim group As String = """" 
     Dim newLine As String = Environment.NewLine 

     For Each column As DataColumn In dtable.Columns 
      sb.Append(wrapValue(column.ColumnName, group, separator) & separator) 
     Next 

     sb.Append(newLine) 

     For Each row As DataRow In dtable.Rows 
      For Each col As DataColumn In dtable.Columns 
       sb.Append(wrapValue(row(col).ToString(), group, separator) & separator) 
      Next 

      sb.Append(newLine) 
     Next 

     Using fs As New StreamWriter(fileName) 
      fs.Write(sb.ToString()) 
     End Using 


    Catch ex As Exception 
     Console.WriteLine(ex.Message & vbCrLf & ex.StackTrace) 
     result = False 

    End Try 

    Return result 

wrapValue

Function wrapValue(value As String, group As String, separator As String) As String 

    If value.Contains(group) Then 
     value = value.Replace(group, group + group) 
    End If 

    value = group & value & group 

    Return value 

End Function 
+0

申し訳ありませんが、VBAを使用してAccess To Outlookから何かをエクスポートしますか?あなたはそれを行うことができると確信していますが、まさにあなたは輸出入していますか?あなたがOutlookからAccessにアクセスする可能性は非常に高いようです。あなたがしようとしていることを正確に説明するために、もう少し背景を述べてください。ありがとう。 – ryguy7272

答えて

0

は、この質問には答え以来、しかし別の質問でされています。これは誰のために問題がある場合は

が、問題はそれを再保存する必要を行うことはありませんhere

を解決され、それはOPが「」追加されたという事実に関係だとき、本当に、彼らされている必要はありません/してはいけませんでした。

関連する問題