Il linguaggio Visual Basic di Microsoft
 

call scrittura su ******* txt da excel

ASD Terme Monticelli Calcio 13 Gen 2015 21:44
Ho una routine all'interno di un programma VBA che trasferisce su un ******* txt
un foglio excel.I foglio è prodotto dallo stesso programma che ha la routine al
suo interno.Ora capita che se lo eseguo la prima volta tutto funziona
regolarmente. Alla seconda non esegue le istruzioni corrette e quindi non
produce nè il foglio excel nè tantomento trasferisce il txt.
Può essere un problema di memoria ? Cosa potrei fare ?
Allego lo script del programma e la routine di trasporto su Txt.
Grazie
Un Saluto
Programma
Public Sub Crea_Fatture()
SwInizioNONpagate = 0
SwInizioPagate = 0
Sheets("FattureNONpagate").Select
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Select
Selection.ClearContents
Range("A1").Select

Sheets("FatturePagate").Select
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Select
Selection.ClearContents
Range("A1").Select

Sheets("Fatture").Select
For NrowFatture = 2 To Range("S" & Rows.Count).End(xlUp).Row
If Range("W" & NrowFatture) = "" Then
GoTo LeggiProx
End If
If Range("B" & NrowFatture + 1) = "l" Then 'Salta fattura se già a
consuntivo
NrowFatture = NrowFatture + 1
GoTo LeggiProx
End If
'Prepara XML per fatture NON Pagate
If Range("W" & NrowFatture) = "Non Pagato" Then
If Range("G" & NrowFatture) <> FornitoreComodoNONpagate And
SwInizioNONpagate = 1 Then
Sheets("FattureNONpagate").Select
NRowNONpagate = NRowNONpagate + 1
Range("FattureNONpagate!A" & NRowNONpagate) = " </Documents>"
NRowNONpagate = NRowNONpagate + 1
Range("FattureNONpagate!A" & NRowNONpagate) = "</EasyfattDocuments>"
SwInizioNONpagate = 0
End If
Call CreaFattureNonPagate 'Mod 10

GoTo LeggiProx
End If

'Prepara XML per fatture Pagate
If Range("W" & NrowFatture) = "Pagato" Then
If Range("G" & NrowFatture) <> FornitoreComodoPagate And SwInizioPagate =
1 Then
Sheets("FatturePagate").Select
NRowPagate = NRowPagate + 1
Range("FatturePagate!A" & NRowPagate) = " </Documents>"
NRowPagate = NRowPagate + 1
Range("FatturePagate!A" & NRowPagate) = "</EasyfattDocuments>"
SwInizioPagate = 0
Fileou1 = ActiveWorkbook.Path
Call ScriveFatturePagateFornitore 'mod 12
End If
Call CreaFatturePagate 'Mod 11
End If


LeggiProx:
Next
If SwInizioPagate = 1 Then
Sheets("FatturePagate").Select
NRowPagate = NRowPagate + 1
Range("FatturePagate!A" & NRowPagate) = " </Documents>"
NRowPagate = NRowPagate + 1
Range("FatturePagate!A" & NRowPagate) = "</EasyfattDocuments>"
Fileou1 = ActiveWorkbook.Path
Call ScriveFatturePagateFornitore 'mod 12
End If
If SwInizioNONpagate = 1 Then
Sheets("FattureNONpagate").Select
NRowNONpagate = NRowNONpagate + 1
Range("FattureNONpagate!A" & NRowNONpagate) = " </Documents>"
NRowNONpagate = NRowNONpagate + 1
Range("FattureNONpagate!A" & NRowNONpagate) = "</EasyfattDocuments>"
End If
End Sub

Routine di stampa
Public Sub ScriveFatturePagateFornitore()


'With print command you can write text files in any format
'Here tab is used as delimited character
'By Christos Samaras

'Declaring variables
Dim sLine As String
Dim sFName As String
Dim intFNumber As Integer
Dim lCounter As Long
Dim lLastRow As Long

'Just showing where the input data are
Sheets("FattureNONpagate").Activate
Range("A1").Select

'Find the last row that contains data
With Sheets("FattureNONpagate")
lLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

'Setting the name and the path of text ******* based on workbook path
sFName = ThisWorkbook.Path & "\Excel Data Print.txt"

'Get an unused ******* number
intFNumber = FreeFile

'Create a new ******* (or overwrite an existing one)
Open sFName For Output As #intFNumber

For lCounter = 2 To lLastRow

'Read specific data from the worksheet
With Sheets("FattureNONpagate")
'Using tab as delimited character
sLine = .Cells(lCounter, 1) & vbTab
'sLine = sLine & .Cells(lCounter, 3) & vbTab
'sLine = sLine & .Cells(lCounter, 4) & vbTab
'sLine = sLine & .Cells(lCounter, 5) & vbTab
'Determine the date format
'sLine = sLine & Format(.Cells(lCounter, 7), "dd-mm-yyyy") & vbTab
'sLine = sLine & .Cells(lCounter, 10)
End With

'Write data to ******* Print #intFNumber, sLine

'Continue looping until the last row
Next lCounter

'Close the ******* Close #intFNumber

'Inform the user about the process
MsgBox "Values from sheet '" & Sheets("FattureNONpagate").Name & "' were
written to '" & sFName & "' ******* ", vbInformation

End Sub

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio Visual Basic di Microsoft | Tutti i gruppi | it.comp.lang.visual-basic | Notizie e discussioni visual basic | Visual basic Mobile | Servizio di consultazione news.