mercoledì 27 giugno 2018

vba Crea Link Valori Foglio

'

Option Explicit

'

Sub CreaLinkValoriFoglio()

' vba - crea collegamenti incrociati tra due fogli.

'

' esempio di come è stata ottenuta la riga di riferimento, ecco la formula

'   ActiveCell.FormulaR1C1 = "=MATCH(RC[-4],studio!C[-12],0)"

'

Dim quanterighe, contarighe, foglio, contacolonne, quantecolonne, contenuto

Dim indirizzostudio, indirizzoazienda

'

Dim sfoglio

Set foglio = Sheets("azienda")

Set sfoglio = Sheets("studio")

'

Dim colonnaazienda, colonnastudio, colonnastudioritornoazienda

colonnaazienda = "P" '  colonna in cui si trova il numero

colonnastudio = "D"

colonnastudioritornoazienda = "F" ' colonna del foglio studio in cui scrivere il link di ritorno al foglio azienda

'

foglio.Activate

'

quanterighe = Range(foglio.UsedRange.Cells(foglio.UsedRange.Rows.Count, 1).Address).Row

quantecolonne = Range(foglio.UsedRange.Cells(1, foglio.UsedRange.Columns.Count).Address).Column

'

contarighe = 2

While contarighe <= quanterighe

      contenuto = foglio.Cells(contarighe, colonnaazienda).Value ' la cella contiene il numero riga del foglio in cui si trova il valore

      If Len(Trim(contenuto)) > 0 Then

         indirizzoazienda = "azienda!" & foglio.Cells(contarighe, colonnaazienda).Address

         indirizzostudio = "studio!" & sfoglio.Cells(contenuto, colonnastudio).Address

         foglio.Activate

         foglio.Cells(contarighe, colonnaazienda).Activate

         ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _

           indirizzostudio, TextToDisplay:=indirizzostudio

         sfoglio.Activate

         sfoglio.Cells(contenuto, colonnastudioritornoazienda).Activate

           ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _

           indirizzoazienda, TextToDisplay:=indirizzoazienda

      End If

     contarighe = contarighe + 1

Wend

'

'

End Sub

'

 

venerdì 15 giugno 2018

vbs - esegue programma in base ad un dizionario del numero dei mesi

'

option explicit

'

' vbs - esegue programma in base ad un dizionario del numero dei mesi

'

dim giornomese

giornomese = day(date)   ' dalla data odierna prende il giorno

'

'

dim programma ' programma da eseguire

programma = "C:\sell-in\report-sell-in.vbs"

'

Dim d, valore

Set d = CreateObject("Scripting.Dictionary")

' SI = esegue il programma

d.Add "1", "NO"

d.Add "2", "NO"

d.Add "3", "NO"

d.Add "4", "NO"

d.Add "5", "NO"

d.Add "6", "NO"

d.Add "7", "NO"

d.Add "8", "NO"

d.Add "9", "NO"

d.Add "10", "NO"

d.Add "11", "NO"

d.Add "12", "NO"

d.Add "13", "NO"

d.Add "14", "SI"

d.Add "15", "SI"

d.Add "16", "SI"

d.Add "17", "NO"

d.Add "18", "NO"

d.Add "19", "NO"

d.Add "20", "NO"

d.Add "21", "NO"

d.Add "22", "NO"

d.Add "23", "NO"

d.Add "24", "NO"

d.Add "25", "NO"

d.Add "26", "NO"

d.Add "27", "NO"

d.Add "28", "NO"

d.Add "29", "NO"

d.Add "30", "NO"

d.Add "31", "NO"

'

' recupera il valore abbinato a numero del mese

valore = d.Item(CSTR(giornomese))

'

Dim WshShell, esegui, attesa

Set WshShell = CreateObject("WScript.Shell")

'

if valore = "SI" then

   esegui = programma

   attesa = WshShell.Run (esegui, 1, true)

end if

'

'