Attribute VB_Name = "evidenzia_ricerca_valori"
'
Option Explicit
'
' vba - Excel
' Evidenzia Valori Colonna Per Contenuto
' ricerca ed evidenzia cella in base al contenuto utilizzando una espressione regolare
' alternativa leggera alla formattazione condizionale
'
Sub uso_EvidenziaValoriColonnaPerContenuto()
'
Dim nomefoglio, colonnaricerca, datoricercato
Dim campi, ritorno
campi = Array("", "nome foglio", "colonna ricerca", "dato ricercato")
ritorno = creaMaskeraHtml(campi)
'
nomefoglio = ritorno(1)
colonnaricerca = ritorno(2)
datoricercato = ritorno(3)
'
Call EvidenziaValoriColonnaPerContenuto(nomefoglio, colonnaricerca, datoricercato)
'
End Sub
'
Sub EvidenziaValoriColonnaPerContenuto(nomefoglio, colonnaricerca, datoricercato)
Dim procedura, cella As Range, foglio, zonaricerca, quanterighe
Set foglio = Sheets(nomefoglio)
' conteggio righe utilizzate
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).row
'
Set zonaricerca = foglio.Range(Cells(1, colonnaricerca), Cells(quanterighe, colonnaricerca))
Set procedura = CreateObject("VBScript.RegExp")
'
With procedura
.Pattern = datoricercato
.IgnoreCase = True
.Global = True
For Each cella In zonaricerca
If .test(cella.Value) Then
cella.Interior.ColorIndex = 6
End If
Next cella
End With
'
Set procedura = Nothing
'
End Sub
'
Function creaMaskeraHtml(campi)
'
On Error GoTo esci
'
Dim txtHtml, IE, valoriinput, quanticampi, contacampi
quanticampi = UBound(campi)
ReDim ritorno(quanticampi)
ritorno(0) = "errore"
'
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "about:blank"
IE.Top = 150
IE.Visible = True
IE.Height = 300
IE.Width = 550
IE.MenuBar = False
IE.Toolbar = False
IE.StatusBar = False
IE.resizable = True
'
IE.document.Title = " - ricerca - "
' crea codice HTML della pagina per input dei valori.
' utilizzando una form e una tabella
txtHtml = ""
txtHtml = txtHtml + "<html><body><center>"
txtHtml = txtHtml + " inserimento<br>"
txtHtml = txtHtml + "<FORM name=""mask""><table>"
For contacampi = 1 To quanticampi
txtHtml = txtHtml + "<TR>" ' crea nuova riga
txtHtml = txtHtml + "<TD>" ' crea colonna della descrizione
txtHtml = txtHtml + campi(contacampi) ' testo visualizzato
txtHtml = txtHtml + ":</TD><TD>" ' nuova colonna
txtHtml = txtHtml + "<input name=""" & campi(contacampi) & """ type=""text"" value="""">" ' box input
txtHtml = txtHtml + "</TD></TR>"
Next contacampi
txtHtml = txtHtml + "</table></FORM></body></html>"
IE.document.body.innerHTML = txtHtml
'
' Do While IE.readyState = 4: DoEvents: Loop
'
Do While IE.readystate = 4
'
contacampi = 0
For Each valoriinput In IE.document.all.tags("INPUT")
contacampi = contacampi + 1
ritorno(contacampi) = valoriinput.Value
Next
'
DoEvents
Loop
'
ritorno(0) = "risposta"
Set IE = Nothing
'
esci:
'
creaMaskeraHtml = ritorno
'
End Function
'
'
giovedì 14 marzo 2013
importazione listino metel
Attribute VB_Name = "importazione_listino_metel"
'
Option Explicit
'
' vba - procedura completa per importazione listino Metel
' inserisce intestazione campi/colonne
' dividi i prezzi per ottenere i due decimali
' inserisce in un foglio a parte la testata del listino
'
Sub ImportaListinoMetel()
'
' scelta file
Dim archivio
archivio = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If archivio = False Then
Exit Sub
End If
'
Sheets.Add
Dim rigaletta, fso, f, sriga
' assegna il formato celle testo
Columns("A:D").Select
Selection.NumberFormat = "@"
Rows("2:2").Select
ActiveWindow.FreezePanes = True
sriga = 0
' legge il file di testo
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(archivio, 1, False)
Do While f.AtEndOfStream <> True
rigaletta = f.ReadLine
sriga = sriga + 1
ActiveSheet.Cells(sriga, 1) = rigaletta
Loop
f.Close
' analizza testo in colonne
ActiveSheet.Columns("A:A").Select
' tracciato record del listino metel
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), _
Array(3, 2), Array(19, 2), Array(32, 1), Array(75, 1), Array(80, 1), Array(85, 1), Array _
(90, 1), Array(96, 1), Array(97, 1), Array(108, 1), Array(119, 1), Array(125, 1), Array(128 _
, 1), Array(131, 1), Array(132, 1), Array(133, 5), Array(141, 2), Array(159, 2))
' divide i prezzi per inserire i due decimali
Dim quanterighe, contarighe, prezzogg, nprezzogg, prezzorr, nprezzorr, divisore, foglio
Set foglio = Sheets(ActiveSheet.Name)
divisore = 100 ' per i due decimali del prezzo grossista e al pubblico
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).row
'
For contarighe = 1 To quanterighe
prezzogg = ActiveSheet.Cells(contarighe, "J").Value ' prezzo grossista
prezzorr = ActiveSheet.Cells(contarighe, "K").Value ' prezzo al pubblico
If IsNull(prezzogg) = False And IsNumeric(prezzogg) = True Then
nprezzogg = prezzogg / divisore
ActiveSheet.Cells(contarighe, "J").Value = nprezzogg
End If
If IsNull(prezzorr) = False And IsNumeric(prezzorr) = True Then
nprezzorr = prezzorr / divisore
ActiveSheet.Cells(contarighe, "k").Value = nprezzorr
End If
Next
Sheets(ActiveSheet.Name).Name = "listino"
' inserisce i nomi dei campi
Call testatalistinometel("listino")
'
Columns("A:S").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B2").Select
'
End Sub
'
Sub testatalistinometel(nomefoglio)
'
Sheets(nomefoglio).Cells(1, 1) = "Sigla Marchio"
Sheets(nomefoglio).Cells(1, 2) = "Codice Prodotto Produttore"
Sheets(nomefoglio).Cells(1, 3) = "Codice EAN"
Sheets(nomefoglio).Cells(1, 4) = "Descrizione prodotto"
Sheets(nomefoglio).Cells(1, 5) = "Quantità cartone"
Sheets(nomefoglio).Cells(1, 6) = "Quantità multipla ordinazione"
Sheets(nomefoglio).Cells(1, 7) = "Quantità minima ordinazione"
Sheets(nomefoglio).Cells(1, 8) = "Quantità massima ordinazione"
Sheets(nomefoglio).Cells(1, 9) = "Lead Time"
Sheets(nomefoglio).Cells(1, 10) = "Prezzo al grossista"
Sheets(nomefoglio).Cells(1, 11) = "Prezzo al Pubblico"
Sheets(nomefoglio).Cells(1, 12) = "Moltiplicatore prezzo"
Sheets(nomefoglio).Cells(1, 13) = "Codice Valuta"
Sheets(nomefoglio).Cells(1, 14) = "Unità di misura"
Sheets(nomefoglio).Cells(1, 15) = "Prodotto Composto"
Sheets(nomefoglio).Cells(1, 16) = "Stato del prodotto"
Sheets(nomefoglio).Cells(1, 17) = "Data ultima variazione"
Sheets(nomefoglio).Cells(1, 18) = "Famiglia di sconto"
Sheets(nomefoglio).Cells(1, 19) = "Famiglia statistica"
End Sub
'
Sub leggitesta(archivio)
Sheets.Add
Sheets(ActiveSheet.Name).Name = "testatalistino"
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fs, f, ts, s, campo, conta
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(archivio)
Set ts = f.OpenAsTextStream(ForReading, TristateFalse)
s = ts.ReadLine
ts.Close
Dim posizioni, lunghezze, sriga
Dim posizione, lungo
posizioni = Array(1, 21, 24, 35, 41, 49, 57, 87, 126, 129)
lunghezze = Array(20, 3, 11, 6, 8, 8, 30, 39, 3, 49)
Dim nomicampi(10)
nomicampi(0) = "Identificazione tracciato"
nomicampi(1) = "sigla produttore"
nomicampi(2) = "Partita IVA"
nomicampi(3) = "Numero listino prezzi"
nomicampi(4) = "Decorrenza listino prezzi"
nomicampi(5) = "Data ultima variazione/immissione"
nomicampi(6) = "Descrizione listino prezzi"
nomicampi(7) = "spazio1"
nomicampi(8) = "Versione tracciato listino prezzi"
nomicampi(9) = "spazio2"
'
For conta = 0 To 9
posizione = posizioni(conta)
lungo = lunghezze(conta)
sriga = conta + 1
campo = "'" & Mid(s, posizione, lungo)
Sheets("testatalistino").Cells(sriga, 2) = nomicampi(conta)
Sheets("testatalistino").Cells(sriga, 3) = campo
Next conta
'
End Sub
'
Sub vedifoglio(nomefoglio)
On Error GoTo crea
Sheets(nomefoglio).Activate
Sheets(nomefoglio).Delete
crea:
Sheets.Add
Sheets(ActiveSheet.Name).Name = nomefoglio
'
End Sub
'
'
'
'
Option Explicit
'
' vba - procedura completa per importazione listino Metel
' inserisce intestazione campi/colonne
' dividi i prezzi per ottenere i due decimali
' inserisce in un foglio a parte la testata del listino
'
Sub ImportaListinoMetel()
'
' scelta file
Dim archivio
archivio = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If archivio = False Then
Exit Sub
End If
'
Sheets.Add
Dim rigaletta, fso, f, sriga
' assegna il formato celle testo
Columns("A:D").Select
Selection.NumberFormat = "@"
Rows("2:2").Select
ActiveWindow.FreezePanes = True
sriga = 0
' legge il file di testo
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(archivio, 1, False)
Do While f.AtEndOfStream <> True
rigaletta = f.ReadLine
sriga = sriga + 1
ActiveSheet.Cells(sriga, 1) = rigaletta
Loop
f.Close
' analizza testo in colonne
ActiveSheet.Columns("A:A").Select
' tracciato record del listino metel
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), _
Array(3, 2), Array(19, 2), Array(32, 1), Array(75, 1), Array(80, 1), Array(85, 1), Array _
(90, 1), Array(96, 1), Array(97, 1), Array(108, 1), Array(119, 1), Array(125, 1), Array(128 _
, 1), Array(131, 1), Array(132, 1), Array(133, 5), Array(141, 2), Array(159, 2))
' divide i prezzi per inserire i due decimali
Dim quanterighe, contarighe, prezzogg, nprezzogg, prezzorr, nprezzorr, divisore, foglio
Set foglio = Sheets(ActiveSheet.Name)
divisore = 100 ' per i due decimali del prezzo grossista e al pubblico
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).row
'
For contarighe = 1 To quanterighe
prezzogg = ActiveSheet.Cells(contarighe, "J").Value ' prezzo grossista
prezzorr = ActiveSheet.Cells(contarighe, "K").Value ' prezzo al pubblico
If IsNull(prezzogg) = False And IsNumeric(prezzogg) = True Then
nprezzogg = prezzogg / divisore
ActiveSheet.Cells(contarighe, "J").Value = nprezzogg
End If
If IsNull(prezzorr) = False And IsNumeric(prezzorr) = True Then
nprezzorr = prezzorr / divisore
ActiveSheet.Cells(contarighe, "k").Value = nprezzorr
End If
Next
Sheets(ActiveSheet.Name).Name = "listino"
' inserisce i nomi dei campi
Call testatalistinometel("listino")
'
Columns("A:S").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B2").Select
'
End Sub
'
Sub testatalistinometel(nomefoglio)
'
Sheets(nomefoglio).Cells(1, 1) = "Sigla Marchio"
Sheets(nomefoglio).Cells(1, 2) = "Codice Prodotto Produttore"
Sheets(nomefoglio).Cells(1, 3) = "Codice EAN"
Sheets(nomefoglio).Cells(1, 4) = "Descrizione prodotto"
Sheets(nomefoglio).Cells(1, 5) = "Quantità cartone"
Sheets(nomefoglio).Cells(1, 6) = "Quantità multipla ordinazione"
Sheets(nomefoglio).Cells(1, 7) = "Quantità minima ordinazione"
Sheets(nomefoglio).Cells(1, 8) = "Quantità massima ordinazione"
Sheets(nomefoglio).Cells(1, 9) = "Lead Time"
Sheets(nomefoglio).Cells(1, 10) = "Prezzo al grossista"
Sheets(nomefoglio).Cells(1, 11) = "Prezzo al Pubblico"
Sheets(nomefoglio).Cells(1, 12) = "Moltiplicatore prezzo"
Sheets(nomefoglio).Cells(1, 13) = "Codice Valuta"
Sheets(nomefoglio).Cells(1, 14) = "Unità di misura"
Sheets(nomefoglio).Cells(1, 15) = "Prodotto Composto"
Sheets(nomefoglio).Cells(1, 16) = "Stato del prodotto"
Sheets(nomefoglio).Cells(1, 17) = "Data ultima variazione"
Sheets(nomefoglio).Cells(1, 18) = "Famiglia di sconto"
Sheets(nomefoglio).Cells(1, 19) = "Famiglia statistica"
End Sub
'
Sub leggitesta(archivio)
Sheets.Add
Sheets(ActiveSheet.Name).Name = "testatalistino"
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fs, f, ts, s, campo, conta
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(archivio)
Set ts = f.OpenAsTextStream(ForReading, TristateFalse)
s = ts.ReadLine
ts.Close
Dim posizioni, lunghezze, sriga
Dim posizione, lungo
posizioni = Array(1, 21, 24, 35, 41, 49, 57, 87, 126, 129)
lunghezze = Array(20, 3, 11, 6, 8, 8, 30, 39, 3, 49)
Dim nomicampi(10)
nomicampi(0) = "Identificazione tracciato"
nomicampi(1) = "sigla produttore"
nomicampi(2) = "Partita IVA"
nomicampi(3) = "Numero listino prezzi"
nomicampi(4) = "Decorrenza listino prezzi"
nomicampi(5) = "Data ultima variazione/immissione"
nomicampi(6) = "Descrizione listino prezzi"
nomicampi(7) = "spazio1"
nomicampi(8) = "Versione tracciato listino prezzi"
nomicampi(9) = "spazio2"
'
For conta = 0 To 9
posizione = posizioni(conta)
lungo = lunghezze(conta)
sriga = conta + 1
campo = "'" & Mid(s, posizione, lungo)
Sheets("testatalistino").Cells(sriga, 2) = nomicampi(conta)
Sheets("testatalistino").Cells(sriga, 3) = campo
Next conta
'
End Sub
'
Sub vedifoglio(nomefoglio)
On Error GoTo crea
Sheets(nomefoglio).Activate
Sheets(nomefoglio).Delete
crea:
Sheets.Add
Sheets(ActiveSheet.Name).Name = nomefoglio
'
End Sub
'
'
'
mercoledì 13 marzo 2013
maschera input valori html
Attribute VB_Name = "maschera_input_valori_html"
'
Option Explicit
'
' vba - crea finestra per input valori utilizzando Internet Explorer
'
Sub uso_MaskHtml_usa_valori()
Dim campi, ritorno
campi = Array("", "codice", "descrizione", "prezzo")
ritorno = creaMaskeraHtml(campi)
'
Dim valori1, valori2, valori3
'
valori1 = ritorno(1)
valori2 = ritorno(2)
valori3 = ritorno(3)
'
MsgBox valori1 & vbCrLf & valori2 & vbCrLf & valori3
'
End Sub
'
'
Sub uso_MaskHtml_elenca_valori()
Dim campi, ritorno
campi = Array("", "codice", "descrizione", "note", "prezzo")
ritorno = creaMaskeraHtml(campi)
'
Dim conta, quanti
quanti = UBound(ritorno)
For conta = 1 To quanti
ActiveSheet.Cells(conta, "a").Value = campi(conta)
ActiveSheet.Cells(conta, "b").Value = ritorno(conta)
Next conta
'
End Sub
'
Function creaMaskeraHtml(campi)
'
On Error GoTo esci
'
Dim txtHtml, ie, valoriinput, quanticampi, contacampi
quanticampi = UBound(campi)
ReDim ritorno(quanticampi)
ritorno(0) = "errore"
'
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "about:blank"
ie.Top = 150
ie.Visible = True
ie.Height = 300
ie.Width = 550
ie.MenuBar = False
ie.Toolbar = False
ie.StatusBar = False
ie.resizable = True
'
ie.document.Title = " - inserimento valori - "
' crea codice HTML della pagina per input dei valori.
' utilizzando una form e una tabella
txtHtml = ""
txtHtml = txtHtml + "<html><body><center>"
txtHtml = txtHtml + " inserimento<br>"
txtHtml = txtHtml + "<FORM name=""mask""><table>"
For contacampi = 1 To quanticampi
txtHtml = txtHtml + "<TR>" ' crea nuova riga
txtHtml = txtHtml + "<TD>" ' crea colonna della descrizione
txtHtml = txtHtml + campi(contacampi) ' testo visualizzato
txtHtml = txtHtml + ":</TD><TD>" ' nuova colonna
txtHtml = txtHtml + "<input name=""" & campi(contacampi) & """ type=""text"" value="""">" ' box input
txtHtml = txtHtml + "</TD></TR>"
Next contacampi
txtHtml = txtHtml + "</table></FORM></body></html>"
ie.document.body.innerHTML = txtHtml
'
' Do While IE.readyState = 4: DoEvents: Loop
'
Do While ie.readyState = 4
'
contacampi = 0
For Each valoriinput In ie.document.all.tags("INPUT")
contacampi = contacampi + 1
ritorno(contacampi) = valoriinput.Value
Next
'
DoEvents
Loop
'
ritorno(0) = "risposta"
Set ie = Nothing
'
esci:
'
creaMaskeraHtml = ritorno
'
End Function
'
'
'
Option Explicit
'
' vba - crea finestra per input valori utilizzando Internet Explorer
'
Sub uso_MaskHtml_usa_valori()
Dim campi, ritorno
campi = Array("", "codice", "descrizione", "prezzo")
ritorno = creaMaskeraHtml(campi)
'
Dim valori1, valori2, valori3
'
valori1 = ritorno(1)
valori2 = ritorno(2)
valori3 = ritorno(3)
'
MsgBox valori1 & vbCrLf & valori2 & vbCrLf & valori3
'
End Sub
'
'
Sub uso_MaskHtml_elenca_valori()
Dim campi, ritorno
campi = Array("", "codice", "descrizione", "note", "prezzo")
ritorno = creaMaskeraHtml(campi)
'
Dim conta, quanti
quanti = UBound(ritorno)
For conta = 1 To quanti
ActiveSheet.Cells(conta, "a").Value = campi(conta)
ActiveSheet.Cells(conta, "b").Value = ritorno(conta)
Next conta
'
End Sub
'
Function creaMaskeraHtml(campi)
'
On Error GoTo esci
'
Dim txtHtml, ie, valoriinput, quanticampi, contacampi
quanticampi = UBound(campi)
ReDim ritorno(quanticampi)
ritorno(0) = "errore"
'
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "about:blank"
ie.Top = 150
ie.Visible = True
ie.Height = 300
ie.Width = 550
ie.MenuBar = False
ie.Toolbar = False
ie.StatusBar = False
ie.resizable = True
'
ie.document.Title = " - inserimento valori - "
' crea codice HTML della pagina per input dei valori.
' utilizzando una form e una tabella
txtHtml = ""
txtHtml = txtHtml + "<html><body><center>"
txtHtml = txtHtml + " inserimento<br>"
txtHtml = txtHtml + "<FORM name=""mask""><table>"
For contacampi = 1 To quanticampi
txtHtml = txtHtml + "<TR>" ' crea nuova riga
txtHtml = txtHtml + "<TD>" ' crea colonna della descrizione
txtHtml = txtHtml + campi(contacampi) ' testo visualizzato
txtHtml = txtHtml + ":</TD><TD>" ' nuova colonna
txtHtml = txtHtml + "<input name=""" & campi(contacampi) & """ type=""text"" value="""">" ' box input
txtHtml = txtHtml + "</TD></TR>"
Next contacampi
txtHtml = txtHtml + "</table></FORM></body></html>"
ie.document.body.innerHTML = txtHtml
'
' Do While IE.readyState = 4: DoEvents: Loop
'
Do While ie.readyState = 4
'
contacampi = 0
For Each valoriinput In ie.document.all.tags("INPUT")
contacampi = contacampi + 1
ritorno(contacampi) = valoriinput.Value
Next
'
DoEvents
Loop
'
ritorno(0) = "risposta"
Set ie = Nothing
'
esci:
'
creaMaskeraHtml = ritorno
'
End Function
'
'
cancella righe scadute per data
Attribute VB_Name = "cancella_righe_scadute_per_data"
'
Option Explicit
'
' vba - Cancella Righe Scadute Per Data
'
Sub CancellaRigheScadutePerData()
'
Dim txtinfo, colonnaselezionata, corrente, lungo, quanterighe, contarighe
Dim oggi As Date, foglio
Set foglio = Sheets(ActiveSheet.Name)
txtinfo = "cancella righe scadute" & vbCrLf & "data inferiore ad oggi"
'
colonnaselezionata = InputBox(txtinfo, "scegli colonna")
'
Application.Cursor = xlWait
Application.ScreenUpdating = False
'
oggi = Date
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
' verifica la presenza del dato
lungo = Len(Trim(colonnaselezionata))
If lungo = 0 Then
Exit Sub
End If
'
For contarighe = quanterighe To 1 Step -1
corrente = Trim(foglio.Cells(contarighe, colonnaselezionata).Value)
If IsDate(corrente) = True Then
If corrente < oggi Then
foglio.Rows(contarighe).Delete
End If
End If
'
Next contarighe
'
Application.ScreenUpdating = True
Application.Cursor = xlDefault
'
End Sub
'
Option Explicit
'
' vba - Cancella Righe Scadute Per Data
'
Sub CancellaRigheScadutePerData()
'
Dim txtinfo, colonnaselezionata, corrente, lungo, quanterighe, contarighe
Dim oggi As Date, foglio
Set foglio = Sheets(ActiveSheet.Name)
txtinfo = "cancella righe scadute" & vbCrLf & "data inferiore ad oggi"
'
colonnaselezionata = InputBox(txtinfo, "scegli colonna")
'
Application.Cursor = xlWait
Application.ScreenUpdating = False
'
oggi = Date
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
' verifica la presenza del dato
lungo = Len(Trim(colonnaselezionata))
If lungo = 0 Then
Exit Sub
End If
'
For contarighe = quanterighe To 1 Step -1
corrente = Trim(foglio.Cells(contarighe, colonnaselezionata).Value)
If IsDate(corrente) = True Then
If corrente < oggi Then
foglio.Rows(contarighe).Delete
End If
End If
'
Next contarighe
'
Application.ScreenUpdating = True
Application.Cursor = xlDefault
'
End Sub
martedì 12 marzo 2013
leggi ipconfig linea comando
Attribute VB_Name = "leggi_ipconfig_linea_comando"
'
Option Explicit
'
' vba - Leggi Ipconfig Linea Di Comando
'
'
Sub LeggiIpconfigLineaDiComando()
Sheets.Add
Dim riga
Dim proShell, Linecomando, txtstringa
Set proShell = CreateObject("WScript.Shell")
Set Linecomando = proShell.Exec("%comspec% /c ipconfig.exe /all")
'
Do Until Linecomando.StdOut.AtEndOfStream
txtstringa = Linecomando.StdOut.ReadLine()
riga = riga + 1
txtstringa = Replace(txtstringa, Chr(13), "")
ActiveSheet.Cells(riga, 1).Value = txtstringa
Loop
'
End Sub
'
Option Explicit
'
' vba - Leggi Ipconfig Linea Di Comando
'
'
Sub LeggiIpconfigLineaDiComando()
Sheets.Add
Dim riga
Dim proShell, Linecomando, txtstringa
Set proShell = CreateObject("WScript.Shell")
Set Linecomando = proShell.Exec("%comspec% /c ipconfig.exe /all")
'
Do Until Linecomando.StdOut.AtEndOfStream
txtstringa = Linecomando.StdOut.ReadLine()
riga = riga + 1
txtstringa = Replace(txtstringa, Chr(13), "")
ActiveSheet.Cells(riga, 1).Value = txtstringa
Loop
'
End Sub
ricerca evidenzia contenuto
Attribute VB_Name = "ricerca_evidenzia_contenuto"
'
Option Explicit
'
' vba - ricerca ed evidenzia cella in base al contenuto utilizzando una espressione regolare
'
Sub EvidenziaCellaPerContenuto()
Dim procedura, testodaricercare As String, cella As Range
Set procedura = CreateObject("VBScript.RegExp")
testodaricercare = InputBox("cosa deve contenere la cella:", "scelta", "")
With procedura
.Pattern = testodaricercare
.IgnoreCase = True
.Global = True
For Each cella In ActiveSheet.UsedRange
If .test(cella.Value) Then cella.Interior.ColorIndex = 3
Next cella
End With
Set procedura = Nothing
'
End Sub
'
'
Option Explicit
'
' vba - ricerca ed evidenzia cella in base al contenuto utilizzando una espressione regolare
'
Sub EvidenziaCellaPerContenuto()
Dim procedura, testodaricercare As String, cella As Range
Set procedura = CreateObject("VBScript.RegExp")
testodaricercare = InputBox("cosa deve contenere la cella:", "scelta", "")
With procedura
.Pattern = testodaricercare
.IgnoreCase = True
.Global = True
For Each cella In ActiveSheet.UsedRange
If .test(cella.Value) Then cella.Interior.ColorIndex = 3
Next cella
End With
Set procedura = Nothing
'
End Sub
'
lunedì 11 marzo 2013
finestra messaggio html
Attribute VB_Name = "finestra_messaggio_html"
'
Option Explicit
'
' vba - funzione finestra messaggio in html - v. 1.0
'
'
Sub uso_FinestraMessaggioHtml()
Dim testomessaggio
testomessaggio = ""
testomessaggio = testomessaggio & "prima riga msg" & vbCrLf
testomessaggio = testomessaggio & "seconda riga msg" & vbCrLf
testomessaggio = testomessaggio & "terza riga msg" & vbCrLf
'
Call FinestraMessaggioHtml(testomessaggio)
'
End Sub
'
Sub FinestraMessaggioHtml(testomessaggio)
'
Dim testo
testo = Replace(testomessaggio, vbCrLf, "<br>")
'
Dim istrhtml, ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "about:blank" ' do this first!
ie.Visible = True
ie.Height = 350
ie.Width = 550
ie.MenuBar = False
ie.Toolbar = False
ie.StatusBar = False
ie.resizable = True
' istruzioni html
istrhtml = ""
istrhtml = istrhtml + "<html>"
istrhtml = istrhtml + "<head><title></title>"
istrhtml = istrhtml + "</head><body><center><br><strong></strong><br>"
istrhtml = istrhtml + testo ' testo del messaggio
istrhtml = istrhtml + "</center></body></html>"
ie.document.body.innerHTML = istrhtml
Set ie = Nothing
'
End Sub
'
Option Explicit
'
' vba - funzione finestra messaggio in html - v. 1.0
'
'
Sub uso_FinestraMessaggioHtml()
Dim testomessaggio
testomessaggio = ""
testomessaggio = testomessaggio & "prima riga msg" & vbCrLf
testomessaggio = testomessaggio & "seconda riga msg" & vbCrLf
testomessaggio = testomessaggio & "terza riga msg" & vbCrLf
'
Call FinestraMessaggioHtml(testomessaggio)
'
End Sub
'
Sub FinestraMessaggioHtml(testomessaggio)
'
Dim testo
testo = Replace(testomessaggio, vbCrLf, "<br>")
'
Dim istrhtml, ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "about:blank" ' do this first!
ie.Visible = True
ie.Height = 350
ie.Width = 550
ie.MenuBar = False
ie.Toolbar = False
ie.StatusBar = False
ie.resizable = True
' istruzioni html
istrhtml = ""
istrhtml = istrhtml + "<html>"
istrhtml = istrhtml + "<head><title></title>"
istrhtml = istrhtml + "</head><body><center><br><strong></strong><br>"
istrhtml = istrhtml + testo ' testo del messaggio
istrhtml = istrhtml + "</center></body></html>"
ie.document.body.innerHTML = istrhtml
Set ie = Nothing
'
End Sub
importa listno metel
Attribute VB_Name = "importa_listno_metel"
'
Option Explicit
'
' vba - importa un listino Metel in un nuovo foglio
'
Sub LeggeFileListinoMetel()
'
Const ForReading = 1
Const ForWriting = 2
'
Dim elencocampi, objFSO, objFile, rigacaricata, lunghezzariga, rigalavorata, dadove
Dim foglio, riga, colonna
'
elencocampi = Array(3, 16, 13, 43, 5, 5, 5, 6, 1, 11, 11, 6, 3, 3, 1, 1, 8, 18, 18) ' tracciato listino metel
'
Sheets.Add
Set foglio = Sheets(ActiveSheet.Name)
riga = 0
colonna = 0
'
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\listinometel-LSG.txt", ForReading)
'
Do Until objFile.AtEndOfStream
rigacaricata = objFile.ReadLine
lunghezzariga = Len(rigacaricata)
riga = riga + 1
colonna = 0
dadove = 1
For Each rigalavorata In elencocampi
colonna = colonna + 1
foglio.Cells(riga, colonna).Value = "'" & Mid(rigacaricata, dadove, rigalavorata)
dadove = dadove + rigalavorata
Next
Loop
'
objFile.Close
'
Cells.Select
Cells.EntireColumn.AutoFit
Rows("2:2").Select
ActiveWindow.FreezePanes = True
'
End Sub
'
Option Explicit
'
' vba - importa un listino Metel in un nuovo foglio
'
Sub LeggeFileListinoMetel()
'
Const ForReading = 1
Const ForWriting = 2
'
Dim elencocampi, objFSO, objFile, rigacaricata, lunghezzariga, rigalavorata, dadove
Dim foglio, riga, colonna
'
elencocampi = Array(3, 16, 13, 43, 5, 5, 5, 6, 1, 11, 11, 6, 3, 3, 1, 1, 8, 18, 18) ' tracciato listino metel
'
Sheets.Add
Set foglio = Sheets(ActiveSheet.Name)
riga = 0
colonna = 0
'
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\listinometel-LSG.txt", ForReading)
'
Do Until objFile.AtEndOfStream
rigacaricata = objFile.ReadLine
lunghezzariga = Len(rigacaricata)
riga = riga + 1
colonna = 0
dadove = 1
For Each rigalavorata In elencocampi
colonna = colonna + 1
foglio.Cells(riga, colonna).Value = "'" & Mid(rigacaricata, dadove, rigalavorata)
dadove = dadove + rigalavorata
Next
Loop
'
objFile.Close
'
Cells.Select
Cells.EntireColumn.AutoFit
Rows("2:2").Select
ActiveWindow.FreezePanes = True
'
End Sub
venerdì 8 marzo 2013
Excel conteggio righe colonne
Attribute VB_Name = "Excel_conteggio_righe_colonne"
'
Option Explicit
'
Sub uso_conteggiorighecolonne()
Dim nomefoglio
nomefoglio = "articoli"
MsgBox "Righe utilizzate: " & conteggiorighecolonne(nomefoglio, "righe")
MsgBox "colonne utilizzate: " & conteggiorighecolonne(nomefoglio, "colonne")
End Sub
'
Function conteggiorighecolonne(nomefoglio, cosa)
' funzione conteggio righe e colonne usate su un foglio excel
Dim foglio, quanterighe, quantecolonne
conteggiorighecolonne = 0
Set foglio = Sheets(nomefoglio)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
If cosa = "righe" Then
conteggiorighecolonne = quanterighe
Else
conteggiorighecolonne = quantecolonne
End If
'
End Function
'
Option Explicit
'
Sub uso_conteggiorighecolonne()
Dim nomefoglio
nomefoglio = "articoli"
MsgBox "Righe utilizzate: " & conteggiorighecolonne(nomefoglio, "righe")
MsgBox "colonne utilizzate: " & conteggiorighecolonne(nomefoglio, "colonne")
End Sub
'
Function conteggiorighecolonne(nomefoglio, cosa)
' funzione conteggio righe e colonne usate su un foglio excel
Dim foglio, quanterighe, quantecolonne
conteggiorighecolonne = 0
Set foglio = Sheets(nomefoglio)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
If cosa = "righe" Then
conteggiorighecolonne = quanterighe
Else
conteggiorighecolonne = quantecolonne
End If
'
End Function
mercoledì 6 marzo 2013
Excel macro. Ampliare le funzionalità di Excel con funzioni e programmazione
Excel macro. Ampliare le funzionalità di Excel con funzioni e programmazione
L'informatica è sempre più presente, nelle attività lavorative come
nella vita quotidiana, mentre il tempo che si può dedicare allo studio e
alla formazione è sempre più ridotto. Tra gli argomenti affrontati nel
volume: Sfruttare le potenzialità delle macro di Excel nelle versioni
97, 2000, 2002, 2003; Registare una macro; Dietro le macro: il
linguaggio Visual Basic for Application (VEA); Visual Basic Editor;
Macro funzioni, routine e subroutine; Tipi, variabili, matrici e
costanti; Esecuzione condizionale e ciclica delle istruzioni; Creare
finestre di dialogo.
Excel macro 2010
Excel macro 2010
Il linguaggio VBA, potenzialità generalmente poco sfruttata in Excel, permette di automatizzare, personalizzare e ottenere il massimo delle prestazioni dai fogli di calcolo. Questo libro permette sia ai programmatori esperti sia agli utenti alle prime armi di avvicinarsi a queste funzionalità. Passo dopo passo si verrà guidati nella costruzione di macro, passando dalle operazioni più semplici fino alla realizzazione di applicazioni complesse. Il testo è aggiornato alla versione 2010 di Excel.
VBScript in a Nutshell: A Desktop Quick Reference (In a NutshellVBScript in aVBScript in a Nutshell: A Desktop Quick Reference
VBScript in a Nutshell: A Desktop Quick Reference (In a Nutshell)
Lightweight yet powerful, VBScript from Microsoft® is used in four main areas: server-side web applications using Active Server Pages (ASP), client-side web scripts using Internet Explorer, code behind Outlook forms, and automating repetitive tasks using Windows Script Host (WSH). VBScript in a Nutshell, Second Edition delivers current and complete documentation for programmers and system administrators who want to develop effective scripts. Completely updated for VBScript 5.6, WSH 5.6 and ASP 3.0, VBScript In a Nutshell, Second Edition includes updated introductory chapters that will help you keep current with the significant changes since the first edition was published. New chapters introduce the Windows Script Component for creating binary COM components, and the Script Encoder.
Lightweight yet powerful, VBScript from Microsoft® is used in four main areas: server-side web applications using Active Server Pages (ASP), client-side web scripts using Internet Explorer, code behind Outlook forms, and automating repetitive tasks using Windows Script Host (WSH). VBScript in a Nutshell, Second Edition delivers current and complete documentation for programmers and system administrators who want to develop effective scripts. Completely updated for VBScript 5.6, WSH 5.6 and ASP 3.0, VBScript In a Nutshell, Second Edition includes updated introductory chapters that will help you keep current with the significant changes since the first edition was published. New chapters introduce the Windows Script Component for creating binary COM components, and the Script Encoder.
Excel. Dalle basi al VBA
Excel. Dalle basi al VBA
Il testo inizia con le basi di Excel: l'interfaccia, il foglio di calcolo e le cartelle. Vengono poi approfondite le formule, le pivot e le funzioni, fino ad arrivare alla creazione dei grafici e alle potenzialità delle macro e del VBA. Un particolare riguardo è dato alla sicurezza. Ogni capitolo è corredato da esempi pratici.
Microsoft Excel 2010 macro e VBA
Microsoft Excel 2010 macro e VBA
La suite da ufficio Microsoft Office è sicuramente uno dei software più diffusi al mondo, molti ne apprezzano le potenzialità, ma tanti ignorano che è possibile estenderne le capacità per adeguarla alle proprie necessità. Tutto questo è possibile grazie a VBA (Visual Basic for Applications), un linguaggio di programmazione appartenente alla famiglia del Visual Basic.Questo libro, rivolto a utenti mediamente evoluti di Excel, a manager, consulenti e formatori, illustra con chiarezza e mediante esercitazioni concrete l’utilizzo di macro e VBA per espandere le potenzialità di Excel.Anche chi non ha esperienza di programmazione potrà trovare in questo libro spunti interessanti per incrementare le capacità e la flessibilità dei suoi fogli di calcolo, oltre che per iniziare a familiarizzare con il linguaggio VBA in quanto tale. È richiesta solamente una discreta conoscenza di Excel, per il resto le istruzioni sono fornite passo passo, in modo da guidare tutti a realizzare i progetti proposti dal libro.
Iscriviti a:
Post (Atom)