Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Estou enfrentando um problema bem chatinho.
Eu tenho um metodo no meu programa, que é responsável por receber um datagridview e exportar seus dados no formato .XLS(Excel). Entretanto, esta sendo dificil manipular este tipo de arquivo porque mesmo utilizando o SaveFileDialog e para salvar o documento, o programa dispara uma mensagem de erro: " Não é possível acessar 'Documento.xls'."
Este erro ocorre mesmo quando não existe nenhum documento com o mesmo nome, mas quando existem outros documentos com nome semelhante eu nao consigo deleta-los, pois o programa dispara outro erro de acesso negado ou "Não é possivel acessar documento.xls".
Não sei mais o que fazer... o código se encontra abaixo, se puderem me ajudar eu ficaria muito grato.
Public Function ArquivoAberto(ByVal Nome As String) As Boolean
Dim n As Integer = FreeFile()
Try
FileOpen(n, Nome, OpenMode.Random)
Catch ex As Exception
Return True
End Try
Return False
End Function
Public Sub exportarExcel(ByVal Dgv As DataGridView, ByVal Titulo As String)
Dim xlApp As New Excel.Application
Dim fb As New SaveFileDialog
Dim Path As String = "C:\Example.xlsx"
Dim aux As String
Dim Aviso As New frmWarning
With fb
.Filter = "Excel files (.xls)|.xls|All files (.)|."
.FileName = "Planilha.xls"
.Title = "Selecione o local de exportação."
.ShowDialog()
Path = .FileName
End With
If ArquivoAberto(Path) = True Then
MessageBox.Show("O documento se encontra aberto! Feche-o e reinicie a operação.")
Exit Sub
End If
xlApp.SheetsInNewWorkbook = 1
Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Add
Dim xlWorkSheet As Excel.Worksheet = xlWorkBook.Worksheets.Item(1)
xlWorkSheet.Name = Titulo
Aviso.Abrir()
For nRow As Long = 1 To Dgv.Rows.Count
If nRow = 1 Then
For ncol As Integer = 0 To Dgv.Columns.Count - 1
xlWorkSheet.Cells(nRow, ncol + 1) = Dgv.Columns(ncol).Name.ToString
Next ncol
xlWorkSheet.Columns.Font.Bold = True
End If
For nCol As Integer = 0 To Dgv.Columns.Count - 1
aux = Dgv.Rows(nRow - 1).Cells(nCol).Value
If IsDate(aux) Then
aux = aux.Replace("/", "-")
End If
xlWorkSheet.Cells(nRow + 1, nCol + 1) = aux
Next nCol
Next nRow
xlApp.DisplayAlerts = False
xlWorkSheet.Columns.AutoFit()
xlWorkSheet.Rows.AutoFit()
Try
xlWorkBook.SaveAs(Path, Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, Type.Missing, Type.Missing, _
Excel.XlSaveAsAccessMode.xlShared, Excel.XlSaveConflictResolution.xlUserResolution)
Catch ex As Exception
MessageBox.Show(ex.ToString)
xlWorkBook.Close()
xlApp.Quit()
Exit Sub
End Try
xlWorkBook.Close()
xlApp.Quit()
Aviso.Fechar()
MessageBox.Show("Documento gerado com sucesso!")
End Sub
Problema resolvido...
A questao era que o metodo ArquivoAberto, acabava abrindo o arquivo e nao o fechava em seguida.
Carregando comentários...