Ошибка при отмене сохранения файла через SaveFileDialog - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Создаю файл Word и сохраняю его при помощи SaveFileDialog
Если файл сохраняю то приложение работает нормально,

но если нажимаю "отменить"

в SaveFileDialog, тогда приложение вылетает и выдаёт ошибку, или напрочь зависает если ставлю обработчик ошибок Try Catch.

Решение задачи: «Ошибка при отмене сохранения файла через SaveFileDialog»

textual
Листинг программы
Dim sd As New SaveFileDialog
sd.Filter = "Документ Word(*.docx)|*.docx"
sd.FileName = Label1.Text
If sd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
    ' Create Word Application
    Dim oWord As Word.Application = DirectCast(CreateObject("Word.Application"), Word.Application)
 
    ' Create new word document
    Dim oDoc As Word.Document = oWord.Documents.Add()
    oWord.Visible = False
 
    oDoc.Range.InsertAfter(Label1.Text)
    oDoc.Range.InsertParagraphAfter()
 
    Dim headers = (From ch In Grid1.Columns _
        Let header = DirectCast(DirectCast(ch, DataGridViewColumn).HeaderCell, DataGridViewColumnHeaderCell) _
        Select header.Value).ToArray()
    Dim headerText() As String = Array.ConvertAll(headers, Function(v) v.ToString)
 
    Dim items() = (From r In Grid1.Rows _
        Let row = DirectCast(r, DataGridViewRow) _
        Where Not row.IsNewRow _
        Select (From cell In row.Cells _
            Let c = DirectCast(cell, DataGridViewCell) _
            Select c.Value).ToArray()).ToArray()
 
    Dim table As String = String.Join(vbTab, headerText) & Environment.NewLine
    For Each a In items
        Dim t() As String = Array.ConvertAll(a, Function(v) v.ToString)
        table &= String.Join(vbTab, t) & Environment.NewLine
    Next
    table = table.TrimEnd(CChar(Environment.NewLine))
    Clipboard.SetText(table)
 
    Dim oTable As Word.Table = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, items.Count + 1, headers.Count)
    oTable.Range.Paste()
 
    'сохранение файла
    oDoc.SaveAs(sd.FileName)
 
    oDoc.Close()
    oWord.Quit()
 
    'уничтожаем объект - документ
    oDoc = Nothing
    'уничтожаем объект - Word
    oWord = Nothing    
End If
sd.Dispose

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы