VB6 E EXCEL ERRO 1004

FILMAN 04/07/2012 19:26:45
#405540
Pessoal estou com um problema que é o seguinte

Tenho algumas planilhas em Excel que ao abrir via VB6 é retornado o erro runtime 1004
só que ao abrir a planilha diretamente pelo excel é possivel recuperar a mesma e salvar novamente que fica tudo certo!

Só que gostaria de saber como posso fazer isso via vb6 será que tem essa possibilidade?
ou até mesmo forçar a leitura mesmo com esse erro

Aguardo a ajuda de vcs obrigado
KERPLUNK 04/07/2012 19:32:02
#405541
Acostume-se a ver os [Ô]erros[Ô] pela sua mensagem e não pelo código. Código é para a máquina, para nós, seres humanos, existem as mensagens de erro. Nesse caso, a mensagem é:
[Ô]Unabled to set the visible property of the worksheet class[Ô] e uma possível solução você encontra aqui
FILMAN 04/07/2012 20:11:36
#405548
Obrigado pelo resposta

O meu problema é que esses arquivos é um sistema de terceiro que cria o mesmo!
Ja o sistema que eu criei foi feito em cima das informações contidas nesse arquivo


sera que tem como forçar a leitura desse arquivo mesmo com esse erro? ou ate mesmo atribuir uma outra forma de leitura do arquivo para que o erro
não aconteca


Obrigado
KERPLUNK 05/07/2012 08:42:49
#405563
Você chegou a ver o link que passei?
FILMAN 05/07/2012 10:00:59
#405566
Sim verifiquei o link que me passou! o problema é que não consigo abrir o arquivo via programação

KERPLUNK 05/07/2012 11:18:12
#405573
Mostre o código que você está usando para abrir o arquivo...
FILMAN 05/07/2012 12:13:07
#405583
Private Sub LerExcel_SOFTMAIS(ByVal Caminho As String, ByRef Lista)
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
Dim L, C, auxL, LL, auxC, ECF, i, W, x As Integer
Dim Data, auxData, SQL As String

auxL = 0
auxC = 0
LL = 0
contadorINI = 0


For W = 0 To UBound(Lista)
L = 1
Set xlw = xl.Workbooks.Open(Caminho & [Ô]\[Ô] & Lista(W))
xlw.Sheets(1).Select
For C = 35 To 20 Step -1
If Mid(UCase(xlw.Application.Cells(1, C)), 1, 4) = [Ô]DATA[Ô] Then
Data = Mid(UCase(xlw.Application.Cells(1, C)), 7, Len(UCase(xlw.Application.Cells(1, C))) - 6)
If IsDate(Data) Then
Data = Format(Day(CDate(Data)), [Ô]00[Ô]) & Format(Month(CDate(Data)), [Ô]00[Ô])
End If
ElseIf Mid(UCase(xlw.Application.Cells(3, C)), 1, 2) = [Ô]UF[Ô] Then
UF = Trim(Mid(xlw.Application.Cells(3, C), 4, Len(xlw.Application.Cells(3, C)) - 3))
End If
Next C

While Not UCase(Mid(xlw.Application.Cells(L, 1).Value, 1, 3)) = [Ô]OBS[Ô]
L = L + 1
If UCase(xlw.Application.Cells(L, 1)) = [Ô]ECF[Ô] Or UCase(xlw.Application.Cells(L, 2)) = [Ô]ECF[Ô] Then
ECF = L
L = L + 1
While Not UCase(Mid(xlw.Application.Cells(L, 1).Value, 1, 3)) = [Ô]OBS[Ô]
If UCase(Mid(xlw.Application.Cells(L, 1).Value, 1, 3)) <> [Ô]TOT[Ô] And _
UCase(Mid(xlw.Application.Cells(L, 2).Value, 1, 3)) <> [Ô]TOT[Ô] Then

auxL = auxL + 1
xlDados(auxL, 3) = [Ô][Ô]
xlDados1(auxL, 3) = [Ô][Ô]
auxC = auxC + 1
xlDados(auxL, auxC) = Data
xlDados1(auxL, auxC) = Data
For C = 1 To 26
If xlw.Application.Cells(ECF, C).Value <> [Ô][Ô] Then
If xlDados(auxL, 2) <> [Ô][Ô] And xlDados(auxL, 4) <> [Ô][Ô] And UCase(xlw.Application.Cells(ECF, C - 1).Value) = [Ô]FINAL[Ô] Then
UR = UltimaReducao(xlDados(auxL, 1), xlDados(auxL, 2), 0, auxL)
If UR <> [Ô]0[Ô] Then
xlDados(auxL, 3) = CLng(UR) + 1
xlDados1(auxL, 3) = CLng(UR) + 1
End If
ElseIf UCase$(xlw.Application.Cells(ECF, C).Value) = [Ô]ECF[Ô] Then
auxC = auxC + 1
xlDados(auxL, auxC) = IIf(IsEmpty(xlw.Application.Cells(L, C).Value) Or xlw.Application.Cells(L, C).Value = [Ô][Ô], [Ô]0,00[Ô], xlw.Application.Cells(L, C).Value)
xlDados1(auxL, auxC) = xlDados(auxL, auxC)
auxC = auxC + 1
Else
auxC = auxC + 1
If auxC = 4 Then
xlDados(auxL, auxC) = IIf(IsEmpty(xlw.Application.Cells(L, C).Value) Or xlw.Application.Cells(L, C).Value = [Ô][Ô], [Ô]0[Ô], xlw.Application.Cells(L, C).Value)
Else
xlDados(auxL, auxC) = IIf(IsEmpty(xlw.Application.Cells(L, C).Value) Or xlw.Application.Cells(L, C).Value = [Ô][Ô], [Ô]0[Ô], xlw.Application.Cells(L, C).Value)
End If
xlDados1(auxL, auxC) = xlDados(auxL, auxC)
End If
End If
Next
auxC = 0
If W = 0 Then contadorINI = contadorINI + 1
End If
L = L + 1
DoEvents
Wend
End If
DoEvents
Wend
xlw.Close
Set xlw = Nothing
Next
IndiceMax = auxL
For W = 1 To contadorINI
UR = UltimaReducao(xlDados(W, 1), xlDados(W, 2), 1)
If UR <> [Ô]0[Ô] Then
xlDados(W, 3) = CLng(UR) + 1
xlDados1(W, 3) = CLng(UR) + 1
End If
Next
Call Verifica_Lanca(Vetor(4))
End Sub


KERPLUNK 05/07/2012 13:28:30
#405591
E em qual linha acontece o erro?
FILMAN 05/07/2012 13:43:38
#405593
Nesta linha

Set xlw = xl.Workbooks.Open(Caminho & [Ô]\[Ô] & Lista(W))

Tópico encerrado , respostas não são mais permitidas