|
Postada em 21/11/2008 19:07 hs
Olá, tenho pouca experiência com vba, fiz um código para salvar um banco de dados em determinada região da planilha do excel para um arquivo txt. Fiz isso no excel 97-2003 e funcionou direitinho, mas quando fui usar no excel 2007 não funcionou, deu um "erro de tempo de execução-caminho não encontrado". Abaixo está o programa:
Public Sub SalvaArq(ByVal sArquivo As String) Dim iARQ As Integer, iRet As Integer Dim iCol, iLin As Integer ' Linha que inicial iLin = 5 ' Coluna inicial iCol = 32
iARQ = FreeFile If Dir$(sArquivo) <> "" Then iRet = Yes iRet = MsgBox("O arquivo já existe. Você " & _ "deseja sobrescreve-lo?", vbQuestion + _ vbYesNo, "ATENÇÃO!!!") If iRet = vbNo Then Exit Sub End If End If Open sArquivo For Append As #iARQ While Cells(iLin, iCol).Text <> "" ' Adicione iCol + N para as colunas que deseja gravar Print #iARQ, Cells(iLin, iCol).Text & " " & Cells(iLin, iCol + 1).Text & " " & Cells(iLin, iCol + 2).Text & " " & Cells(iLin, iCol + 3).Text iLin = iLin + 1 Wend Close iARQ End Sub
O erro está acontecendo na parte: Open sArquivo For Append As #iARQ
Alguém pode me ajudar?
Obrigado!
|
|
|
|
|
Postada em 22/11/2008 22:17 hs
Sabe que eu não havia usado ainda esta forma de abrir txt como append. Se não me engano isto não funciona no VB. Alguém me corrija se estiver errado. Talvez isto possa ajudar. Public Sub SalvaArq(ByVal sArquivo As String) Dim iARQ As Integer, iRet As Integer Dim iCol, iLin As Integer ' Linha que inicial iLin = 5 ' Coluna inicial iCol = 32 dim strGuarda as string If Dir$(sArquivo) <> "" Then iRet = Yes iRet = MsgBox("O arquivo já existe. Você " & _ "deseja sobrescreve-lo?", vbQuestion + _ vbYesNo, "ATENÇÃO!!!") If iRet = vbNo Then Exit Sub end if Open sArquivo for Input As #1 Open "NovoArq.txt" For Output As #2
Do While Not EOF(1) Line Input #1, strGuarda Print #2, strGuarda Wend Close #1 else Open "NovoArq.txt" For Output As #2 End If While Cells(iLin, iCol).Text <> "" ' Adicione iCol + N para as colunas que deseja gravar Print #2, Cells(iLin, iCol).Text & " " & Cells(iLin, iCol + 1).Text & " " & Cells(iLin, iCol + 2).Text & " " & Cells(iLin, iCol + 3).Text iLin = iLin + 1 Wend Close #2 End Sub
|
|
|
|
Postada em 22/11/2008 22:56 hs
Continua dando erro, desta vez no "wend" que está antes do "else". Sugiro tentar criar um banco de dados, com qualquer informação, no excel e testar esse código para ver se funciona.
|
|
|
|