Attribute VB_Name = "m_crea_catalogo_jpg_to_pdf"
'
'
Option Explicit
'
' vba - crea file Pdf da un elenco di immagini jpg.
' utilizza la classe: "mjwPDF"
'
' riferimenti classe:
' Creating PDF files in Visual Basic
' "mjwPDF 1.0"
' classe scaricabile dal sito:
' http://www.vb6.us/tutorials/visual-basic-tutorial-pdf
'
Sub CatalogoImmaginiPdf()
'
Dim immagine
Dim foglio, quanterighe, conta, quantejpg, contajpg, filejpg As String, titolodocumento
Dim percorsodocumentodacreare, percorsopdffonts, percorsojpg, txtlink
Set foglio = Sheets("db")
quanterighe = foglio.UsedRange.Rows.Count
quantejpg = 10
'
titolodocumento = "documento di prova pdf"
txtlink = "http:// il vostro sito da dichiare"
percorsodocumentodacreare = "C:\catalogo-jpg.pdf"
percorsopdffonts = "C:\pdfFonts"
percorsojpg = "c:\jpg\"
' Create a simple PDF file using the mjwPDF class
Dim objPDF As New mjwPDF
' Set the PDF title and filename
objPDF.PDFTitle = titolodocumento
objPDF.PDFFileName = percorsodocumentodacreare
' We must tell the class where the PDF fonts are located
objPDF.PDFLoadAfm = percorsopdffonts
' Set the file properties
objPDF.PDFSetLayoutMode = LAYOUT_DEFAULT
objPDF.PDFFormatPage = FORMAT_A4
objPDF.PDFOrientation = ORIENT_PORTRAIT
objPDF.PDFSetUnit = UNIT_PT
' Lets us set see the bookmark pane when we view the PDF
objPDF.PDFUseOutlines = True
'
' Begin our PDF document
objPDF.PDFBeginDoc
' Lets add a heading
objPDF.PDFSetFont FONT_ARIAL, 12, FONT_BOLD
objPDF.PDFSetDrawColor = vbRed
objPDF.PDFSetTextColor = vbBlack
'objPDF.PDFSetAlignement = ALIGN_Right
objPDF.PDFSetAlignement = ALIGN_Left
objPDF.PDFSetBorder = BORDER_None
'objPDF.PDFSetFill = True
''''
Dim jpgdasinistra As Double, jpgdallalto As Double, jpgaltezza As Double, jpglunghezza As Double
jpgdasinistra = 20
jpgdallalto = 15
jpgaltezza = 50
jpglunghezza = 50
'
contajpg = 0
For conta = 2 To quanterighe
immagine = foglio.Cells(conta, 2)
filejpg = percorsojpg & immagine
'
If Len(immagine) = 0 Then
immagine = "nd.jpg"
End If
'
'Lets add an image to page
objPDF.PDFImage filejpg, jpgdasinistra, jpgdallalto, jpglunghezza, jpgaltezza, CStr(txtlink)
jpgdallalto = jpgdallalto + jpgaltezza + 10
'
contajpg = contajpg + 1
If contajpg > quantejpg Then
contajpg = 0
jpgdallalto = 15
objPDF.PDFEndPage
'Start page
objPDF.PDFNewPage
End If
Next conta
'
' End our PDF document (this will save it to the filename)
objPDF.PDFEndDoc
'
MsgBox "catalogo creato in: " & percorsodocumentodacreare
'
End Sub
giovedì 31 ottobre 2013
dividi articoli - vbs
' *****
' esempio file di origine:
'AAA418|PLAFON. CABL 4X18 W|NR|22|0|0|0|0|00|0|0|160|11/05/2011|1446|AAA|AAA|0000000000000
'BBB00050|SCATOLA CONICA D.65|NR|22|0|0|0|0|0|0|0|204|16/09/2013|00050|BBB|BBB|0000000000000
'************************************************
' vbs - divide un file di testo in più file.
' utilizza i primi tre caratteri di ogni riga per determinare il nome del file di output
'************************************************
option explicit
'
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 8
'
Dim fso, farticoli, datiletti, iniziali, contenuti
dim marchivio, s, archiviodef, archivioorigine, archiviolog, archivioelenco, cartelladiscrittura, log, elencof
' ==== path dei file utilizzati
' === archivio di default per le iniziali non dichiarate
archiviodef = "C:\listino-personalizzato\articolialtri.txt"
' === file contenente gli articoli da suddividere
archivioorigine = "C:\listino-personalizzato\articoli.txt"
' file di log - copia del file di origine
archiviolog = "C:\listino-personalizzato\log.txt"
' elenco dei file creati
archivioelenco = "C:\listino-personalizzato\da-bus\elencofile.txt"
'
cartelladiscrittura = "C:\listino-personalizzato\"
' ====
'
Set fso = CreateObject("Scripting.FileSystemObject")
'file contenente gli articoli da suddividere
Set farticoli = fso.OpenTextFile(archivioorigine) ' Apre file di testo.
' file di log - copia del file di origine
Set log = fso.OpenTextFile(archiviolog, 2, True)
' elenco dei file creati
Set elencof = fso.OpenTextFile(archivioelenco, 2, True)
'
Do While Not (farticoli.atEndOfStream)
datiletti = farticoli.ReadLine 'legge una riga
if len(datiletti) => 3 then
iniziali = left(datiletti,3)
log.writeline(datiletti)
call scrivifile(iniziali,datiletti)
else
log.writeline(datiletti)
call scrivifile("articolivari",datiletti)
end if
Loop
'
sub scrivifile(piniziali,pdatiletti)
dim afso, archivio, fscrivo, presente
Set afso = CreateObject("Scripting.FileSystemObject")
'
archivio = cartelladiscrittura & piniziali & ".txt"
presente = instr(piniziali,"|")
if presente > 0 then
archivio = archiviodef
end if
'
marchivio = archivio
Select Case piniziali
' per queste iniziali viene creato un file specifico
Case "ABB", "ARC", "ARE", "ALL"
CASE "BER", "BOC", "TIC", "L&L"
CASE "CAM", "COM", "AIR", "GUZ"
CASE "CEM", "COE", "CAV", "MRT"
CASE "SUR", "GEW", "MTT", "TIC", "NMZ"
CASE "PLE", "VIW", "PRI", "TAR", "PAL"
CASE "TRE", "NOX", "ETN", "SIL", "VIM"
CASE "LEO", "TEN", "FRA", "SIM", "MAR"
CASE "OMR", "ELV", "FAI", "LOM", "URM"
CASE "PRO", "OTY", "SID", "IVE", "LUM"
CASE "EGO", "LPU", "VIP", "TUT", "VAL"
CASE "PRA", "LT3", "CST", "MCI", "IDL", "NAT"
CASE "LUC", "FOS", "ZUC", "VOR", "OSR", "GMB"
CASE "OVA", "PHI", "MEG", "INT", "REG", "SIS"
'
Case Else
archivio = archiviodef
End Select
'
If afso.FileExists(archivio) = true Then
Set fscrivo = afso.OpenTextFile(archivio, ForAppending, True) ' Apre file di testo.
else
Set fscrivo = afso.OpenTextFile(archivio, 2, True)
fscrivo.WriteLine("SG|TX|AR_UNMIS|AR_CODIVA|PREZZO1|PREZZO2|listino|prezzo|sconto1|sconto2|sconto3|L_AV_CLASS|aggiornato|ar_codalt|siglacaem|siglametel|ean13")
'
s = " File """ & archivio & """"
elencof.WriteLine(s)
end if
'
fscrivo.WriteLine(pdatiletti)
fscrivo.Close
'
set afso = nothing
end sub
'
'
' ===
' esempio file di origine:
'AAA418|PLAFON. CABL 4X18 W|NR|22|0|0|0|0|00|0|0|160|11/05/2011|1446|AAA|AAA|0000000000000
'BBB00050|SCATOLA CONICA D.65|NR|22|0|0|0|0|0|0|0|204|16/09/2013|00050|BBB|BBB|0000000000000
'************************************************
' vbs - divide un file di testo in più file.
' utilizza i primi tre caratteri di ogni riga per determinare il nome del file di output
'************************************************
option explicit
'
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 8
'
Dim fso, farticoli, datiletti, iniziali, contenuti
dim marchivio, s, archiviodef, archivioorigine, archiviolog, archivioelenco, cartelladiscrittura, log, elencof
' ==== path dei file utilizzati
' === archivio di default per le iniziali non dichiarate
archiviodef = "C:\listino-personalizzato\articolialtri.txt"
' === file contenente gli articoli da suddividere
archivioorigine = "C:\listino-personalizzato\articoli.txt"
' file di log - copia del file di origine
archiviolog = "C:\listino-personalizzato\log.txt"
' elenco dei file creati
archivioelenco = "C:\listino-personalizzato\da-bus\elencofile.txt"
'
cartelladiscrittura = "C:\listino-personalizzato\"
' ====
'
Set fso = CreateObject("Scripting.FileSystemObject")
'file contenente gli articoli da suddividere
Set farticoli = fso.OpenTextFile(archivioorigine) ' Apre file di testo.
' file di log - copia del file di origine
Set log = fso.OpenTextFile(archiviolog, 2, True)
' elenco dei file creati
Set elencof = fso.OpenTextFile(archivioelenco, 2, True)
'
Do While Not (farticoli.atEndOfStream)
datiletti = farticoli.ReadLine 'legge una riga
if len(datiletti) => 3 then
iniziali = left(datiletti,3)
log.writeline(datiletti)
call scrivifile(iniziali,datiletti)
else
log.writeline(datiletti)
call scrivifile("articolivari",datiletti)
end if
Loop
'
sub scrivifile(piniziali,pdatiletti)
dim afso, archivio, fscrivo, presente
Set afso = CreateObject("Scripting.FileSystemObject")
'
archivio = cartelladiscrittura & piniziali & ".txt"
presente = instr(piniziali,"|")
if presente > 0 then
archivio = archiviodef
end if
'
marchivio = archivio
Select Case piniziali
' per queste iniziali viene creato un file specifico
Case "ABB", "ARC", "ARE", "ALL"
CASE "BER", "BOC", "TIC", "L&L"
CASE "CAM", "COM", "AIR", "GUZ"
CASE "CEM", "COE", "CAV", "MRT"
CASE "SUR", "GEW", "MTT", "TIC", "NMZ"
CASE "PLE", "VIW", "PRI", "TAR", "PAL"
CASE "TRE", "NOX", "ETN", "SIL", "VIM"
CASE "LEO", "TEN", "FRA", "SIM", "MAR"
CASE "OMR", "ELV", "FAI", "LOM", "URM"
CASE "PRO", "OTY", "SID", "IVE", "LUM"
CASE "EGO", "LPU", "VIP", "TUT", "VAL"
CASE "PRA", "LT3", "CST", "MCI", "IDL", "NAT"
CASE "LUC", "FOS", "ZUC", "VOR", "OSR", "GMB"
CASE "OVA", "PHI", "MEG", "INT", "REG", "SIS"
'
Case Else
archivio = archiviodef
End Select
'
If afso.FileExists(archivio) = true Then
Set fscrivo = afso.OpenTextFile(archivio, ForAppending, True) ' Apre file di testo.
else
Set fscrivo = afso.OpenTextFile(archivio, 2, True)
fscrivo.WriteLine("SG|TX|AR_UNMIS|AR_CODIVA|PREZZO1|PREZZO2|listino|prezzo|sconto1|sconto2|sconto3|L_AV_CLASS|aggiornato|ar_codalt|siglacaem|siglametel|ean13")
'
s = " File """ & archivio & """"
elencof.WriteLine(s)
end if
'
fscrivo.WriteLine(pdatiletti)
fscrivo.Close
'
set afso = nothing
end sub
'
'
' ===
martedì 29 ottobre 2013
sconponi split pdf - vbs
'
' drag e drop
'
' estre e crea un file pdf per ogni pagina di un documento.
' utilizza Pdf Split and Merge
' scaricabile da: http://sourceforge.net/projects/pdfsam/
'
Option Explicit
'
dim objArgs, I
'
Set objArgs = WScript.Arguments 'Verifica esistenza presenza argomenti passati allo script
if objargs.count=0 then ' conteggio elementi
msgbox "Trascinare un file sul programma per visualizzarlo", vbinformation+vbokonly, Title
wscript.quit
end if
'
dim archivio, objFile, esegui, programma, attesa
Dim strTmp, objShell
'
set objShell = WScript.CreateObject("Wscript.Shell")
'
For I = 0 to objArgs.Count - 1
archivio = objArgs(I)
strTmp = "java -jar C:\Programmi\pdfsam\lib\pdfsam-console-0.5.2.jar -f " & archivio & " -p pdfsam_ -s BURST -o C:\provep\s2 split"
attesa = objShell.Run (strTmp, 1, True)
Next
'
Set objShell = Nothing '
' *****
' drag e drop
'
' estre e crea un file pdf per ogni pagina di un documento.
' utilizza Pdf Split and Merge
' scaricabile da: http://sourceforge.net/projects/pdfsam/
'
Option Explicit
'
dim objArgs, I
'
Set objArgs = WScript.Arguments 'Verifica esistenza presenza argomenti passati allo script
if objargs.count=0 then ' conteggio elementi
msgbox "Trascinare un file sul programma per visualizzarlo", vbinformation+vbokonly, Title
wscript.quit
end if
'
dim archivio, objFile, esegui, programma, attesa
Dim strTmp, objShell
'
set objShell = WScript.CreateObject("Wscript.Shell")
'
For I = 0 to objArgs.Count - 1
archivio = objArgs(I)
strTmp = "java -jar C:\Programmi\pdfsam\lib\pdfsam-console-0.5.2.jar -f " & archivio & " -p pdfsam_ -s BURST -o C:\provep\s2 split"
attesa = objShell.Run (strTmp, 1, True)
Next
'
Set objShell = Nothing '
' *****
Ghostscript pdf to jpg - vbs
'
' vbs - Ghostscript pdf to jpg
' converte tutti i file in formato pdf in immagini jpg.
' collocare il programmino nella directory interessata e cliccateci sopra.
' utilizza per la conversione Ghostscript.
' la risoluzione immagige è 600 px: azione = azione & " -r600 "
Option explicit
'
Dim file ' il file da convertire
Dim folder ' la directory corrente
Dim fso ' file system object
dim percorso, azione
dim archivio, archiviojpg, archiviopdf
dim tipo
dim esegui
Set Esegui = CreateObject("WScript.Shell")
'
' Creo il FileSystemObject
Set fso=CreateObject("Scripting.FileSystemObject")
'
' recupero la directory corrente
Set folder=fso.GetFolder(".")
'
' scorro tutti i file corrispondenti
For Each file in folder.Files
' msgbox file.Name
archivio = file.Name
if Len(archivio) > 5 then
tipo = Right(LCase(archivio),4)
if tipo = ".pdf" or tipo = ".PDF" then
percorso = folder & "\" & file.name
archiviopdf = file.name
' msgbox archiviopdf
archiviojpg = LEFT(archiviopdf,LEN(ARCHIVIOPDF)-3)
archiviojpg = archiviojpg & "jpg" ' 32
azione = ""
' path dipendente dalla versione di Ghoscript installata
' azione = azione & ""C:\Program Files (x86)\gs\gs9.07\bin\gswin32"" -dNOPAUSE -sDEVICE=jpeg "
azione = azione & "C:\Programmi\gs\gs8.64\bin\gswin32 -dNOPAUSE -sDEVICE=jpeg "
azione = azione & " -r600 "
azione = azione & " -sOutputFile=" & archiviojpg
azione = azione & " -dBATCH " & archiviopdf
'
Esegui.Run azione, 2, true
'
end if
end if
'
Next
'
'
'msgbox "finito"
'
'*********************************************************
' vbs - Ghostscript pdf to jpg
' converte tutti i file in formato pdf in immagini jpg.
' collocare il programmino nella directory interessata e cliccateci sopra.
' utilizza per la conversione Ghostscript.
' la risoluzione immagige è 600 px: azione = azione & " -r600 "
Option explicit
'
Dim file ' il file da convertire
Dim folder ' la directory corrente
Dim fso ' file system object
dim percorso, azione
dim archivio, archiviojpg, archiviopdf
dim tipo
dim esegui
Set Esegui = CreateObject("WScript.Shell")
'
' Creo il FileSystemObject
Set fso=CreateObject("Scripting.FileSystemObject")
'
' recupero la directory corrente
Set folder=fso.GetFolder(".")
'
' scorro tutti i file corrispondenti
For Each file in folder.Files
' msgbox file.Name
archivio = file.Name
if Len(archivio) > 5 then
tipo = Right(LCase(archivio),4)
if tipo = ".pdf" or tipo = ".PDF" then
percorso = folder & "\" & file.name
archiviopdf = file.name
' msgbox archiviopdf
archiviojpg = LEFT(archiviopdf,LEN(ARCHIVIOPDF)-3)
archiviojpg = archiviojpg & "jpg" ' 32
azione = ""
' path dipendente dalla versione di Ghoscript installata
' azione = azione & ""C:\Program Files (x86)\gs\gs9.07\bin\gswin32"" -dNOPAUSE -sDEVICE=jpeg "
azione = azione & "C:\Programmi\gs\gs8.64\bin\gswin32 -dNOPAUSE -sDEVICE=jpeg "
azione = azione & " -r600 "
azione = azione & " -sOutputFile=" & archiviojpg
azione = azione & " -dBATCH " & archiviopdf
'
Esegui.Run azione, 2, true
'
end if
end if
'
Next
'
'
'msgbox "finito"
'
'*********************************************************
legge un file listino Metel ed estrae in un file di testo solo articoli inseriti bel file trova
'
' vbs - legge un file Metel ed estrae, in un file di testo, solo
' gli articoli inseriti nel file trova.txt
' esempio struttura file trova.txt:
' 4878
' 4881
' 54776
' 50264
'
option explicit
'
Const ForReading = 1 'Apre un file in lettura.
dim filelistinometel, filerisultato, filericercati, dovescrivere, messaggio
Dim fso, ftrovati, fleggi, articolodatrovare, memorizzati(), contali, quanti, conta
Set fso = CreateObject("Scripting.FileSystemObject")
' === nome dei file da utilzzare
filelistinometel = "C:\LISTINOLSP.TXT" ' file listino metel
filericercati = "C:\trova.txt" ' file contenenti articoli da trovare
filerisultato = "C:\ttrovati.txt" ' file articoli corrispondenti
'
messaggio = ""
messaggio = messaggio & time & vbcrlf
'
'
Set dovescrivere = fso.CreateTextFile(filerisultato)
Set fleggi = fso.OpenTextFile(filericercati, ForReading, False)
'
' === carica in memoria il listino metel
quanti = 0
call Caricafile(filelistinometel)
'
' === per recuperare la testata del listino
call ricercadatato("METEL")
'
' === legge in memoria tutto il file
Do While fleggi.AtEndOfStream <> True
articolodatrovare = fleggi.ReadLine
call ricercadatato(articolodatrovare)
Loop
'
'
dovescrivere.close
fleggi.close
'
messaggio = messaggio & time & vbcrlf & "nr. articoli: " & quanti
msgbox messaggio
' ===
sub ricercadatato(articoloricercato)
Dim articolo, strdata, lunghezzaarticolo
lunghezzaarticolo = 19
for conta = 1 to quanti
strdata = memorizzati(conta)
articolo = left(strdata,lunghezzaarticolo)
if instr(articolo, articoloricercato) then
dovescrivere.WriteLine strdata
End If
next
'
end sub
' === memorizza in una array tutti gli articoli
Sub Caricafile(sFileName)
Dim fp, rigaletta
Set fp = fso.OpenTextFile( sFileName, ForReading, False)
Do While fp.AtEndOfStream <> True
rigaletta = fp.ReadLine
quanti = quanti + 1
redim preserve memorizzati(quanti)
memorizzati(quanti) = rigaletta
Loop
fp.Close
End Sub
'
'
' vbs - legge un file Metel ed estrae, in un file di testo, solo
' gli articoli inseriti nel file trova.txt
' esempio struttura file trova.txt:
' 4878
' 4881
' 54776
' 50264
'
option explicit
'
Const ForReading = 1 'Apre un file in lettura.
dim filelistinometel, filerisultato, filericercati, dovescrivere, messaggio
Dim fso, ftrovati, fleggi, articolodatrovare, memorizzati(), contali, quanti, conta
Set fso = CreateObject("Scripting.FileSystemObject")
' === nome dei file da utilzzare
filelistinometel = "C:\LISTINOLSP.TXT" ' file listino metel
filericercati = "C:\trova.txt" ' file contenenti articoli da trovare
filerisultato = "C:\ttrovati.txt" ' file articoli corrispondenti
'
messaggio = ""
messaggio = messaggio & time & vbcrlf
'
'
Set dovescrivere = fso.CreateTextFile(filerisultato)
Set fleggi = fso.OpenTextFile(filericercati, ForReading, False)
'
' === carica in memoria il listino metel
quanti = 0
call Caricafile(filelistinometel)
'
' === per recuperare la testata del listino
call ricercadatato("METEL")
'
' === legge in memoria tutto il file
Do While fleggi.AtEndOfStream <> True
articolodatrovare = fleggi.ReadLine
call ricercadatato(articolodatrovare)
Loop
'
'
dovescrivere.close
fleggi.close
'
messaggio = messaggio & time & vbcrlf & "nr. articoli: " & quanti
msgbox messaggio
' ===
sub ricercadatato(articoloricercato)
Dim articolo, strdata, lunghezzaarticolo
lunghezzaarticolo = 19
for conta = 1 to quanti
strdata = memorizzati(conta)
articolo = left(strdata,lunghezzaarticolo)
if instr(articolo, articoloricercato) then
dovescrivere.WriteLine strdata
End If
next
'
end sub
' === memorizza in una array tutti gli articoli
Sub Caricafile(sFileName)
Dim fp, rigaletta
Set fp = fso.OpenTextFile( sFileName, ForReading, False)
Do While fp.AtEndOfStream <> True
rigaletta = fp.ReadLine
quanti = quanti + 1
redim preserve memorizzati(quanti)
memorizzati(quanti) = rigaletta
Loop
fp.Close
End Sub
'
'
vbs suddividi file - vbs
'
' vbs - suddivide un file Metel di grandi dimensioni
' in file da 60.000 righe
'
option explicit
'
dim filelistinometel
filelistinometel = "C:\LISTINOLSP.TXT"
'
Const ForReading = 1 'Apre un file in lettura.
Dim fso, fileinlettura, rigaletta, contarighe, testata, fileinscrittura, contafile
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileinlettura = fso.OpenTextFile(filelistinometel, ForReading, False)
'
contarighe = 0
contafile = 0
Do While fileinlettura.AtEndOfStream <> True
rigaletta = fileinlettura.ReadLine
contarighe = contarighe + 1
if contarighe = 1 then
testata = rigaletta
contafile = contafile + 1
call creafiledascrivere(testata)
else
fileinscrittura.WriteLine rigaletta
end if
if contarighe > 60000 then
fileinscrittura.Close
contafile = contafile + 1
contarighe = 2
call creafiledascrivere(testata)
end if
Loop
fileinlettura.Close
fileinscrittura.Close
'
sub creafiledascrivere(contenuto)
dim nomefilescrittura
nomefilescrittura = "C:\list-" & contafile & ".txt"
Set fileinscrittura = fso.CreateTextFile(nomefilescrittura)
fileinscrittura.WriteLine contenuto
end sub
'
' ===
' vbs - suddivide un file Metel di grandi dimensioni
' in file da 60.000 righe
'
option explicit
'
dim filelistinometel
filelistinometel = "C:\LISTINOLSP.TXT"
'
Const ForReading = 1 'Apre un file in lettura.
Dim fso, fileinlettura, rigaletta, contarighe, testata, fileinscrittura, contafile
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileinlettura = fso.OpenTextFile(filelistinometel, ForReading, False)
'
contarighe = 0
contafile = 0
Do While fileinlettura.AtEndOfStream <> True
rigaletta = fileinlettura.ReadLine
contarighe = contarighe + 1
if contarighe = 1 then
testata = rigaletta
contafile = contafile + 1
call creafiledascrivere(testata)
else
fileinscrittura.WriteLine rigaletta
end if
if contarighe > 60000 then
fileinscrittura.Close
contafile = contafile + 1
contarighe = 2
call creafiledascrivere(testata)
end if
Loop
fileinlettura.Close
fileinscrittura.Close
'
sub creafiledascrivere(contenuto)
dim nomefilescrittura
nomefilescrittura = "C:\list-" & contafile & ".txt"
Set fileinscrittura = fso.CreateTextFile(nomefilescrittura)
fileinscrittura.WriteLine contenuto
end sub
'
' ===
venerdì 25 ottobre 2013
m ricostruzione articolo
Attribute VB_Name = "m_ricostruzione_articolo"
'
Option Explicit
'
'
Dim restituito
'
' vba === ricostruzione articolo originario
' per abbinamento
' articolo cliente: EA0115
' articolo fornitore: EA 011 5
'
Sub ScansionaArticoli()
Dim quanterighe, contarighe, foglio, colonnadaleggere, contenuto
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
contarighe = 2
colonnadaleggere = "k"
'
While contarighe < quanterighe
contenuto = Trim(foglio.Cells(contarighe, colonnadaleggere).Value)
If Len(contenuto) = 6 Then
Call aritcoloanalizza(contenuto, "(\S)", 6)
foglio.Cells(contarighe, colonnadaleggere).Value = restituito
End If
contarighe = contarighe + 1
Wend
'
'
End Sub
'
Sub aritcoloanalizza(contenuto, cosatrovare, lunghezzarichiesta)
Dim oggRegEx, myMatches, myMatch
Set oggRegEx = CreateObject("VBScript.RegExp")
'
oggRegEx.Global = True
oggRegEx.Pattern = cosatrovare
Set myMatches = oggRegEx.Execute(contenuto)
'
If myMatches.Count = lunghezzarichiesta Then
restituito = ""
restituito = restituito & myMatches(0).Value
restituito = restituito & myMatches(1).Value
restituito = restituito & " "
restituito = restituito & myMatches(2).Value
restituito = restituito & myMatches(3).Value
restituito = restituito & myMatches(4).Value
restituito = restituito & " "
restituito = restituito & myMatches(5).Value
End If
'
'
End Sub
'
Option Explicit
'
'
Dim restituito
'
' vba === ricostruzione articolo originario
' per abbinamento
' articolo cliente: EA0115
' articolo fornitore: EA 011 5
'
Sub ScansionaArticoli()
Dim quanterighe, contarighe, foglio, colonnadaleggere, contenuto
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
contarighe = 2
colonnadaleggere = "k"
'
While contarighe < quanterighe
contenuto = Trim(foglio.Cells(contarighe, colonnadaleggere).Value)
If Len(contenuto) = 6 Then
Call aritcoloanalizza(contenuto, "(\S)", 6)
foglio.Cells(contarighe, colonnadaleggere).Value = restituito
End If
contarighe = contarighe + 1
Wend
'
'
End Sub
'
Sub aritcoloanalizza(contenuto, cosatrovare, lunghezzarichiesta)
Dim oggRegEx, myMatches, myMatch
Set oggRegEx = CreateObject("VBScript.RegExp")
'
oggRegEx.Global = True
oggRegEx.Pattern = cosatrovare
Set myMatches = oggRegEx.Execute(contenuto)
'
If myMatches.Count = lunghezzarichiesta Then
restituito = ""
restituito = restituito & myMatches(0).Value
restituito = restituito & myMatches(1).Value
restituito = restituito & " "
restituito = restituito & myMatches(2).Value
restituito = restituito & myMatches(3).Value
restituito = restituito & myMatches(4).Value
restituito = restituito & " "
restituito = restituito & myMatches(5).Value
End If
'
'
End Sub
giovedì 1 agosto 2013
crea file cartella temporanea - vbs
'
' vbs.
' Crea nome di un file temporaneo.
' visualizza il percorsso della cartella temp.
' visualizza il percorso/path del file temporaneo.
'
Option Explicit
'
Dim strTempFile
Dim strTempFolder
Dim strTemp
dim tipofile
tipofile = ".fdf"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set strTempfolder = fso.GetSpecialFolder(2)
strTempFile = fso.GetTempName()
strTempFile = left(strTempFile, len(strTempFile)-4)
strTemp = strTempFolder & "\" & strTempFile & tipofile
dim s
s = ""
s = s & "Nome File Temporaneo: " & strTempFile & vbcrlf
s = s & "Nome Cartella Temporanea: " & strTempFolder & vbcrlf
s = s & "Percorso/Path file temporaneo: " & strTemp & vbcrlf
msgbox s
' vbs.
' Crea nome di un file temporaneo.
' visualizza il percorsso della cartella temp.
' visualizza il percorso/path del file temporaneo.
'
Option Explicit
'
Dim strTempFile
Dim strTempFolder
Dim strTemp
dim tipofile
tipofile = ".fdf"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set strTempfolder = fso.GetSpecialFolder(2)
strTempFile = fso.GetTempName()
strTempFile = left(strTempFile, len(strTempFile)-4)
strTemp = strTempFolder & "\" & strTempFile & tipofile
dim s
s = ""
s = s & "Nome File Temporaneo: " & strTempFile & vbcrlf
s = s & "Nome Cartella Temporanea: " & strTempFolder & vbcrlf
s = s & "Percorso/Path file temporaneo: " & strTemp & vbcrlf
msgbox s
giovedì 18 luglio 2013
vbs inserisce in range excel usando sql
'
' vbs. Inserisce in range Excel usando istruzione sql
' il dato viene accodato ad un Range creato con inserisci nome.
' Se si selezionane tutte le colonne verrà generato l'errore di foglio pieno.
' Il foglio deve contenere le intestazioni, servono come nome campo.
'
'
option explicit
'
dim objConn, objRS, SQL, riferimentodb
riferimentodb = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\articoli.xls" & ";Extended Properties=Excel 8.0;"
'
Set objConn = CreateObject("ADODB.Connection")
objConn.Open riferimentodb
Set objRS = CreateObject("ADODB.Recordset")
' stringa sql
SQL = "INSERT INTO articoli (articolo, descrizione) VALUES ('BVIM8000', 'INTERRUTTORE 1P 10AX')"
objRS.Open SQL, objConn
'
' vbs. Inserisce in range Excel usando istruzione sql
' il dato viene accodato ad un Range creato con inserisci nome.
' Se si selezionane tutte le colonne verrà generato l'errore di foglio pieno.
' Il foglio deve contenere le intestazioni, servono come nome campo.
'
'
option explicit
'
dim objConn, objRS, SQL, riferimentodb
riferimentodb = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\articoli.xls" & ";Extended Properties=Excel 8.0;"
'
Set objConn = CreateObject("ADODB.Connection")
objConn.Open riferimentodb
Set objRS = CreateObject("ADODB.Recordset")
' stringa sql
SQL = "INSERT INTO articoli (articolo, descrizione) VALUES ('BVIM8000', 'INTERRUTTORE 1P 10AX')"
objRS.Open SQL, objConn
'
vbs crea excel tramite tabella html - vbs
'
' vbs
' crea un file Excel
' utilizzando il codice html per una tabella.
'
option explicit
'
dim fs, filetxt
dim testo, contarighe
Set fs = CreateObject("Scripting.FileSystemObject")
Set filetxt = fs.CreateTextFile("c:\excel-test.xls", True)
testo ="<TABLE>"
filetxt.WriteLine(testo)
'
for contarighe = 1 to 15 step 1
testo = ""
' inizio riga
testo = testo & "<TR>"
' prima colonna - colonna A
testo = testo & "<td>" & contarighe & "</td>"
' seconda colonna - colonna B
testo = testo & "<td>" & (contarighe*2) & "</td>"
' fine riga
testo = testo & "</TR>"
filetxt.WriteLine(testo)
next
'
testo = ""
'inserisce formula Somma
testo = testo & "<TR>" ' inizio riga
testo = testo & "<td width=40><b>=sum(A1:A15)</b></td>"
testo = testo & "<td width=40><b>=sum(B1:B15)</b></td>"
testo = testo & "</TR>"
testo = testo & "</table>"
filetxt.WriteLine(testo)
filetxt.Close
'
' vbs
' crea un file Excel
' utilizzando il codice html per una tabella.
'
option explicit
'
dim fs, filetxt
dim testo, contarighe
Set fs = CreateObject("Scripting.FileSystemObject")
Set filetxt = fs.CreateTextFile("c:\excel-test.xls", True)
testo ="<TABLE>"
filetxt.WriteLine(testo)
'
for contarighe = 1 to 15 step 1
testo = ""
' inizio riga
testo = testo & "<TR>"
' prima colonna - colonna A
testo = testo & "<td>" & contarighe & "</td>"
' seconda colonna - colonna B
testo = testo & "<td>" & (contarighe*2) & "</td>"
' fine riga
testo = testo & "</TR>"
filetxt.WriteLine(testo)
next
'
testo = ""
'inserisce formula Somma
testo = testo & "<TR>" ' inizio riga
testo = testo & "<td width=40><b>=sum(A1:A15)</b></td>"
testo = testo & "<td width=40><b>=sum(B1:B15)</b></td>"
testo = testo & "</TR>"
testo = testo & "</table>"
filetxt.WriteLine(testo)
filetxt.Close
'
mercoledì 17 luglio 2013
ricerca ed estrae righe da file testo - vbs
'
' vbs - ricerca ed estrae righe da un
' file di testo.
' le parole da ricercare sono contenute nel file trova.txt
'
Option explicit
'
dim filelistino, fileDaScrivere, fileRicercati, scrivitext
Const ForReading = 1 'Apre un file in lettura.
Dim fso, ftrovati, fleggi, stringaricercata, CercaNelFile
Set fso = CreateObject("Scripting.FileSystemObject")
'
filelistino = "C:\listino.txt" ' file listino
fileDaScrivere = "C:\trovati.txt" ' file con il risultato della ricerca
fileRicercati = "C:\trova.txt" ' file contente i valori da trovare
'
Set scrivitext = fso.CreateTextFile(fileDaScrivere)
Set fleggi = fso.OpenTextFile(fileRicercati, ForReading, False)
'
Call mCercaNelFile(filelistino, "xyJK") ' serve per creare una eventuale intestazione
'
Do While fleggi.AtEndOfStream <> True
stringaricercata = fleggi.ReadLine
Call mCercaNelFile(filelistino, stringaricercata)
Loop
'
scrivitext.close
fleggi.close
'---
' Cerca nel file sFileName
'---
Sub mCercaNelFile(filelistino, stringaricercata)
Dim fp, rigaletta
Set fp = fso.OpenTextFile(filelistino, ForReading, False)
'
Do While fp.AtEndOfStream <> True
rigaletta = fp.ReadLine
if instr(rigaletta, stringaricercata) then
scrivitext.WriteLine rigaletta
End If
Loop
fp.Close
'
End Sub
'---
' vbs - ricerca ed estrae righe da un
' file di testo.
' le parole da ricercare sono contenute nel file trova.txt
'
Option explicit
'
dim filelistino, fileDaScrivere, fileRicercati, scrivitext
Const ForReading = 1 'Apre un file in lettura.
Dim fso, ftrovati, fleggi, stringaricercata, CercaNelFile
Set fso = CreateObject("Scripting.FileSystemObject")
'
filelistino = "C:\listino.txt" ' file listino
fileDaScrivere = "C:\trovati.txt" ' file con il risultato della ricerca
fileRicercati = "C:\trova.txt" ' file contente i valori da trovare
'
Set scrivitext = fso.CreateTextFile(fileDaScrivere)
Set fleggi = fso.OpenTextFile(fileRicercati, ForReading, False)
'
Call mCercaNelFile(filelistino, "xyJK") ' serve per creare una eventuale intestazione
'
Do While fleggi.AtEndOfStream <> True
stringaricercata = fleggi.ReadLine
Call mCercaNelFile(filelistino, stringaricercata)
Loop
'
scrivitext.close
fleggi.close
'---
' Cerca nel file sFileName
'---
Sub mCercaNelFile(filelistino, stringaricercata)
Dim fp, rigaletta
Set fp = fso.OpenTextFile(filelistino, ForReading, False)
'
Do While fp.AtEndOfStream <> True
rigaletta = fp.ReadLine
if instr(rigaletta, stringaricercata) then
scrivitext.WriteLine rigaletta
End If
Loop
fp.Close
'
End Sub
'---
crea foglio excel e html
'
' crea file Excel ed Html con intestazione
'
dim archivio
archivio = "articoli" & time
'
Const xlHTML = 44
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
objExcel.DisplayAlerts = False
objExcel.Cells(1, 1).Value = "articolo"
objExcel.Cells(1, 2).Value = "descrizione"
objExcel.Cells(1, 3).Value = "prezzo"
objExcel.Cells(1, 4).Value = "um"
objWorkbook.SaveAs "C:\" & archivio & ".xls"
objWorkbook.SaveAs "C:\" & archivio & ".html", xlHTML
' crea file Excel ed Html con intestazione
'
dim archivio
archivio = "articoli" & time
'
Const xlHTML = 44
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
objExcel.DisplayAlerts = False
objExcel.Cells(1, 1).Value = "articolo"
objExcel.Cells(1, 2).Value = "descrizione"
objExcel.Cells(1, 3).Value = "prezzo"
objExcel.Cells(1, 4).Value = "um"
objWorkbook.SaveAs "C:\" & archivio & ".xls"
objWorkbook.SaveAs "C:\" & archivio & ".html", xlHTML
martedì 16 luglio 2013
finesta a tempo
Attribute VB_Name = "finesta_a_tempo"
'
Option Explicit
'
' vba - Excel.
' Finetra Pop Up Temporanea.
' la durata è configurabile.
'
Sub FinestraPopUpTemporanea()
Dim txtmsg
Dim wshshell As Object, durata
durata = 3
'
txtmsg = ""
txtmsg = txtmsg & "il messaggio " & vbCrLf
txtmsg = txtmsg & "scomparità entro " & durata & " secondi " & vbCrLf
'
Set wshshell = CreateObject("Wscript.shell")
'
wshshell.popup txtmsg, durata, "intestazione messaggio"
'
End Sub
'
Option Explicit
'
' vba - Excel.
' Finetra Pop Up Temporanea.
' la durata è configurabile.
'
Sub FinestraPopUpTemporanea()
Dim txtmsg
Dim wshshell As Object, durata
durata = 3
'
txtmsg = ""
txtmsg = txtmsg & "il messaggio " & vbCrLf
txtmsg = txtmsg & "scomparità entro " & durata & " secondi " & vbCrLf
'
Set wshshell = CreateObject("Wscript.shell")
'
wshshell.popup txtmsg, durata, "intestazione messaggio"
'
End Sub
estrae informazione query
Attribute VB_Name = "estrae_informazione_query"
'
Option Explicit
'
' Vba - Excel
' Estrae da una query i riferimenti
' alla connessione e alla stringa sql.
'
'
Sub EstraeInformazioniDaQuery()
'
' riferiemto alla cartella attiva, al primo foglio e alla prima query.
' ThisWorkbook.Worksheets(1).QueryTables(1)
'
Dim contenuto As String
'
contenuto = ""
'
' riferimento al foglio attivo e alla prima Query
'
With ThisWorkbook.ActiveSheet.QueryTables(1)
contenuto = contenuto & "connessione: " & .Connection & vbCrLf
contenuto = contenuto & "stringa sql: " & .CommandText & vbCrLf
MsgBox contenuto
Sheets.Add
ActiveSheet.Range("B2") = "connessione:"
ActiveSheet.Range("B3") = "stringa sql:"
ActiveSheet.Range("C2") = .Connection
ActiveSheet.Range("C3") = .CommandText
End With
'
End Sub
'
Option Explicit
'
' Vba - Excel
' Estrae da una query i riferimenti
' alla connessione e alla stringa sql.
'
'
Sub EstraeInformazioniDaQuery()
'
' riferiemto alla cartella attiva, al primo foglio e alla prima query.
' ThisWorkbook.Worksheets(1).QueryTables(1)
'
Dim contenuto As String
'
contenuto = ""
'
' riferimento al foglio attivo e alla prima Query
'
With ThisWorkbook.ActiveSheet.QueryTables(1)
contenuto = contenuto & "connessione: " & .Connection & vbCrLf
contenuto = contenuto & "stringa sql: " & .CommandText & vbCrLf
MsgBox contenuto
Sheets.Add
ActiveSheet.Range("B2") = "connessione:"
ActiveSheet.Range("B3") = "stringa sql:"
ActiveSheet.Range("C2") = .Connection
ActiveSheet.Range("C3") = .CommandText
End With
'
End Sub
sql cartella excel
Attribute VB_Name = "sql_cartella_excel"
'
Option Explicit
'
' vba - Excel
' carica, tramite istruzione Sql
' i dati contenuto in un altro foglio excel.
'
'
Sub CaricaDati()
Dim s As String, stringasql As String, questacartella
questacartella = "<percorso cartella excel>.xls"
'
' stringa sql
s = ""
s = s & ""
s = s & " SELECT <nome campi>,"
s = s & " FROM <nome range excel>"
s = s & " ORDER BY <nome campi>"
stringasql = s
'
Call ExcelSqlCopyrecordset(questacartella, CStr("?nomefoglio?"), stringasql)
'
End Sub
'
Sub ExcelSqlCopyrecordset(questacartella, nomefoglio As String, stringasql As String)
'
Dim ExcelConnessione, ExcelRS, s As String
Dim quanticampi, conta, nomecampo
Set ExcelConnessione = CreateObject("ADODB.Connection")
Set ExcelRS = CreateObject("ADODB.Recordset")
'
ExcelConnessione.Provider = "Microsoft.Jet.OLEDB.4.0"
ExcelConnessione.Properties("Extended Properties").Value = "Excel 8.0"
ExcelConnessione.Open questacartella
'
Set ExcelRS = ExcelConnessione.Execute(stringasql)
'
quanticampi = ExcelRS.Fields.Count - 1 ' conteggio numero campi
'
Sheets(nomefoglio).Activate
'ActiveSheet.Range("A2:Z65500").ClearContents
ActiveSheet.UsedRange.ClearContents ' pulisce tutta area utilizzata nel foglio.
'
' usa i nomi dei campi per intestazione colonne
For conta = 0 To quanticampi
nomecampo = ExcelRS(conta).Name
ActiveSheet.Cells(1, (conta + 1)) = nomecampo
Next conta
'
ActiveSheet.Range("A2").CopyFromRecordset ExcelRS
'
ExcelRS.Close
Set ExcelRS = Nothing
Set ExcelConnessione = Nothing
'
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Cells.Select
Cells.EntireColumn.AutoFit
Range("A2").Select
'
End Sub
'
Option Explicit
'
' vba - Excel
' carica, tramite istruzione Sql
' i dati contenuto in un altro foglio excel.
'
'
Sub CaricaDati()
Dim s As String, stringasql As String, questacartella
questacartella = "<percorso cartella excel>.xls"
'
' stringa sql
s = ""
s = s & ""
s = s & " SELECT <nome campi>,"
s = s & " FROM <nome range excel>"
s = s & " ORDER BY <nome campi>"
stringasql = s
'
Call ExcelSqlCopyrecordset(questacartella, CStr("?nomefoglio?"), stringasql)
'
End Sub
'
Sub ExcelSqlCopyrecordset(questacartella, nomefoglio As String, stringasql As String)
'
Dim ExcelConnessione, ExcelRS, s As String
Dim quanticampi, conta, nomecampo
Set ExcelConnessione = CreateObject("ADODB.Connection")
Set ExcelRS = CreateObject("ADODB.Recordset")
'
ExcelConnessione.Provider = "Microsoft.Jet.OLEDB.4.0"
ExcelConnessione.Properties("Extended Properties").Value = "Excel 8.0"
ExcelConnessione.Open questacartella
'
Set ExcelRS = ExcelConnessione.Execute(stringasql)
'
quanticampi = ExcelRS.Fields.Count - 1 ' conteggio numero campi
'
Sheets(nomefoglio).Activate
'ActiveSheet.Range("A2:Z65500").ClearContents
ActiveSheet.UsedRange.ClearContents ' pulisce tutta area utilizzata nel foglio.
'
' usa i nomi dei campi per intestazione colonne
For conta = 0 To quanticampi
nomecampo = ExcelRS(conta).Name
ActiveSheet.Cells(1, (conta + 1)) = nomecampo
Next conta
'
ActiveSheet.Range("A2").CopyFromRecordset ExcelRS
'
ExcelRS.Close
Set ExcelRS = Nothing
Set ExcelConnessione = Nothing
'
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Cells.Select
Cells.EntireColumn.AutoFit
Range("A2").Select
'
End Sub
ricerca parole tag
Attribute VB_Name = "ricerca_parole_tag"
'
Option Explicit
'
' vba - Excel.
' trova parole/tag in una colonna di Excel.
' tramite espressione regolare crea
' elenco della parole presenti in una colonna.
' Evita i duplicati.
'
Sub TrovaParoleTag()
Dim quanterighe, contarighe, foglio, contenuto As String, colonnaDaLeggere, trovate As String, parole
Dim objRegEx, paroletrovate, parola
Set foglio = Sheets(ActiveSheet.Name)
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
'
' conteggio delle righe utilizzare
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
colonnaDaLeggere = "D" ' colonna contenete celle da leggere
'
contarighe = 1 ' parte dalla prima riga
contenuto = ""
trovate = ""
While contarighe <= quanterighe
' carica il contenuto della cella
contenuto = " " & foglio.Cells(contarighe, colonnaDaLeggere).Value & " "
'
objRegEx.Pattern = "\w+" ' ricerca parole
Set paroletrovate = objRegEx.Execute(contenuto)
'
If paroletrovate.Count > 0 Then ' conteggio delle parole trovate
For Each paroletrovate In paroletrovate
parola = paroletrovate.Value
'
objRegEx.Pattern = parola
' verifca che la parola sia memorizzata
If objRegEx.test(trovate) = False Then
trovate = trovate & " " & parola
End If
'
Next
End If
'
contarighe = contarighe + 1
foglio.Cells(contarighe, colonnaDaLeggere).Activate
Wend
'
' che nuovo foglio contenente le parole trovate
parole = Split(trovate, " ")
Dim quanteparole, contaparole
Sheets.Add
quanteparole = UBound(parole)
For contaparole = 0 To quanteparole
ActiveSheet.Cells((contaparole + 1), "A").Value = parole(contaparole)
Next contaparole
'
End Sub
'
'
Option Explicit
'
' vba - Excel.
' trova parole/tag in una colonna di Excel.
' tramite espressione regolare crea
' elenco della parole presenti in una colonna.
' Evita i duplicati.
'
Sub TrovaParoleTag()
Dim quanterighe, contarighe, foglio, contenuto As String, colonnaDaLeggere, trovate As String, parole
Dim objRegEx, paroletrovate, parola
Set foglio = Sheets(ActiveSheet.Name)
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
'
' conteggio delle righe utilizzare
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
colonnaDaLeggere = "D" ' colonna contenete celle da leggere
'
contarighe = 1 ' parte dalla prima riga
contenuto = ""
trovate = ""
While contarighe <= quanterighe
' carica il contenuto della cella
contenuto = " " & foglio.Cells(contarighe, colonnaDaLeggere).Value & " "
'
objRegEx.Pattern = "\w+" ' ricerca parole
Set paroletrovate = objRegEx.Execute(contenuto)
'
If paroletrovate.Count > 0 Then ' conteggio delle parole trovate
For Each paroletrovate In paroletrovate
parola = paroletrovate.Value
'
objRegEx.Pattern = parola
' verifca che la parola sia memorizzata
If objRegEx.test(trovate) = False Then
trovate = trovate & " " & parola
End If
'
Next
End If
'
contarighe = contarighe + 1
foglio.Cells(contarighe, colonnaDaLeggere).Activate
Wend
'
' che nuovo foglio contenente le parole trovate
parole = Split(trovate, " ")
Dim quanteparole, contaparole
Sheets.Add
quanteparole = UBound(parole)
For contaparole = 0 To quanteparole
ActiveSheet.Cells((contaparole + 1), "A").Value = parole(contaparole)
Next contaparole
'
End Sub
'
venerdì 12 luglio 2013
estratto conto
Attribute VB_Name = "estratto_conto"
'
Option Explicit
'
' vba - excel
' riferimenti: Microsoft Word Object library
' estratto conto su tabella WOrd
' scorre il foglio di Excel, e anche in presenza di un cliente con pià righe concomitanti
' crea un unico documento word.
' Nel documento Word sono presenti due tabelle:
' 1 - dati clienti
' 2 - dettaglio documenti del cliente
'
Public Const modelloword = "C:\circolarizzazione_crediti\ClientiEstrattoConto.dot"
Public Const cartellasalvataggio = "C:\circolarizzazione_crediti\EC\"
'
Dim appWD As Word.Application
Dim nomedoc, tabtesta, tabdettaglio, docrighe
Dim docaperto
'
Sub vaiwordn(nomedocumento) ' crea nuovo documeto Word
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
'
With appWD
.Documents.Add Template:=nomedocumento, NewTemplate:=False, DocumentType:=0
nomedoc = .ActiveDocument.Name
.Activate
End With
'
appWD.Documents(nomedoc).Activate
'
' setta il riferimento al documento
Set tabtesta = appWD.Documents(nomedoc).Tables(1) ' dati del cliente (ragione sociale, indirizzo etc.
Set tabdettaglio = appWD.Documents(nomedoc).Tables(2) ' tabella dettaglio del credito
'
docaperto = 1
'
End Sub
'
Sub salvadoc(salvaconnome) ' salva documento
'
appWD.ActiveDocument.SaveAs salvaconnome
' applicazione visibile
appWD.Visible = True
' a tutto shermo
appWD.WindowState = wdWindowStateMaximize
' attivato
appWD.Application.Activate
'
appWD.ActiveDocument.Close
appWD.Quit
Set appWD = Nothing
docaperto = 0 ' flag
End Sub
'
Sub PreparaEstrattoConto()
Dim quanterighe, contarighe, foglio, conto, contoprecedente, colonnai, docreati
Dim nomefoglio As String, riga, nomedocumento As String, salvaconnome As String, importo, totale
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
nomedocumento = modelloword ' utilizza un modello di Word
colonnai = "C" ' colonna contenete il campo di controllo - tipo codice cliente/partita iva
'
contoprecedente = 0
docreati = 0
totale = 0 ' totale delle partite del cliente
importo = 0
'
contarighe = 2 ' parte dalla seconda riga del foglio
While contarighe <= quanterighe
conto = Trim(foglio.Cells(contarighe, colonnai).Value)
If Len(conto) > 0 Then ' verifica che la cella non sia vuota
If conto <> contoprecedente Then ' verifica il cambio del codice cliente/partita iva
If docreati > 0 Then ' salva il documento con il valore della cella chiave
salvaconnome = cartellasalvataggio & contoprecedente
Call salvadoc(salvaconnome)
End If
Call vaiwordn(nomedocumento)
docreati = docreati + 1
tabtesta.Cell(Row:=1, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "D").Value ' ragione sociale
tabtesta.Cell(Row:=2, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "R").Value ' indirizzo
tabtesta.Cell(Row:=3, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "T").Value ' città
contoprecedente = conto
End If
docrighe = tabdettaglio.Rows.Count ' conteggio righe della tabella dettaglio
'
tabdettaglio.Cell(Row:=docrighe, Column:=1).Select
tabdettaglio.Rows.Add ' aggiunge righe alla tabella Word contente il dettaglio dei dati
tabdettaglio.Cell(Row:=docrighe, Column:=1).Range.InsertAfter Text:=foglio.Cells(contarighe, "B").Value ' data scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "F").Value ' causale scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=3).Range.InsertAfter Text:=foglio.Cells(contarighe, "K").Value ' totale documento
tabdettaglio.Cell(Row:=docrighe, Column:=4).Range.InsertAfter Text:=foglio.Cells(contarighe, "L").Value ' importo scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=5).Range.InsertAfter Text:=foglio.Cells(contarighe, "M").Value ' numero documento
tabdettaglio.Cell(Row:=docrighe, Column:=6).Range.InsertAfter Text:=foglio.Cells(contarighe, "G").Value ' serie documento
tabdettaglio.Cell(Row:=docrighe, Column:=7).Range.InsertAfter Text:=foglio.Cells(contarighe, "A").Value ' data documento
docrighe = docrighe + 1
'
End If
contarighe = contarighe + 1
Wend
'
'
If docaperto = 1 Then ' contatore di documento ancora aperto
salvaconnome = cartellasalvataggio & contoprecedente
Call salvadoc(salvaconnome)
End If
'
'Set appWD = Nothing
'appWD.ActiveDocument.Save
'appWD.Quit
'
End Sub
'
'
Option Explicit
'
' vba - excel
' riferimenti: Microsoft Word Object library
' estratto conto su tabella WOrd
' scorre il foglio di Excel, e anche in presenza di un cliente con pià righe concomitanti
' crea un unico documento word.
' Nel documento Word sono presenti due tabelle:
' 1 - dati clienti
' 2 - dettaglio documenti del cliente
'
Public Const modelloword = "C:\circolarizzazione_crediti\ClientiEstrattoConto.dot"
Public Const cartellasalvataggio = "C:\circolarizzazione_crediti\EC\"
'
Dim appWD As Word.Application
Dim nomedoc, tabtesta, tabdettaglio, docrighe
Dim docaperto
'
Sub vaiwordn(nomedocumento) ' crea nuovo documeto Word
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
'
With appWD
.Documents.Add Template:=nomedocumento, NewTemplate:=False, DocumentType:=0
nomedoc = .ActiveDocument.Name
.Activate
End With
'
appWD.Documents(nomedoc).Activate
'
' setta il riferimento al documento
Set tabtesta = appWD.Documents(nomedoc).Tables(1) ' dati del cliente (ragione sociale, indirizzo etc.
Set tabdettaglio = appWD.Documents(nomedoc).Tables(2) ' tabella dettaglio del credito
'
docaperto = 1
'
End Sub
'
Sub salvadoc(salvaconnome) ' salva documento
'
appWD.ActiveDocument.SaveAs salvaconnome
' applicazione visibile
appWD.Visible = True
' a tutto shermo
appWD.WindowState = wdWindowStateMaximize
' attivato
appWD.Application.Activate
'
appWD.ActiveDocument.Close
appWD.Quit
Set appWD = Nothing
docaperto = 0 ' flag
End Sub
'
Sub PreparaEstrattoConto()
Dim quanterighe, contarighe, foglio, conto, contoprecedente, colonnai, docreati
Dim nomefoglio As String, riga, nomedocumento As String, salvaconnome As String, importo, totale
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
nomedocumento = modelloword ' utilizza un modello di Word
colonnai = "C" ' colonna contenete il campo di controllo - tipo codice cliente/partita iva
'
contoprecedente = 0
docreati = 0
totale = 0 ' totale delle partite del cliente
importo = 0
'
contarighe = 2 ' parte dalla seconda riga del foglio
While contarighe <= quanterighe
conto = Trim(foglio.Cells(contarighe, colonnai).Value)
If Len(conto) > 0 Then ' verifica che la cella non sia vuota
If conto <> contoprecedente Then ' verifica il cambio del codice cliente/partita iva
If docreati > 0 Then ' salva il documento con il valore della cella chiave
salvaconnome = cartellasalvataggio & contoprecedente
Call salvadoc(salvaconnome)
End If
Call vaiwordn(nomedocumento)
docreati = docreati + 1
tabtesta.Cell(Row:=1, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "D").Value ' ragione sociale
tabtesta.Cell(Row:=2, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "R").Value ' indirizzo
tabtesta.Cell(Row:=3, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "T").Value ' città
contoprecedente = conto
End If
docrighe = tabdettaglio.Rows.Count ' conteggio righe della tabella dettaglio
'
tabdettaglio.Cell(Row:=docrighe, Column:=1).Select
tabdettaglio.Rows.Add ' aggiunge righe alla tabella Word contente il dettaglio dei dati
tabdettaglio.Cell(Row:=docrighe, Column:=1).Range.InsertAfter Text:=foglio.Cells(contarighe, "B").Value ' data scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=2).Range.InsertAfter Text:=foglio.Cells(contarighe, "F").Value ' causale scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=3).Range.InsertAfter Text:=foglio.Cells(contarighe, "K").Value ' totale documento
tabdettaglio.Cell(Row:=docrighe, Column:=4).Range.InsertAfter Text:=foglio.Cells(contarighe, "L").Value ' importo scadenza
tabdettaglio.Cell(Row:=docrighe, Column:=5).Range.InsertAfter Text:=foglio.Cells(contarighe, "M").Value ' numero documento
tabdettaglio.Cell(Row:=docrighe, Column:=6).Range.InsertAfter Text:=foglio.Cells(contarighe, "G").Value ' serie documento
tabdettaglio.Cell(Row:=docrighe, Column:=7).Range.InsertAfter Text:=foglio.Cells(contarighe, "A").Value ' data documento
docrighe = docrighe + 1
'
End If
contarighe = contarighe + 1
Wend
'
'
If docaperto = 1 Then ' contatore di documento ancora aperto
salvaconnome = cartellasalvataggio & contoprecedente
Call salvadoc(salvaconnome)
End If
'
'Set appWD = Nothing
'appWD.ActiveDocument.Save
'appWD.Quit
'
End Sub
'
mercoledì 10 luglio 2013
inserisci in word
Attribute VB_Name = "inserisci_in_word"
'
Option Explicit
'
' vba - Excel to Word.
' attivare strumenti/riferimenti Microsoft Word Office Library
' i nomi presenti nella prima riga del foglio servono come chiavi di ricerca in Word.
' es. A1 = "indirizzo" in Word viene ricercata la parola: "%%indirizzo%%".
' in Word la parola "%%indirizzo%%" viene sostituita con il valore contenuto nella cella attiva del foglio Excel.
' la procedura cerca di inserire i valori di tutte le colonne.
'
'
Sub usocambiainword()
Dim nomefoglio As String, riga, nomedocumento As String, salvaconnome As String
nomefoglio = CStr(ActiveSheet.Name)
riga = ActiveCell.Row
nomedocumento = CStr("C:\dato.doc")
salvaconnome = CStr("C:\datosalvato.doc")
Call cambiainword(nomefoglio, riga, nomedocumento, salvaconnome)
'
End Sub
'
Sub cambiainword(nomefoglio As String, riga, nomedocumento As String, salvaconnome As String)
'
Dim appwd As Object, colkey As Integer, coldato As Integer
Dim tipodocWord
'
Set appwd = CreateObject("Word.Application")
appwd.Visible = True
' applicazione invisibile
' appwd.Visible = False
' ingrandisco la finestra
' appwd.WindowState = wdWindowStateMaximize
'
tipodocWord = Right(nomedocumento, 4)
If tipodocWord = ".dot" Then
' documento da modello .dot
appwd.Documents.Add nomedocumento
End If
If tipodocWord = ".doc" Then
' apro il documento
appwd.Documents.Open (nomedocumento)
End If
'
Dim parolachiave As String, testo As String, foglio
Dim quantecolonne, contacolonne
'
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
'
For contacolonne = 1 To quantecolonne
parolachiave = Trim(foglio.Cells(1, contacolonne))
testo = Trim(foglio.Cells(riga, contacolonne))
parolachiave = "%%" & parolachiave & "%%"
With appwd.ActiveDocument.Range.Find
.Text = parolachiave
.Replacement.Text = testo
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll ' tutte le espressioni vengono sostituite.
End With
Next contacolonne
' stampo il documento
' appwd.ActiveDocument.PrintOut
' salvo il documento.
appwd.ActiveDocument.SaveAs salvaconnome
' visualizzo il documento
appwd.Visible = True
' finestra al massimo
appwd.WindowState = wdWindowStateMaximize
' attivo
appwd.Application.Activate
'
End Sub
'
Option Explicit
'
' vba - Excel to Word.
' attivare strumenti/riferimenti Microsoft Word Office Library
' i nomi presenti nella prima riga del foglio servono come chiavi di ricerca in Word.
' es. A1 = "indirizzo" in Word viene ricercata la parola: "%%indirizzo%%".
' in Word la parola "%%indirizzo%%" viene sostituita con il valore contenuto nella cella attiva del foglio Excel.
' la procedura cerca di inserire i valori di tutte le colonne.
'
'
Sub usocambiainword()
Dim nomefoglio As String, riga, nomedocumento As String, salvaconnome As String
nomefoglio = CStr(ActiveSheet.Name)
riga = ActiveCell.Row
nomedocumento = CStr("C:\dato.doc")
salvaconnome = CStr("C:\datosalvato.doc")
Call cambiainword(nomefoglio, riga, nomedocumento, salvaconnome)
'
End Sub
'
Sub cambiainword(nomefoglio As String, riga, nomedocumento As String, salvaconnome As String)
'
Dim appwd As Object, colkey As Integer, coldato As Integer
Dim tipodocWord
'
Set appwd = CreateObject("Word.Application")
appwd.Visible = True
' applicazione invisibile
' appwd.Visible = False
' ingrandisco la finestra
' appwd.WindowState = wdWindowStateMaximize
'
tipodocWord = Right(nomedocumento, 4)
If tipodocWord = ".dot" Then
' documento da modello .dot
appwd.Documents.Add nomedocumento
End If
If tipodocWord = ".doc" Then
' apro il documento
appwd.Documents.Open (nomedocumento)
End If
'
Dim parolachiave As String, testo As String, foglio
Dim quantecolonne, contacolonne
'
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
'
For contacolonne = 1 To quantecolonne
parolachiave = Trim(foglio.Cells(1, contacolonne))
testo = Trim(foglio.Cells(riga, contacolonne))
parolachiave = "%%" & parolachiave & "%%"
With appwd.ActiveDocument.Range.Find
.Text = parolachiave
.Replacement.Text = testo
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll ' tutte le espressioni vengono sostituite.
End With
Next contacolonne
' stampo il documento
' appwd.ActiveDocument.PrintOut
' salvo il documento.
appwd.ActiveDocument.SaveAs salvaconnome
' visualizzo il documento
appwd.Visible = True
' finestra al massimo
appwd.WindowState = wdWindowStateMaximize
' attivo
appwd.Application.Activate
'
End Sub
query tabella html
Attribute VB_Name = "query_tabella_html"
'
Option Explicit
'
' vba - Excel
' crea query su tutte le tabelle di una pagina htlm di un sito.
' la query rimane collegata alla pagina. La query può essere aggiornata quando si vuole.
' uso: call QueryTabellaHtml("http://www.<sito>.<suffisso>/pag-115.html")
'
Sub QueryTabellaHtml(paginahtml)
'
'
Sheets.Add
Range("A1").Select
Application.left = 115.75
Application.top = 62.5
'With ActiveSheet.QueryTables.Add(Connection:="URL;C:\TEMP\GRIGLIA1.HTML", Destination:=Range("A1"))
With ActiveSheet.QueryTables.Add(Connection:="URL;" & paginahtml, Destination:=Range("A1"))
.Name = "GRIGLIA1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables ' tutte le tabelle
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
'
End Sub
'
'
Option Explicit
'
' vba - Excel
' crea query su tutte le tabelle di una pagina htlm di un sito.
' la query rimane collegata alla pagina. La query può essere aggiornata quando si vuole.
' uso: call QueryTabellaHtml("http://www.<sito>.<suffisso>/pag-115.html")
'
Sub QueryTabellaHtml(paginahtml)
'
'
Sheets.Add
Range("A1").Select
Application.left = 115.75
Application.top = 62.5
'With ActiveSheet.QueryTables.Add(Connection:="URL;C:\TEMP\GRIGLIA1.HTML", Destination:=Range("A1"))
With ActiveSheet.QueryTables.Add(Connection:="URL;" & paginahtml, Destination:=Range("A1"))
.Name = "GRIGLIA1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables ' tutte le tabelle
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
'
End Sub
'
martedì 9 luglio 2013
leggi ecofee metel
Attribute VB_Name = "leggi_ecofee_metel"
'
Option Explicit
'
' vba - Excel
' Legge ed importa un file di testo con il tracciato record
' Ecofee RAEE Metel
'
'
Sub leggiEcoFeeMetel()
'
Dim percorso
'
ChDir ("\\Caem02\listini")
percorso = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If percorso = False Then
Exit Sub
End If
'
Sheets.Add
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & percorso, Destination:= _
Range("A1"))
.Name = "ECOFEEMETEL"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2)
.TextFileFixedColumnWidths = Array(3, 16, 20, 9, 30, 30, 70, 5, 8, 7, 3, 70, 29)
.Refresh BackgroundQuery:=False
End With
' testata
Dim foglio
Set foglio = Sheets(ActiveSheet.Name)
foglio.Cells(1, 1) = "Marchio"
foglio.Cells(1, 2) = "Codice articolo"
foglio.Cells(1, 3) = "Tipo tassa"
foglio.Cells(1, 4) = "Peso netto"
foglio.Cells(1, 5) = "Consorzio"
foglio.Cells(1, 6) = "Codice Fee"
foglio.Cells(1, 7) = "Descrizione Fee"
foglio.Cells(1, 8) = "Quantità Fee"
foglio.Cells(1, 9) = "Importo singolo Fee"
foglio.Cells(1, 10) = "Percentuale Fee"
foglio.Cells(1, 11) = "Soggetto a IVA o esenzione"
foglio.Cells(1, 12) = "Categoria merceologica"
foglio.Cells(1, 13) = "Filler"
' ' dividi
Dim quanterighe, contarighe, prezzonetto, nprezzonetto, divisore, importofee, nimportofee
Dim percentualefee, npercentualefee
quanterighe = ActiveSheet.UsedRange.Rows.Count
For contarighe = 1 To quanterighe
prezzonetto = ActiveSheet.Cells(contarighe, 4)
importofee = ActiveSheet.Cells(contarighe, 9)
percentualefee = ActiveSheet.Cells(contarighe, 10)
'
divisore = 1000
If IsNull(prezzonetto) = False And IsNumeric(prezzonetto) = True Then
nprezzonetto = prezzonetto / divisore
ActiveSheet.Cells(contarighe, 4) = nprezzonetto
End If
'
divisore = 10000
If IsNull(importofee) = False And IsNumeric(importofee) = True Then
nimportofee = importofee / divisore
ActiveSheet.Cells(contarighe, 9) = nimportofee
End If
'
divisore = 10000
If IsNull(percentualefee) = False And IsNumeric(percentualefee) = True Then
npercentualefee = percentualefee / divisore
ActiveSheet.Cells(contarighe, 10) = npercentualefee
End If
'
Next
'
Columns("D:D").Select
Selection.NumberFormat = "#,##0.000"
Columns("I:I").Select
Selection.NumberFormat = "#,##0.0000"
Columns("J:J").Select
' Selection.NumberFormat = "0.0000%"
'
Cells.Select
Cells.EntireColumn.AutoFit
Range("A2").Select
Range("A2").Activate
'
End Sub
'
Option Explicit
'
' vba - Excel
' Legge ed importa un file di testo con il tracciato record
' Ecofee RAEE Metel
'
'
Sub leggiEcoFeeMetel()
'
Dim percorso
'
ChDir ("\\Caem02\listini")
percorso = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If percorso = False Then
Exit Sub
End If
'
Sheets.Add
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & percorso, Destination:= _
Range("A1"))
.Name = "ECOFEEMETEL"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2)
.TextFileFixedColumnWidths = Array(3, 16, 20, 9, 30, 30, 70, 5, 8, 7, 3, 70, 29)
.Refresh BackgroundQuery:=False
End With
' testata
Dim foglio
Set foglio = Sheets(ActiveSheet.Name)
foglio.Cells(1, 1) = "Marchio"
foglio.Cells(1, 2) = "Codice articolo"
foglio.Cells(1, 3) = "Tipo tassa"
foglio.Cells(1, 4) = "Peso netto"
foglio.Cells(1, 5) = "Consorzio"
foglio.Cells(1, 6) = "Codice Fee"
foglio.Cells(1, 7) = "Descrizione Fee"
foglio.Cells(1, 8) = "Quantità Fee"
foglio.Cells(1, 9) = "Importo singolo Fee"
foglio.Cells(1, 10) = "Percentuale Fee"
foglio.Cells(1, 11) = "Soggetto a IVA o esenzione"
foglio.Cells(1, 12) = "Categoria merceologica"
foglio.Cells(1, 13) = "Filler"
' ' dividi
Dim quanterighe, contarighe, prezzonetto, nprezzonetto, divisore, importofee, nimportofee
Dim percentualefee, npercentualefee
quanterighe = ActiveSheet.UsedRange.Rows.Count
For contarighe = 1 To quanterighe
prezzonetto = ActiveSheet.Cells(contarighe, 4)
importofee = ActiveSheet.Cells(contarighe, 9)
percentualefee = ActiveSheet.Cells(contarighe, 10)
'
divisore = 1000
If IsNull(prezzonetto) = False And IsNumeric(prezzonetto) = True Then
nprezzonetto = prezzonetto / divisore
ActiveSheet.Cells(contarighe, 4) = nprezzonetto
End If
'
divisore = 10000
If IsNull(importofee) = False And IsNumeric(importofee) = True Then
nimportofee = importofee / divisore
ActiveSheet.Cells(contarighe, 9) = nimportofee
End If
'
divisore = 10000
If IsNull(percentualefee) = False And IsNumeric(percentualefee) = True Then
npercentualefee = percentualefee / divisore
ActiveSheet.Cells(contarighe, 10) = npercentualefee
End If
'
Next
'
Columns("D:D").Select
Selection.NumberFormat = "#,##0.000"
Columns("I:I").Select
Selection.NumberFormat = "#,##0.0000"
Columns("J:J").Select
' Selection.NumberFormat = "0.0000%"
'
Cells.Select
Cells.EntireColumn.AutoFit
Range("A2").Select
Range("A2").Activate
'
End Sub
m accoda foglio riepilogo
Attribute VB_Name = "m_accoda_foglio_riepilogo"
'
Option Explicit
'
' vba - excel
' acconta il contenuto de foglio attivo
' ad un foglio denominato riepilogo
'
Sub AccodaFoglioRiepilogo()
Dim quanterighe, contarighe, foglio, contacolonne, quantecolonne
Dim nomefoglio, sfoglio, sriga
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
Set sfoglio = Sheets("riepilogo")
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
sriga = Range(sfoglio.UsedRange.Cells(sfoglio.UsedRange.Rows.Count, 1).Address).Row
sriga = sriga + 1
'
contarighe = 1
While contarighe <= quanterighe
sriga = sriga + 1
contacolonne = 1
While contacolonne <= quantecolonne
sfoglio.Cells(sriga, contacolonne).Value = foglio.Cells(contarighe, contacolonne).Value
contacolonne = contacolonne + 1
Wend
contarighe = contarighe + 1
Wend
'
sfoglio.Activate
foglio.Delete
'
End Sub
'
Option Explicit
'
' vba - excel
' acconta il contenuto de foglio attivo
' ad un foglio denominato riepilogo
'
Sub AccodaFoglioRiepilogo()
Dim quanterighe, contarighe, foglio, contacolonne, quantecolonne
Dim nomefoglio, sfoglio, sriga
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
Set sfoglio = Sheets("riepilogo")
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
sriga = Range(sfoglio.UsedRange.Cells(sfoglio.UsedRange.Rows.Count, 1).Address).Row
sriga = sriga + 1
'
contarighe = 1
While contarighe <= quanterighe
sriga = sriga + 1
contacolonne = 1
While contacolonne <= quantecolonne
sfoglio.Cells(sriga, contacolonne).Value = foglio.Cells(contarighe, contacolonne).Value
contacolonne = contacolonne + 1
Wend
contarighe = contarighe + 1
Wend
'
sfoglio.Activate
foglio.Delete
'
End Sub
m salva allegati email
Attribute VB_Name = "m_salva_allegati_email"
'
Option Explicit
'
' vba - Outlook 2002
' salva gli allegati delle email selezionate.
'
Public Sub SalvaAllegatiEmail()
'
Dim objOL As Outlook.Application
Dim objMsg As Object, archivio
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long, domanda As String
Dim strFile As String
Dim strFolder As String
Dim soggetto
'
Dim fs, esiste As Boolean, tentativi As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
'
On Error Resume Next
' Crea oggetto Outlook Application.
Set objOL = CreateObject("Outlook.Application")
' riferimento messaggi selezionati.
Set objSelection = objOL.ActiveExplorer.Selection
' strFolder = Application.GetOpenFilename("Tutti i file (*.*), *.*")
' scelta della cartella dove salvare gli allegati
strFolder = InputBox("scelta cartella", "scelta cartella", "c:\allegati-posta")
If strFolder = "" Then
MsgBox "cartella non trovata!", vbOKOnly
GoTo ExitSub
End If
'
strFolder = strFolder & "\"
'
Dim style
style = vbYesNo + vbCritical + vbDefaultButton2 ' Definisce i pulsanti.
domanda = MsgBox("cancello allegati?", style, "scelta") ' scelta se cancellare gli allegati dopo il salvataggio
'
For Each objMsg In objSelection ' ciclo su tutti i messaggi
tentativi = 0
' serve per i messaggi nelle cartelle pubbliche o private
If objMsg.Class = 43 Or objMsg.Class = 45 Then
' riferimento agli allegati
Set objAttachments = objMsg.Attachments
'
'''MsgBox objMsg.HTMLBody
'
'MsgBox objMsg.Subject
'MsgBox "allegati: " & objAttachments.Count
lngCount = objAttachments.Count ' conteggio del numero di allegati
If lngCount > 0 Then
' ciclo su tutti gli allegati del messaggio.
For i = lngCount To 1 Step -1
' strFile = objAttachments.Item(i).FileName
soggetto = objMsg.Subject ' oggetto del messaggio
' MsgBox soggetto
' sostituisce i caratteri no utilizzabili nel nome di un file
soggetto = Replace(soggetto, "/", "-")
soggetto = Replace(soggetto, ".", "_")
soggetto = Replace(soggetto, "I:", "")
soggetto = Replace(soggetto, "I:", "")
soggetto = Replace(soggetto, ":", "")
'strFile = objAttachments.Item(i).FileName
' crea il mome del file - concatena oggetto del messaggio con il nome del file
strFile = soggetto & "-" & objAttachments.Item(i).FileName
archivio = strFile
' MsgBox strFile
' crea il percorso di salvataggio allegato.
strFile = strFolder & strFile
' verifica se esiste un file con il medesimo nome
esiste = fs.FileExists(strFile)
' MsgBox esiste
'
While esiste = True ' nel caso esista lo stesso nome del file incrementa il contatore
tentativi = tentativi + 1
strFile = strFolder & objMsg.Subject & "-allegato-" & tentativi & archivio
esiste = fs.FileExists(strFile)
Wend
' salva allegato.
objAttachments.Item(i).SaveAsFile strFile
'
If domanda = vbYes Then ' nel caso si sia scelto di cancellare gli allegati.
' cancella allegato.
objAttachments.Item(i).Delete
End If
'
Next i
End If
objMsg.Save
End If
Next
'
ExitSub:
Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
'
End Sub
'
Option Explicit
'
' vba - Outlook 2002
' salva gli allegati delle email selezionate.
'
Public Sub SalvaAllegatiEmail()
'
Dim objOL As Outlook.Application
Dim objMsg As Object, archivio
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long, domanda As String
Dim strFile As String
Dim strFolder As String
Dim soggetto
'
Dim fs, esiste As Boolean, tentativi As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
'
On Error Resume Next
' Crea oggetto Outlook Application.
Set objOL = CreateObject("Outlook.Application")
' riferimento messaggi selezionati.
Set objSelection = objOL.ActiveExplorer.Selection
' strFolder = Application.GetOpenFilename("Tutti i file (*.*), *.*")
' scelta della cartella dove salvare gli allegati
strFolder = InputBox("scelta cartella", "scelta cartella", "c:\allegati-posta")
If strFolder = "" Then
MsgBox "cartella non trovata!", vbOKOnly
GoTo ExitSub
End If
'
strFolder = strFolder & "\"
'
Dim style
style = vbYesNo + vbCritical + vbDefaultButton2 ' Definisce i pulsanti.
domanda = MsgBox("cancello allegati?", style, "scelta") ' scelta se cancellare gli allegati dopo il salvataggio
'
For Each objMsg In objSelection ' ciclo su tutti i messaggi
tentativi = 0
' serve per i messaggi nelle cartelle pubbliche o private
If objMsg.Class = 43 Or objMsg.Class = 45 Then
' riferimento agli allegati
Set objAttachments = objMsg.Attachments
'
'''MsgBox objMsg.HTMLBody
'
'MsgBox objMsg.Subject
'MsgBox "allegati: " & objAttachments.Count
lngCount = objAttachments.Count ' conteggio del numero di allegati
If lngCount > 0 Then
' ciclo su tutti gli allegati del messaggio.
For i = lngCount To 1 Step -1
' strFile = objAttachments.Item(i).FileName
soggetto = objMsg.Subject ' oggetto del messaggio
' MsgBox soggetto
' sostituisce i caratteri no utilizzabili nel nome di un file
soggetto = Replace(soggetto, "/", "-")
soggetto = Replace(soggetto, ".", "_")
soggetto = Replace(soggetto, "I:", "")
soggetto = Replace(soggetto, "I:", "")
soggetto = Replace(soggetto, ":", "")
'strFile = objAttachments.Item(i).FileName
' crea il mome del file - concatena oggetto del messaggio con il nome del file
strFile = soggetto & "-" & objAttachments.Item(i).FileName
archivio = strFile
' MsgBox strFile
' crea il percorso di salvataggio allegato.
strFile = strFolder & strFile
' verifica se esiste un file con il medesimo nome
esiste = fs.FileExists(strFile)
' MsgBox esiste
'
While esiste = True ' nel caso esista lo stesso nome del file incrementa il contatore
tentativi = tentativi + 1
strFile = strFolder & objMsg.Subject & "-allegato-" & tentativi & archivio
esiste = fs.FileExists(strFile)
Wend
' salva allegato.
objAttachments.Item(i).SaveAsFile strFile
'
If domanda = vbYes Then ' nel caso si sia scelto di cancellare gli allegati.
' cancella allegato.
objAttachments.Item(i).Delete
End If
'
Next i
End If
objMsg.Save
End If
Next
'
ExitSub:
Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
'
End Sub
martedì 2 luglio 2013
m leggi intestazione internet
Attribute VB_Name = "m_leggi_intestazione_internet"
'
Option Explicit
'
' vba per Outlook
' visualizza intesazioni internet
' di un messaggio di posta elettronica.
' cartelle pubbliche.
' Outlook 2002
'
Sub LeggiIntestazioneInterneteMail()
'
Const PR_SENDER_EMAIL_ADDRESS = &HC1F001E
Const PR_TRANSPORT_MESSAGE_HEADERS = &H7D001E
'
Dim oMsgColl, quantimessaggi, testo
Dim mittente, emailmittente, oggettomsg, intestazionemsg
Dim MAPIobj As MAPI.Session, MAPIfold As MAPI.Folder
Dim oMessage As MAPI.Message
Set MAPIobj = New MAPI.Session
MAPIobj.Logon , , False, False
Set MAPIfold = MAPIobj.InfoStores("Cartelle pubbliche").RootFolder.Folders("Tutte le cartelle pubbliche")
Set MAPIfold = MAPIfold.Folders("Amministrazione")
'
Set oMsgColl = MAPIfold.Messages
quantimessaggi = oMsgColl.Count
'
For Each oMessage In oMsgColl
testo = ""
With oMessage
mittente = .Sender
oggettomsg = .Subject
emailmittente = .Fields(PR_SENDER_EMAIL_ADDRESS)
intestazionemsg = .Fields(PR_TRANSPORT_MESSAGE_HEADERS)
'
testo = testo & "mittente: " & mittente & vbCrLf
testo = testo & "email mittente: " & emailmittente & vbCrLf
testo = testo & "oggetto msg: " & oggettomsg & vbCrLf
testo = testo & "intestazione msg: " & intestazionemsg & vbCrLf
End With
MsgBox testo
Next
'
'
End Sub
'
'
Option Explicit
'
' vba per Outlook
' visualizza intesazioni internet
' di un messaggio di posta elettronica.
' cartelle pubbliche.
' Outlook 2002
'
Sub LeggiIntestazioneInterneteMail()
'
Const PR_SENDER_EMAIL_ADDRESS = &HC1F001E
Const PR_TRANSPORT_MESSAGE_HEADERS = &H7D001E
'
Dim oMsgColl, quantimessaggi, testo
Dim mittente, emailmittente, oggettomsg, intestazionemsg
Dim MAPIobj As MAPI.Session, MAPIfold As MAPI.Folder
Dim oMessage As MAPI.Message
Set MAPIobj = New MAPI.Session
MAPIobj.Logon , , False, False
Set MAPIfold = MAPIobj.InfoStores("Cartelle pubbliche").RootFolder.Folders("Tutte le cartelle pubbliche")
Set MAPIfold = MAPIfold.Folders("Amministrazione")
'
Set oMsgColl = MAPIfold.Messages
quantimessaggi = oMsgColl.Count
'
For Each oMessage In oMsgColl
testo = ""
With oMessage
mittente = .Sender
oggettomsg = .Subject
emailmittente = .Fields(PR_SENDER_EMAIL_ADDRESS)
intestazionemsg = .Fields(PR_TRANSPORT_MESSAGE_HEADERS)
'
testo = testo & "mittente: " & mittente & vbCrLf
testo = testo & "email mittente: " & emailmittente & vbCrLf
testo = testo & "oggetto msg: " & oggettomsg & vbCrLf
testo = testo & "intestazione msg: " & intestazionemsg & vbCrLf
End With
MsgBox testo
Next
'
'
End Sub
'
venerdì 19 aprile 2013
crea rubrica css html
Attribute VB_Name = "crea_rubrica_css_html"
'
Option Explicit
'
' vba - excel
' converte il foglio attivo in una pagina html
' scansiona tutte le righe del foglio
' alla tabella html viene viene formatta con css style
'
Sub CreaRubricaHtmlcss()
'
Dim txtcella, contarighe, quanterighe, riga, testo, fs, a, testotd
Dim quantecolonne, contacolonne, cartellap, nomefoglio, cartella, messaggio, foglio, tiporiga
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
cartellap = "C:\"
cartella = cartellap & nomefoglio & ".html"
messaggio = ""
messaggio = "il nome della rubrica e': " & nomefoglio & vbCrLf
messaggio = messaggio & "(il mome del foglio attivo)" & vbCrLf
messaggio = messaggio & "cartella in cui sara' salvata la rubrica: " & vbCrLf
messaggio = messaggio & cartellap
MsgBox messaggio
'
Set fs = CreateObject("Scripting.FileSystemObject")
'
Set a = fs.CreateTextFile(cartella, True)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
testotd = "<TD>"
' intestazione
a.WriteLine ("<HTML><HEAD>")
a.WriteLine ("<TITLE>")
a.WriteLine (nomefoglio)
a.WriteLine ("</TITLE>")
' recupero codice html style
testo = memocodicecssstyle
a.WriteLine (testo)
'
a.WriteLine ("</HEAD>")
testo = "<BODY>"
a.WriteLine (testo)
a.WriteLine ("<CENTER><HR><BR> ")
a.WriteLine (nomefoglio)
a.WriteLine ("<HR> <Table id=""tabelladati"">")
' intestazione - utilizza la prima riga del foglio come intestazione
a.WriteLine ("<TR>")
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(1, contacolonne).Value
testo = "<TH>" & txtcella & "</TH>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
' scrive tutte le righe e colonne del foglio
For contarighe = 2 To quanterighe ' parte dalla seconda riga
tiporiga = contarighe Mod 2 ' determina quale style applicare
If tiporiga = 0 Then
testo = "<TR>"
Else
testo = "<TR class=""alt"">"
End If
a.WriteLine (testo)
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(contarighe, contacolonne).Value
testo = testotd & txtcella & "</TD>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
Next contarighe
'
a.WriteLine ("</Table><BR><HR></FONT></CENTER></BODY><HTML>")
a.Close
'
End Sub
'
' codice css style
Function memocodicecssstyle()
Dim codicecss
codicecss = codicecss & "<style>" & vbCrLf
codicecss = codicecss & "#tabelladati" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-family:""Trebuchet MS"", Arial, Helvetica, sans-serif;" & vbCrLf
codicecss = codicecss & "width:100%;" & vbCrLf
codicecss = codicecss & "border-collapse:collapse;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati td, #tabelladati th" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-size:1em;" & vbCrLf
codicecss = codicecss & "border:1px solid #98bf21;" & vbCrLf
codicecss = codicecss & "padding:3px 7px 2px 7px;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati th" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-size:1.1em;" & vbCrLf
codicecss = codicecss & "text-align:left;" & vbCrLf
codicecss = codicecss & "padding-top:5px;" & vbCrLf
codicecss = codicecss & "padding-bottom:4px;" & vbCrLf
codicecss = codicecss & "background-color:#A7C942;" & vbCrLf
codicecss = codicecss & "color:#ffffff;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati tr.alt td" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "color:#000000;" & vbCrLf
codicecss = codicecss & "background-color:#EAF2D3;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "</style>" & vbCrLf
'
memocodicecssstyle = codicecss
'
End Function
'
Option Explicit
'
' vba - excel
' converte il foglio attivo in una pagina html
' scansiona tutte le righe del foglio
' alla tabella html viene viene formatta con css style
'
Sub CreaRubricaHtmlcss()
'
Dim txtcella, contarighe, quanterighe, riga, testo, fs, a, testotd
Dim quantecolonne, contacolonne, cartellap, nomefoglio, cartella, messaggio, foglio, tiporiga
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
cartellap = "C:\"
cartella = cartellap & nomefoglio & ".html"
messaggio = ""
messaggio = "il nome della rubrica e': " & nomefoglio & vbCrLf
messaggio = messaggio & "(il mome del foglio attivo)" & vbCrLf
messaggio = messaggio & "cartella in cui sara' salvata la rubrica: " & vbCrLf
messaggio = messaggio & cartellap
MsgBox messaggio
'
Set fs = CreateObject("Scripting.FileSystemObject")
'
Set a = fs.CreateTextFile(cartella, True)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
testotd = "<TD>"
' intestazione
a.WriteLine ("<HTML><HEAD>")
a.WriteLine ("<TITLE>")
a.WriteLine (nomefoglio)
a.WriteLine ("</TITLE>")
' recupero codice html style
testo = memocodicecssstyle
a.WriteLine (testo)
'
a.WriteLine ("</HEAD>")
testo = "<BODY>"
a.WriteLine (testo)
a.WriteLine ("<CENTER><HR><BR> ")
a.WriteLine (nomefoglio)
a.WriteLine ("<HR> <Table id=""tabelladati"">")
' intestazione - utilizza la prima riga del foglio come intestazione
a.WriteLine ("<TR>")
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(1, contacolonne).Value
testo = "<TH>" & txtcella & "</TH>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
' scrive tutte le righe e colonne del foglio
For contarighe = 2 To quanterighe ' parte dalla seconda riga
tiporiga = contarighe Mod 2 ' determina quale style applicare
If tiporiga = 0 Then
testo = "<TR>"
Else
testo = "<TR class=""alt"">"
End If
a.WriteLine (testo)
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(contarighe, contacolonne).Value
testo = testotd & txtcella & "</TD>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
Next contarighe
'
a.WriteLine ("</Table><BR><HR></FONT></CENTER></BODY><HTML>")
a.Close
'
End Sub
'
' codice css style
Function memocodicecssstyle()
Dim codicecss
codicecss = codicecss & "<style>" & vbCrLf
codicecss = codicecss & "#tabelladati" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-family:""Trebuchet MS"", Arial, Helvetica, sans-serif;" & vbCrLf
codicecss = codicecss & "width:100%;" & vbCrLf
codicecss = codicecss & "border-collapse:collapse;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati td, #tabelladati th" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-size:1em;" & vbCrLf
codicecss = codicecss & "border:1px solid #98bf21;" & vbCrLf
codicecss = codicecss & "padding:3px 7px 2px 7px;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati th" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "font-size:1.1em;" & vbCrLf
codicecss = codicecss & "text-align:left;" & vbCrLf
codicecss = codicecss & "padding-top:5px;" & vbCrLf
codicecss = codicecss & "padding-bottom:4px;" & vbCrLf
codicecss = codicecss & "background-color:#A7C942;" & vbCrLf
codicecss = codicecss & "color:#ffffff;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "#tabelladati tr.alt td" & vbCrLf
codicecss = codicecss & "{" & vbCrLf
codicecss = codicecss & "color:#000000;" & vbCrLf
codicecss = codicecss & "background-color:#EAF2D3;" & vbCrLf
codicecss = codicecss & "}" & vbCrLf
codicecss = codicecss & "</style>" & vbCrLf
'
memocodicecssstyle = codicecss
'
End Function
crea rubrica html
Attribute VB_Name = "crea_rubrica_html"
'
Option Explicit
'
' vba - excel
' converte il foglio attivo in una pagina html
'
Sub CreaRubricaHtml()
'
Dim txtcella, contarighe, quanterighe, riga, testo, fs, a, testotd
Dim quantecolonne, contacolonne, cartellap, nomefoglio, cartella, messaggio, foglio
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
cartellap = "C:\"
cartella = cartellap & nomefoglio & ".html"
messaggio = "il nome della rubrica e': " & nomefoglio & vbCrLf
messaggio = messaggio & "(il mome del foglio attivo)" & vbCrLf
messaggio = messaggio & "cartella in cui sara' salvata la rubrica: " & vbCrLf
messaggio = messaggio & cartellap
MsgBox messaggio
'
Set fs = CreateObject("Scripting.FileSystemObject")
'
Set a = fs.CreateTextFile(cartella, True)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
testotd = "<TD ALIGN=" & Chr(34) & "left" & Chr(34) & " >"
' intestazione
a.WriteLine ("<HTML><HEAD><TITLE>")
a.WriteLine (nomefoglio)
a.WriteLine ("</TITLE></HEAD>")
testo = "<BODY bgcolor = " & Chr(34) & "#ccffff" & Chr(34) & ">"
a.WriteLine (testo)
a.WriteLine ("<CENTER><BR><HR><BR> ")
a.WriteLine (nomefoglio)
a.WriteLine ("<HR> <Table border>")
testo = "<FONT FACE=" & Chr(34) & "Arial" & Chr(34) & "SIZE=+1>"
a.WriteLine (testo)
' scrive tutte le righe e colonne
For contarighe = 1 To quanterighe
testo = "<TR VALIGN=" & Chr(34) & "bottom" & Chr(34) & ">"
a.WriteLine (testo)
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(contarighe, contacolonne).Value
testo = testotd & txtcella & "</TD>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
Next contarighe
a.WriteLine ("</Table><BR><HR></FONT></CENTER></BODY><HTML>")
a.Close
'
End Sub
'
Option Explicit
'
' vba - excel
' converte il foglio attivo in una pagina html
'
Sub CreaRubricaHtml()
'
Dim txtcella, contarighe, quanterighe, riga, testo, fs, a, testotd
Dim quantecolonne, contacolonne, cartellap, nomefoglio, cartella, messaggio, foglio
nomefoglio = ActiveSheet.Name
Set foglio = Sheets(nomefoglio)
cartellap = "C:\"
cartella = cartellap & nomefoglio & ".html"
messaggio = "il nome della rubrica e': " & nomefoglio & vbCrLf
messaggio = messaggio & "(il mome del foglio attivo)" & vbCrLf
messaggio = messaggio & "cartella in cui sara' salvata la rubrica: " & vbCrLf
messaggio = messaggio & cartellap
MsgBox messaggio
'
Set fs = CreateObject("Scripting.FileSystemObject")
'
Set a = fs.CreateTextFile(cartella, True)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
testotd = "<TD ALIGN=" & Chr(34) & "left" & Chr(34) & " >"
' intestazione
a.WriteLine ("<HTML><HEAD><TITLE>")
a.WriteLine (nomefoglio)
a.WriteLine ("</TITLE></HEAD>")
testo = "<BODY bgcolor = " & Chr(34) & "#ccffff" & Chr(34) & ">"
a.WriteLine (testo)
a.WriteLine ("<CENTER><BR><HR><BR> ")
a.WriteLine (nomefoglio)
a.WriteLine ("<HR> <Table border>")
testo = "<FONT FACE=" & Chr(34) & "Arial" & Chr(34) & "SIZE=+1>"
a.WriteLine (testo)
' scrive tutte le righe e colonne
For contarighe = 1 To quanterighe
testo = "<TR VALIGN=" & Chr(34) & "bottom" & Chr(34) & ">"
a.WriteLine (testo)
For contacolonne = 1 To quantecolonne
txtcella = foglio.Cells(contarighe, contacolonne).Value
testo = testotd & txtcella & "</TD>"
a.WriteLine (testo)
Next contacolonne
a.WriteLine ("</TR>")
Next contarighe
a.WriteLine ("</Table><BR><HR></FONT></CENTER></BODY><HTML>")
a.Close
'
End Sub
m estrai primo spazio dx
Attribute VB_Name = "m_estrai_primo_spazio_dx"
'
Option Explicit
'
'vba - excel
' Estrae Stringa Dopo il primo spazio a destra
'
'
Sub EstraeStringaDopoilPrimoSpazioDestra()
Dim quanterighe, contarighe, foglio, contenuto1, contenuto2, colonnadascansionare, scrivicolonna, presente
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
colonnadascansionare = ActiveCell.Column ' prende la colonna della cella attiva
scrivicolonna = colonnadascansionare + 1 ' colonna dove scrivere il valore trovato
'
contarighe = 1
While contarighe <= quanterighe
contenuto1 = Trim(foglio.Cells(contarighe, colonnadascansionare).Value)
contenuto2 = Trim(foglio.Cells(contarighe, scrivicolonna).Value)
presente = InStr(contenuto1, " ")
If presente > 0 Then
If Len(contenuto2) > 0 Then
ActiveSheet.Cells(contarighe, colonnadascansionare).Value = "'" & Trim(Left(contenuto1, presente))
ActiveSheet.Cells(contarighe, scrivicolonna).Value = "'" & contenuto2 & Trim(Mid(contenuto1, (presente + 1), (Len(contenuto1) - presente)))
Else
ActiveSheet.Cells(contarighe, colonnadascansionare).Value = "'" & Trim(Left(contenuto1, presente))
ActiveSheet.Cells(contarighe, scrivicolonna).Value = "'" & Trim(Mid(contenuto1, (presente + 1), (Len(contenuto1) - presente)))
End If
End If
contarighe = contarighe + 1
Wend
'
End Sub
'
'
'
Option Explicit
'
'vba - excel
' Estrae Stringa Dopo il primo spazio a destra
'
'
Sub EstraeStringaDopoilPrimoSpazioDestra()
Dim quanterighe, contarighe, foglio, contenuto1, contenuto2, colonnadascansionare, scrivicolonna, presente
Set foglio = Sheets(ActiveSheet.Name)
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
colonnadascansionare = ActiveCell.Column ' prende la colonna della cella attiva
scrivicolonna = colonnadascansionare + 1 ' colonna dove scrivere il valore trovato
'
contarighe = 1
While contarighe <= quanterighe
contenuto1 = Trim(foglio.Cells(contarighe, colonnadascansionare).Value)
contenuto2 = Trim(foglio.Cells(contarighe, scrivicolonna).Value)
presente = InStr(contenuto1, " ")
If presente > 0 Then
If Len(contenuto2) > 0 Then
ActiveSheet.Cells(contarighe, colonnadascansionare).Value = "'" & Trim(Left(contenuto1, presente))
ActiveSheet.Cells(contarighe, scrivicolonna).Value = "'" & contenuto2 & Trim(Mid(contenuto1, (presente + 1), (Len(contenuto1) - presente)))
Else
ActiveSheet.Cells(contarighe, colonnadascansionare).Value = "'" & Trim(Left(contenuto1, presente))
ActiveSheet.Cells(contarighe, scrivicolonna).Value = "'" & Trim(Mid(contenuto1, (presente + 1), (Len(contenuto1) - presente)))
End If
End If
contarighe = contarighe + 1
Wend
'
End Sub
'
'
m cancella su valore riga
Attribute VB_Name = "m_cancella_su_valore_riga"
'
Option Explicit
'
' vba - excel
' cancella righe che contegono il valore della cella attiva
'
Sub CancellaRigheConValoreCorrente()
'
Dim ColonnaAttiva, corrente As String, quanterighe, contarighe
Dim valore As String, foglio
Set foglio = Sheets(ActiveSheet.Name)
ColonnaAttiva = ActiveCell.Column
valore = Trim(CStr(ActiveCell.Value))
'
Application.Cursor = xlWait
Application.ScreenUpdating = False
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
'
For contarighe = quanterighe To 1 Step -1 ' conteggio righe usate
corrente = Trim(CStr(foglio.Cells(contarighe, ColonnaAttiva).Value))
If corrente = valore Then
foglio.Rows(contarighe).Delete
End If
Next contarighe
'
Application.ScreenUpdating = True
Application.Cursor = xlDefault
'
End Sub
'
Option Explicit
'
' vba - excel
' cancella righe che contegono il valore della cella attiva
'
Sub CancellaRigheConValoreCorrente()
'
Dim ColonnaAttiva, corrente As String, quanterighe, contarighe
Dim valore As String, foglio
Set foglio = Sheets(ActiveSheet.Name)
ColonnaAttiva = ActiveCell.Column
valore = Trim(CStr(ActiveCell.Value))
'
Application.Cursor = xlWait
Application.ScreenUpdating = False
'
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
'
For contarighe = quanterighe To 1 Step -1 ' conteggio righe usate
corrente = Trim(CStr(foglio.Cells(contarighe, ColonnaAttiva).Value))
If corrente = valore Then
foglio.Rows(contarighe).Delete
End If
Next contarighe
'
Application.ScreenUpdating = True
Application.Cursor = xlDefault
'
End Sub
martedì 9 aprile 2013
m scrivi ps pdf campi
Attribute VB_Name = "m_scrivi_ps_pdf_campi"
'
Option Explicit
'
' crea griglia editabile per file pdf
' genera un file in formato PS-postscript
' tramite Ghostscript si crea il file in formato PDF
'
Sub ScriviFilePsPdfCampiEditabili()
Dim orizzontale, verticale, altezzacampo, lunghezzacampo
Dim contaaltezza, contacampi
Dim marginesinistro, partida, s As String
Dim lunghezzacampi, nomecampi, destinatarioemail
destinatarioemail = InputBox("destinatario email", "scelta", "")
Dim x, spostati
altezzacampo = 20
'lunghezzacampo = 30
orizzontale = 595 ' formato pagina a4
verticale = 842 ' formato pagina a4
marginesinistro = 21
partida = verticale - altezzacampo - altezzacampo - altezzacampo
contacampi = 0
'
nomecampi = Array("", "qta", "articolo", "descrizione", "nota", "note")
'
lunghezzacampi = Array(0, 35, 150, 250, 45, 70)
'
s = ""
s = s & "%!PS-Adobe-3.0 EPSF-3.0" & vbCrLf
s = s & "%%BoundingBox: 0 0 72 72" & vbCrLf
s = s & "%%EndComments" & vbCrLf
s = s & "%%BeginProlog /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse " & "[ {ThisPage} << /Trans << /S /Dissolve >> >> /PUT pdfmark" & vbCrLf
s = s & "%%EndProlog" & vbCrLf
s = s & " " & vbCrLf
s = s & "%%BeginSetup" & vbCrLf
s = s & "%%EndSetup" & vbCrLf
s = s & " " & vbCrLf
s = s & "%%BeginPage:" & vbCrLf
s = s & " " & vbCrLf
'
spostati = marginesinistro
' intestazione della griglia
For x = 1 To UBound(lunghezzacampi)
lunghezzacampo = lunghezzacampi(x)
s = s & "/Times-Roman findfont 10 scalefont setfont" & vbCrLf
s = s & spostati & " 810 moveto" & vbCrLf
s = s & "(" & nomecampi(x) & ") show" & vbCrLf
spostati = spostati + lunghezzacampo + 2
Next x
' crea griglia
' campi editabili
For x = 1 To UBound(lunghezzacampi)
lunghezzacampo = lunghezzacampi(x)
For contaaltezza = partida To 61 Step -21
s = s & " " & vbCrLf
s = s & "[ /T (field" & nomecampi(x) & contacampi & x & ") % title" & vbCrLf
s = s & "/Subtype /Widget" & vbCrLf
s = s & "/FT /Tx % field type text box" & vbCrLf
s = s & "/V () % default value" & vbCrLf
's = s & "/Rect [ 25 619 116 639]" & vbCrLf
s = s & "/Rect [ " & marginesinistro & " " & contaaltezza & " " & (marginesinistro + lunghezzacampo) & " " & (contaaltezza + altezzacampo) & " ]" & vbCrLf
s = s & "/F 4 % field is printable" & vbCrLf
s = s & "/BS << /S /S /W 1 >> % border style solid, width = 1" & vbCrLf
s = s & "/MK <<" & vbCrLf
s = s & "/BC [ 1 0 0 ] % border color red" & vbCrLf
s = s & "/BG [ 1 1 1 ] >> % background color white" & vbCrLf
s = s & "/ANN pdfmark" & vbCrLf
s = s & " " & vbCrLf
contacampi = contacampi + 1
Next contaaltezza
'
marginesinistro = marginesinistro + lunghezzacampo + 1
'
Next x
'
' pulsante invio modulo tramite email
'
s = s & "[ /Rect [ 50 50 220 60 ]" & vbCrLf
s = s & "/Action << /Subtype /SubmitForm" & vbCrLf
s = s & "/F (mailto:" & destinatarioemail & ") >>" & vbCrLf
s = s & "/Flags 0" & vbCrLf
s = s & "/Subtype /Link" & vbCrLf
s = s & "/Border [ 1 1 1 ]" & vbCrLf
s = s & "/ANN pdfmark" & vbCrLf
'
s = s & "/Times-Roman findfont 10 scalefont setfont" & vbCrLf
s = s & "52 52 moveto" & vbCrLf
s = s & "(invia tramite e-mail) show" & vbCrLf
s = s & "showpage" & vbCrLf
'
s = s & "%%EndPage:" & vbCrLf
s = s & "%%EOF" & vbCrLf
'
' scrive il file ps
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\file-per-creazione-pdf.ps", True)
a.WriteLine (s)
a.Close
'
End Sub
'
Option Explicit
'
' crea griglia editabile per file pdf
' genera un file in formato PS-postscript
' tramite Ghostscript si crea il file in formato PDF
'
Sub ScriviFilePsPdfCampiEditabili()
Dim orizzontale, verticale, altezzacampo, lunghezzacampo
Dim contaaltezza, contacampi
Dim marginesinistro, partida, s As String
Dim lunghezzacampi, nomecampi, destinatarioemail
destinatarioemail = InputBox("destinatario email", "scelta", "")
Dim x, spostati
altezzacampo = 20
'lunghezzacampo = 30
orizzontale = 595 ' formato pagina a4
verticale = 842 ' formato pagina a4
marginesinistro = 21
partida = verticale - altezzacampo - altezzacampo - altezzacampo
contacampi = 0
'
nomecampi = Array("", "qta", "articolo", "descrizione", "nota", "note")
'
lunghezzacampi = Array(0, 35, 150, 250, 45, 70)
'
s = ""
s = s & "%!PS-Adobe-3.0 EPSF-3.0" & vbCrLf
s = s & "%%BoundingBox: 0 0 72 72" & vbCrLf
s = s & "%%EndComments" & vbCrLf
s = s & "%%BeginProlog /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse " & "[ {ThisPage} << /Trans << /S /Dissolve >> >> /PUT pdfmark" & vbCrLf
s = s & "%%EndProlog" & vbCrLf
s = s & " " & vbCrLf
s = s & "%%BeginSetup" & vbCrLf
s = s & "%%EndSetup" & vbCrLf
s = s & " " & vbCrLf
s = s & "%%BeginPage:" & vbCrLf
s = s & " " & vbCrLf
'
spostati = marginesinistro
' intestazione della griglia
For x = 1 To UBound(lunghezzacampi)
lunghezzacampo = lunghezzacampi(x)
s = s & "/Times-Roman findfont 10 scalefont setfont" & vbCrLf
s = s & spostati & " 810 moveto" & vbCrLf
s = s & "(" & nomecampi(x) & ") show" & vbCrLf
spostati = spostati + lunghezzacampo + 2
Next x
' crea griglia
' campi editabili
For x = 1 To UBound(lunghezzacampi)
lunghezzacampo = lunghezzacampi(x)
For contaaltezza = partida To 61 Step -21
s = s & " " & vbCrLf
s = s & "[ /T (field" & nomecampi(x) & contacampi & x & ") % title" & vbCrLf
s = s & "/Subtype /Widget" & vbCrLf
s = s & "/FT /Tx % field type text box" & vbCrLf
s = s & "/V () % default value" & vbCrLf
's = s & "/Rect [ 25 619 116 639]" & vbCrLf
s = s & "/Rect [ " & marginesinistro & " " & contaaltezza & " " & (marginesinistro + lunghezzacampo) & " " & (contaaltezza + altezzacampo) & " ]" & vbCrLf
s = s & "/F 4 % field is printable" & vbCrLf
s = s & "/BS << /S /S /W 1 >> % border style solid, width = 1" & vbCrLf
s = s & "/MK <<" & vbCrLf
s = s & "/BC [ 1 0 0 ] % border color red" & vbCrLf
s = s & "/BG [ 1 1 1 ] >> % background color white" & vbCrLf
s = s & "/ANN pdfmark" & vbCrLf
s = s & " " & vbCrLf
contacampi = contacampi + 1
Next contaaltezza
'
marginesinistro = marginesinistro + lunghezzacampo + 1
'
Next x
'
' pulsante invio modulo tramite email
'
s = s & "[ /Rect [ 50 50 220 60 ]" & vbCrLf
s = s & "/Action << /Subtype /SubmitForm" & vbCrLf
s = s & "/F (mailto:" & destinatarioemail & ") >>" & vbCrLf
s = s & "/Flags 0" & vbCrLf
s = s & "/Subtype /Link" & vbCrLf
s = s & "/Border [ 1 1 1 ]" & vbCrLf
s = s & "/ANN pdfmark" & vbCrLf
'
s = s & "/Times-Roman findfont 10 scalefont setfont" & vbCrLf
s = s & "52 52 moveto" & vbCrLf
s = s & "(invia tramite e-mail) show" & vbCrLf
s = s & "showpage" & vbCrLf
'
s = s & "%%EndPage:" & vbCrLf
s = s & "%%EOF" & vbCrLf
'
' scrive il file ps
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\file-per-creazione-pdf.ps", True)
a.WriteLine (s)
a.Close
'
End Sub
lunedì 8 aprile 2013
m scrivi fdf
Attribute VB_Name = "m_scrivi_fdf"
'
Option Explicit
'
' un unico file PDF per visualizzare i dati del foglio Excel
' i nomi dei campi del file Pdf debbono essere gli stessi
' presenti una prima riga del foglio excel.
' per ogni riga del foglio excel viene generato un file fdf.
'
' esempio file fdf:
'%FDF-1.2
'1 0 obj
'<<
' /FDF
' <<
' /Fields [
' << /V (1) /T (an_conto)>>
' << /V (nominativo) /T (an_descr1)>>
' << /V (indirizzo) /T (an_indir)>>
' << /V (cap) /T (an_cap)>>
' << /V (città) /T (an_citta)>>
' << /V (prov) /T (an_prov)>>
' ]
' /F (C:\\schedefdf\\scheda-dati.pdf)
' /ID [ ()()]
' >>
'>>
'endobj
'trailer
'<<
'/Root 1 0 R
'>>
'%%EOF
'
'
Sub ScriviFileFdf()
Dim quanterighe, contarighe, foglio, quantecolonne, contacolonne, risposta
Dim cartellascrittura
Dim intestazioni(), contenuti(), filepdf, filefdf
Set foglio = Sheets(ActiveSheet.Name)
'
' il nome del file pdf su cui visualizzare i dati del foglio
' i momi dei campi debbono essere gli stessi di quelli presenti sulla
cartellascrittura = "C:\schedefdf\"
risposta = VerificaEsistenzaCartella(cartellascrittura)
'
'cartellascrittura = InputBox("cartella dove scrivere file fdf:", "scelta", "c:\temp\")
' prima riga del foglio
filepdf = "C:\\lschedefdf\\scheda-dati.pdf"
'
' conteggio righe e colonne
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
ReDim intestazioni(quantecolonne)
ReDim contenuti(quantecolonne)
'
contacolonne = 1
' utilizza i nomi inseriti nella prima riga come nome dei campi
'
While contacolonne <= quantecolonne
intestazioni(contacolonne) = foglio.Cells(1, contacolonne).Value
contacolonne = contacolonne + 1
Wend
'
contarighe = 1
'
While contarighe <= quanterighe
contacolonne = 1
While contacolonne <= quantecolonne
contenuti(contacolonne) = foglio.Cells(contarighe, contacolonne).Value
contacolonne = contacolonne + 1
Wend
' il file fdf prende il nome dal numero riga
filefdf = cartellascrittura & contarighe & ".fdf"
' in alternativa ii contenuto di una cella diventa il nome del file fdf.
' filefdf = cartellascrittura & trim(foglio.Cells(contarighe, "A").Value) & ".fdf"
Call funscrivifdf(intestazioni, contenuti, filepdf, filefdf)
contarighe = contarighe + 1
Wend
'
End Sub
'
Sub funscrivifdf(campi, valori, filepdf, filefdf)
Dim quanti, conta, nomecampo, valore
Dim s
quanti = UBound(campi)
s = ""
s = s & "%FDF-1.2" & vbCrLf
s = s & "1 0 obj" & vbCrLf
s = s & "<<" & vbCrLf
s = s & " /FDF" & vbCrLf
s = s & " <<" & vbCrLf
'
s = s & " /Fields [ " & vbCrLf
For conta = 1 To quanti
nomecampo = campi(conta)
valore = valori(conta)
s = s & " << /V (" & valore & ") /T (" & nomecampo & ")>>" & vbCrLf
Next conta
'
s = s & " ]" & vbCrLf
'
s = s & " /F (" & filepdf & ")" & vbCrLf
s = s & " /ID [ ()()]" & vbCrLf
s = s & " >>" & vbCrLf
s = s & ">>" & vbCrLf
s = s & "endobj" & vbCrLf
s = s & "trailer" & vbCrLf
s = s & "<<" & vbCrLf
s = s & "/Root 1 0 R" & vbCrLf
s = s & ">>" & vbCrLf
s = s & "%%EOF" & vbCrLf
'
Dim fs, a, archivio
archivio = filefdf
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(archivio, True)
a.WriteLine (s)
a.Close
'
End Sub
'
Function VerificaEsistenzaCartella(cartella)
Dim fso, msg, crea
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(cartella)) Then
' esiste
Else
' non esiste e cre la cartella
Set crea = fso.CreateFolder(cartella)
End If
'
End Function
'
'
Option Explicit
'
' un unico file PDF per visualizzare i dati del foglio Excel
' i nomi dei campi del file Pdf debbono essere gli stessi
' presenti una prima riga del foglio excel.
' per ogni riga del foglio excel viene generato un file fdf.
'
' esempio file fdf:
'%FDF-1.2
'1 0 obj
'<<
' /FDF
' <<
' /Fields [
' << /V (1) /T (an_conto)>>
' << /V (nominativo) /T (an_descr1)>>
' << /V (indirizzo) /T (an_indir)>>
' << /V (cap) /T (an_cap)>>
' << /V (città) /T (an_citta)>>
' << /V (prov) /T (an_prov)>>
' ]
' /F (C:\\schedefdf\\scheda-dati.pdf)
' /ID [ ()()]
' >>
'>>
'endobj
'trailer
'<<
'/Root 1 0 R
'>>
'%%EOF
'
'
Sub ScriviFileFdf()
Dim quanterighe, contarighe, foglio, quantecolonne, contacolonne, risposta
Dim cartellascrittura
Dim intestazioni(), contenuti(), filepdf, filefdf
Set foglio = Sheets(ActiveSheet.Name)
'
' il nome del file pdf su cui visualizzare i dati del foglio
' i momi dei campi debbono essere gli stessi di quelli presenti sulla
cartellascrittura = "C:\schedefdf\"
risposta = VerificaEsistenzaCartella(cartellascrittura)
'
'cartellascrittura = InputBox("cartella dove scrivere file fdf:", "scelta", "c:\temp\")
' prima riga del foglio
filepdf = "C:\\lschedefdf\\scheda-dati.pdf"
'
' conteggio righe e colonne
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row
quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column
'
ReDim intestazioni(quantecolonne)
ReDim contenuti(quantecolonne)
'
contacolonne = 1
' utilizza i nomi inseriti nella prima riga come nome dei campi
'
While contacolonne <= quantecolonne
intestazioni(contacolonne) = foglio.Cells(1, contacolonne).Value
contacolonne = contacolonne + 1
Wend
'
contarighe = 1
'
While contarighe <= quanterighe
contacolonne = 1
While contacolonne <= quantecolonne
contenuti(contacolonne) = foglio.Cells(contarighe, contacolonne).Value
contacolonne = contacolonne + 1
Wend
' il file fdf prende il nome dal numero riga
filefdf = cartellascrittura & contarighe & ".fdf"
' in alternativa ii contenuto di una cella diventa il nome del file fdf.
' filefdf = cartellascrittura & trim(foglio.Cells(contarighe, "A").Value) & ".fdf"
Call funscrivifdf(intestazioni, contenuti, filepdf, filefdf)
contarighe = contarighe + 1
Wend
'
End Sub
'
Sub funscrivifdf(campi, valori, filepdf, filefdf)
Dim quanti, conta, nomecampo, valore
Dim s
quanti = UBound(campi)
s = ""
s = s & "%FDF-1.2" & vbCrLf
s = s & "1 0 obj" & vbCrLf
s = s & "<<" & vbCrLf
s = s & " /FDF" & vbCrLf
s = s & " <<" & vbCrLf
'
s = s & " /Fields [ " & vbCrLf
For conta = 1 To quanti
nomecampo = campi(conta)
valore = valori(conta)
s = s & " << /V (" & valore & ") /T (" & nomecampo & ")>>" & vbCrLf
Next conta
'
s = s & " ]" & vbCrLf
'
s = s & " /F (" & filepdf & ")" & vbCrLf
s = s & " /ID [ ()()]" & vbCrLf
s = s & " >>" & vbCrLf
s = s & ">>" & vbCrLf
s = s & "endobj" & vbCrLf
s = s & "trailer" & vbCrLf
s = s & "<<" & vbCrLf
s = s & "/Root 1 0 R" & vbCrLf
s = s & ">>" & vbCrLf
s = s & "%%EOF" & vbCrLf
'
Dim fs, a, archivio
archivio = filefdf
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(archivio, True)
a.WriteLine (s)
a.Close
'
End Sub
'
Function VerificaEsistenzaCartella(cartella)
Dim fso, msg, crea
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(cartella)) Then
' esiste
Else
' non esiste e cre la cartella
Set crea = fso.CreateFolder(cartella)
End If
'
End Function
'
unisci fogli tramite sql
Attribute VB_Name = "unisci_fogli_tramite_sql"
'
Option Explicit
'
' tramite istruzione sql
' raggruppa in nuovo foglio i dati di due fogli
' contenenti la medesima intestazione di colonna.
' esempio:
' Foglio1, cella a1 = articolo
' Foglio2, cella a1 = articolo
'
Sub componiStringaSql()
'
Dim stringasql As String, fogliodestinazione
Dim foglio1, foglio2
foglio1 = "Foglio1"
foglio2 = "Foglio2"
'
stringasql = ""
stringasql = stringasql & " Select * from [" & foglio1 & "$]"
stringasql = stringasql & " UNION "
stringasql = stringasql & " Select * from [" & foglio2 & "$]"
'
Sheets.Add
fogliodestinazione = ActiveSheet.Name
Call EseguiSqlExcel(stringasql, fogliodestinazione)
'
End Sub
'
Sub EseguiSqlExcel(stringasql As String, fogliodestinazione)
'On Error Resume Next
Dim oggConnection, oggRecordset, rifcartella, i
rifcartella = ThisWorkbook.FullName
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set oggConnection = CreateObject("ADODB.Connection")
Set oggRecordset = CreateObject("ADODB.Recordset")
oggConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & rifcartella & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
'
oggRecordset.Open stringasql, oggConnection, adOpenStatic, adLockOptimistic, adCmdText
'
' intestazione - nome campi
'
For i = 0 To oggRecordset.Fields.Count - 1
Sheets(fogliodestinazione).Cells(1, (i + 1)) = oggRecordset.Fields(i).Name
Next
'
' scrive il recordset
Sheets(fogliodestinazione).Range("A2").CopyFromRecordset oggRecordset
'
End Sub
'
'
Option Explicit
'
' tramite istruzione sql
' raggruppa in nuovo foglio i dati di due fogli
' contenenti la medesima intestazione di colonna.
' esempio:
' Foglio1, cella a1 = articolo
' Foglio2, cella a1 = articolo
'
Sub componiStringaSql()
'
Dim stringasql As String, fogliodestinazione
Dim foglio1, foglio2
foglio1 = "Foglio1"
foglio2 = "Foglio2"
'
stringasql = ""
stringasql = stringasql & " Select * from [" & foglio1 & "$]"
stringasql = stringasql & " UNION "
stringasql = stringasql & " Select * from [" & foglio2 & "$]"
'
Sheets.Add
fogliodestinazione = ActiveSheet.Name
Call EseguiSqlExcel(stringasql, fogliodestinazione)
'
End Sub
'
Sub EseguiSqlExcel(stringasql As String, fogliodestinazione)
'On Error Resume Next
Dim oggConnection, oggRecordset, rifcartella, i
rifcartella = ThisWorkbook.FullName
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set oggConnection = CreateObject("ADODB.Connection")
Set oggRecordset = CreateObject("ADODB.Recordset")
oggConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & rifcartella & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
'
oggRecordset.Open stringasql, oggConnection, adOpenStatic, adLockOptimistic, adCmdText
'
' intestazione - nome campi
'
For i = 0 To oggRecordset.Fields.Count - 1
Sheets(fogliodestinazione).Cells(1, (i + 1)) = oggRecordset.Fields(i).Name
Next
'
' scrive il recordset
Sheets(fogliodestinazione).Range("A2").CopyFromRecordset oggRecordset
'
End Sub
'
venerdì 5 aprile 2013
riconciliazione cg banca
Attribute VB_Name = "riconciliazione_cg_banca"
'
Option Explicit
'
' vba - Excel
' Riconciliazione movimenti Banca - Prima Nota
' ricerca ed evidenzia (in giallo) cella in base al contenuto utilizzando una espressione regolare
' le celle evidenziate non vengono più utilizzate per la ricerca
'
Dim rigatrovato
'
Sub RiconciliazionePrimaNotaBanca()
'
Dim nomefoglioprimanota, nomefogliobanca, colonnaprimanota, colonnabanca, datoricercato
Dim campi, ritorno
'
' input nome fogli e colonne per la ricerca
campi = Array("", "nome foglio prima nota", "colonna importi prima nota", "nome foglio banca", "colonna importi banca")
ritorno = creaMaskeraHtml(campi)
'
nomefoglioprimanota = ritorno(1)
colonnaprimanota = ritorno(2) ' colonna valori
nomefogliobanca = ritorno(3)
colonnabanca = ritorno(4) ' colonna valori
'
Dim quanterighe, contarighe, foglio
Set foglio = Sheets(nomefoglioprimanota)
'
' conteggio righe utilizzate
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).row
'
contarighe = 1
While contarighe <= quanterighe
datoricercato = foglio.Cells(contarighe, colonnaprimanota).Value
If IsNumeric(datoricercato) = True Then
If datoricercato > 0 Then
Call EvidenziaValoriColonnaPerContenuto(nomefogliobanca, colonnabanca, datoricercato)
If rigatrovato > 0 Then
foglio.Cells(contarighe, colonnaprimanota).Interior.ColorIndex = 6
End If
End If
End If
contarighe = contarighe + 1
Wend
'
'
End Sub
'
Function EvidenziaValoriColonnaPerContenuto(nomefoglio, colonnaricerca, datoricercato)
rigatrovato = 0
Dim procedura, cella As Range, foglio, zonaricerca, quanterighe, colorecella
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).Address, Cells(quanterighe, colonnaricerca).Address)
Set procedura = CreateObject("VBScript.RegExp")
'
With procedura
.Pattern = datoricercato
.IgnoreCase = True
.Global = True
For Each cella In zonaricerca
If .test(cella.Value) Then
colorecella = cella.Interior.ColorIndex ' verifica il colore cella
If colorecella = 6 Then ' nel caso il valore sia evidenziato
Else
cella.Interior.ColorIndex = 6 ' evidenzia la cella
rigatrovato = cella.row ' memorizza il numero riga
Exit Function
End If
End If
Next cella
End With
'
Set procedura = Nothing
'
End Function
'
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
'
'
'
Option Explicit
'
' vba - Excel
' Riconciliazione movimenti Banca - Prima Nota
' ricerca ed evidenzia (in giallo) cella in base al contenuto utilizzando una espressione regolare
' le celle evidenziate non vengono più utilizzate per la ricerca
'
Dim rigatrovato
'
Sub RiconciliazionePrimaNotaBanca()
'
Dim nomefoglioprimanota, nomefogliobanca, colonnaprimanota, colonnabanca, datoricercato
Dim campi, ritorno
'
' input nome fogli e colonne per la ricerca
campi = Array("", "nome foglio prima nota", "colonna importi prima nota", "nome foglio banca", "colonna importi banca")
ritorno = creaMaskeraHtml(campi)
'
nomefoglioprimanota = ritorno(1)
colonnaprimanota = ritorno(2) ' colonna valori
nomefogliobanca = ritorno(3)
colonnabanca = ritorno(4) ' colonna valori
'
Dim quanterighe, contarighe, foglio
Set foglio = Sheets(nomefoglioprimanota)
'
' conteggio righe utilizzate
quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).row
'
contarighe = 1
While contarighe <= quanterighe
datoricercato = foglio.Cells(contarighe, colonnaprimanota).Value
If IsNumeric(datoricercato) = True Then
If datoricercato > 0 Then
Call EvidenziaValoriColonnaPerContenuto(nomefogliobanca, colonnabanca, datoricercato)
If rigatrovato > 0 Then
foglio.Cells(contarighe, colonnaprimanota).Interior.ColorIndex = 6
End If
End If
End If
contarighe = contarighe + 1
Wend
'
'
End Sub
'
Function EvidenziaValoriColonnaPerContenuto(nomefoglio, colonnaricerca, datoricercato)
rigatrovato = 0
Dim procedura, cella As Range, foglio, zonaricerca, quanterighe, colorecella
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).Address, Cells(quanterighe, colonnaricerca).Address)
Set procedura = CreateObject("VBScript.RegExp")
'
With procedura
.Pattern = datoricercato
.IgnoreCase = True
.Global = True
For Each cella In zonaricerca
If .test(cella.Value) Then
colorecella = cella.Interior.ColorIndex ' verifica il colore cella
If colorecella = 6 Then ' nel caso il valore sia evidenziato
Else
cella.Interior.ColorIndex = 6 ' evidenzia la cella
rigatrovato = cella.row ' memorizza il numero riga
Exit Function
End If
End If
Next cella
End With
'
Set procedura = Nothing
'
End Function
'
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
evidenzia ricerca valori
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
'
'
'
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
'
'
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
'
'
'
Iscriviti a:
Post (Atom)