
Sub IMPORT_SCADENZARI()
'
' IMPORT SCADENZARI Macro
' Creata da Roberto Placanica 15/10/2012
'
'
Dim varFileName
Dim LAST_ROW As Integer
Dim COMP As String
Dim UltimaRigaFiltro As Integer
Dim DATESCAD As Date
With Application
.ScreenUpdating = True
.DisplayAlerts = False
End With
Workbooks.Add
varFileName = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If TypeName(varFileName) = "String" Then
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & varFileName, Destination:=Range("A1"))
.Name = "Import da AS400"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 61
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(11, 11, 7, 7, 7, 7, 16, 15, 17, 2, 4, 11, 17)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Sheets.Add After:=Sheets(Sheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & varFileName, Destination:=Range("A1"))
.Name = "Import da AS400"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 60
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileFixedColumnWidths = Array(132)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
While COMP = ""
COMP = Application.InputBox("Società", "inserire nome società", "miasocietà")
Wend
If COMP = False Then Exit Sub
While DATESCAD = ""
DATESCAD = Application.InputBox("Considero scadute le fatture anteriori al", "Inserire data scadenza")
Wend
If DATESCAD = False Then Exit Sub
'dal foglio2 ricavo i nomi dei clienti, poi elimino il folgio
Sheets("Foglio2").Select
Columns("A:A").Select
Selection.Copy
Sheets("Foglio1").Select
Columns("N:N").Select
ActiveSheet.Paste
Sheets("Foglio2").Select
ActiveWindow.SelectedSheets.Delete
'trovo l 'ultima cella attiva e memorizzo la riga
LAST_ROW = ActiveCell.SpecialCells(xlLastCell).Row
' inserisco la colonna con il mome della società
Columns("A:A").Insert Shift:=xlToRight
Range("A1") = "Società"
Range("a2:A" & LAST_ROW).Value = COMP
'inserisco le intestazioni dei campi
Range("b1") = "Codice Cliente"
Range("c1") = "Partita"
Range("D1") = "Data_doc_txt"
Range("e1") = "Doc"
Range("f1") = "Registr"
Range("g1") = "TP"
Range("h1") = "Contanti"
Range("i1") = "Effetti"
Range("j1") = "Altro"
Range("k1") = "P"
Range("l1") = "Div"
Range("m1") = "Cambio"
Range("n1") = "Importo in Div"
Range("o1") = "Cliente"
Range("p1") = "Scadenza"
Range("Q1") = "Anno"
Range("R1") = "Mese"
Range("S1") = "Data_doc"
Range("T1") = "Estrazione"
Range("U1") = "Settimana"
Range("V1") = "Scaduto"
' inserisco le formule dei campi
Range("P2:P" & LAST_ROW) = "=IF(LEFT(RC[-14],8)=""Scadenza"",RC[-13],R[-1]C[])"
Range("P2:P" & LAST_ROW).NumberFormat = "dd-mm-yy"
Range("Q2:q" & LAST_ROW) = "=IFERROR(YEAR(RC[-1]),"""")"
Range("R2:r" & LAST_ROW) = "=IFERROR(MONTH(RC[-2]),"""")"
Range("S2:s" & LAST_ROW) = "=+IF(RC[-15]<>0,RC[-15],"""")"
Range("s2:s" & LAST_ROW).NumberFormat = "dd-mm-yy"
Range("T2:t" & LAST_ROW) = "=TEXT(IFERROR(AND(VALUE(RC[-14]),VALUE(RC[-18])),""FALSO""),0)"
Range("U2:u" & LAST_ROW) = "=WEEKNUM(RC[-5],1)"
Range("v2:v" & LAST_ROW).FormulaR1C1 = "=+IF(RC[-15]<&DATESCAD ,""scaduto"",""a scadere"")"
End With
'copia e incolla i valori
' se non funziona quello sotto togliere gli apici qui sotto da A a D
Range("P2:v" & LAST_ROW).Select
For Each c In Selection
c.Value = c.Value
Next
'A Selection.Copy
'B Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'C Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'D Application.CutCopyMode = False
' elimino le celle inutili
Cells.Select
Selection.AutoFilter
ActiveSheet.Range("A1:t" & LAST_ROW).AutoFilter Field:=20, Criteria1:="FALSO"
UltimaRigaFiltro = Range("A1").End(xlDown).Row
Rows("2:" & UltimaRigaFiltro).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Set LAST_ROW2 = ActiveCell.SpecialCells(xlLastCell).Row
Range("P2:v" & LAST_ROW2).Replace What:="", Replacement:="EURO"
'Creo Le pivot
PIVOT
Application.ScreenUpdating = True
End Sub
|
Option Explicit
Sub IMPORT_SCADENZARI()
'
' IMPORT SCADENZARI Macro
' Creata da Roberto Placanica 15/10/2012
'
' (some edits by Vecchio Frac)
Dim varFileName
Dim LAST_ROW As Integer
Dim COMP As String
Dim UltimaRigaFiltro As Integer
Dim DATESCAD As Date
Dim i As Integer, c As Variant
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
varFileName = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If varFileName = False Then Exit Sub
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & varFileName, Destination:=Range("A1"))
.Name = "Import da AS400"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 61
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(11, 11, 7, 7, 7, 7, 16, 15, 17, 2, 4, 11, 17)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
While COMP = ""
COMP = InputBox("Società", "inserire nome società", "miasocietà")
Wend
If COMP = False Then Exit Sub
While DATESCAD = ""
DATESCAD = InputBox("Considero scadute le fatture anteriori al", "Inserire data scadenza")
Wend
If DATESCAD = False Then Exit Sub
'dal foglio ricavo i nomi dei clienti, quindi li ricopio in colonna N
[A:A].Copy [N:N]
'trovo l 'ultima cella attiva e memorizzo la riga
LAST_ROW = [COUNTA(A:A)]
' inserisco la colonna con il mome della società
Columns("A:A").Insert Shift:=xlToRight
Range("A1") = "Società"
Range(Cells(2, 1), Cells(LAST_ROW, 1)) = COMP
'inserisco le intestazioni dei campi
For i = 2 To 22
Cells(1, i) = Choose(i, "Codice Cliente", "Partita", "Data_doc_txt", "Doc", "Registr", _
"TP", "Contanti", "Effetti", "Altro", "P", "Div", "Cambio", "Importo in Div", "Cliente", _
"Scadenza", "Anno", "Mese", "Data_doc", "Estrazione", "Settimana", "Scaduto")
Next
'inserisco le formule dei campi
On Error Resume Next
For i = 2 To LAST_ROW
'colonna P
Cells(i, 16) = IIf(Left(Cells(i, 2), 8) = "Scadenza", Cells(i, 3), Cells(i - 1))
Cells(i, 16).NumberFormat = "dd-mm-yy"
'colonna Q
Cells(i, 17) = Year(Cells(i, 16))
'colonna R
Cells(i, 18) = Month(Cells(i, 16))
'colonna S
Cells(i, 19) = IIf(Cells(i, 4) <> 0, Cells(i, 4), "")
Cells(i, 19).NumberFormat = "dd-mm-yy"
'colonna T
Cells(i, 20) = Cells(i, 6) And Cells(i, 2)
'colonna U
Cells(i, 21) = DatePart("ww", Cells(i, 16))
'colonna V
Cells(i, 22) = IIf(Cells(i, 7) < DATESCAD, "scaduto", "a scadere")
Next
On Error GoTo 0
' elimino le celle inutili
Cells.Select
Selection.AutoFilter
ActiveSheet.Range("A1:t" & LAST_ROW).AutoFilter Field:=20, Criteria1:="FALSO"
UltimaRigaFiltro = Range("A1").End(xlDown).Row
Rows("2:" & UltimaRigaFiltro).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Set LAST_ROW2 = ActiveCell.SpecialCells(xlLastCell).Row
Range("P2:v" & LAST_ROW2).Replace What:="", Replacement:="EURO"
'Creo Le pivot
PIVOT
Application.ScreenUpdating = True
End Sub
|
