Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cleiton Ribeiro_113969

Não é possível acessar 'documento.xls' Vb.net

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou marcar sua questão como resolvido. Infelizmente, não podemos marcar resolvido para o primeiro post de um tópico, então vou deixar outro post aqui abaixo com a resolução.

 

Resolução:

 

Problema resolvido...

A questao era que o metodo ArquivoAberto, acabava abrindo o arquivo e nao o fechava em seguida.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.