Word i pravljenje formulara

Potrebno mi je da napravim Word dokument sa poljima u koja bi se upisivali podaci, a da se ostatak dokumenta ne dira i ne menja.
Dobar link.
1. Za to je potrebno aktivirati “Developer tab” pod Word-om :
The Developer tab isn’t displayed by default, but you can add it to the ribbon.
On the File tab, go to Options > Customize Ribbon.
Under Customize the Ribbon and under Main Tabs, select the Developer check box.
After you show the tab, the Developer tab stays visible, unless you clear the check box or have to reinstall a Microsoft Office program.

2. Treba mi da ubacim odabir datuma :

3. Sledeće što mi treba je polje u koje se upisuje vreme u formi hh:mm
Totalna glupost : izgleda da za to uopšte ne postoji opcija (sem naravno kao čisti tekst), ili kao dva padajuća menija jedan pored drugog, prvi za sate a drugi za minute. Grrrrr

VBA – Visual Basic for Applications, Excel – početak

Hoću da uvučem podatke iz tabele u Word-u u Excel tabelu, ali na tačno određene lokacije.
Za to mi treba da naučim da koristim VBA i da napišem makro u Excel-u (NE u Word-u!).
Napomena : Excel dokumenti koji u sebi sadrže markoe imaju ekstenziju : *.xlsm

Dobri linkovi : link1, link2

Početak učenja
Declaring the Sub
At the beginning of the module, we have “Sub StoreSales()”. This defines a new sub called StoreSales.
You can also define functions—the difference is that functions can return values, and subs can’t
At the end of the module, we have “End Sub,”.
Declaring Variables
Dim is VBA’s command for declaring a variable.
So “Dim Sum1” creates a new variable called “Sum1.” However, we need to tell Excel what kind of variable this is. We need to choose a data type, some of which are :
Boolean – True or False
Char – one character
Currency – valuta
Date – datum
Integer – od -2,147,483,648 do 2,147,483,647
Long – dugačak integer, od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807
Object
String – 0 to approximately 2 billion Unicode characters
Variant – Variant variable can hold any type of value
Tako da deklarisanje promenljive izgleda ovako : Dim Sum1 As Currency
The statement “Dim Sum1 As Currency” tells Excel to create a new Currency variable called Sum1. Every variable that you declare needs to have an “As” statement to tell Excel its type.

Reference unutar Excel dokumenta
Here, the range function is referencing cell A5 : Worksheets(“Sheet1”).Range(“A5”)
Here, the range function is referencing all cells between A1 through E20 :
Worksheets(“Sheet1”).Range(“A1:E20”)

Petlje/Loops
For Each Cell in Range(“C2:C51”)
[a bunch of stuff]
Next Cell
“For each cell” znači da se nešto radi sa SVAKOM ćelijom koja je navedena.

Kopiranje ćelija iz jednog u drugi Excel worksheet
Sheets(“Sheet1”).Range(“A1:B10”).Copy Destination:=Sheets(“Sheet2”).Range(“E1”)

Kako promenljivoj dajemo vrednost koju unosi korisnik :
myValue = InputBox(“Give me some input”)

Kako prikazati promenjivu u pop-up box-u
MsgBox “Vrednost za staro je” + mojapromenljiva
ILI, ako ovo gore bas nece da radi :
MsgBox “Kolona je ” & kolona, vbInformation
Ako hoćemo da u message box-u prikažemo DVE promenljive sa razmakom između njih :
MsgBox “Kolona i red su ” & kolona & ” ” & original

Loop through rows and columns
Ako hoćemo da prođemo (loop) kroz niz kolona i redova, to se radi sa dvostrukom petljom, ali PAZITI, ako se ćelija adresira sa dve promenljive PRVO ide red, ONDA ide kolona :
For kolona = 4 To 35
For original = 3 To 25
‘originalna boja iz prve tabele
bojacelije = Worksheets(“ObradaSmene”).Cells(original, kolona).Interior.Color
‘kopiranje originalnog farbanja na tabelu prekovremenih sati
kopijaprekovremeni = original + 32
Worksheets(“ObradaSmene”).Cells(kopijaprekovremeni, kolona).Interior.Color = bojacelije
Next original
Next kolona

Kako kopirati kolone u redove
Sheets(“deo1”).Range(“C2:C7”).Copy
Sheets(“deo2”).Range(“C10”).PasteSpecial Transpose:=True
The default value of the Transpose parameter is False. Therefore, if you omit it, Excel doesn’t transpose the rows and columns of the copied range.

Kako uvući promenljivu u definiciju Excel ćelije
Sheets(“deo1”).Range(“C2:C7”).Copy
Sheets(“deo2”).Range(“C” & (mojapromenljiva)).PasteSpecial Transpose:=True

Kako promenljivu upisati u Excel celiju
Range(“M17”) = mojapromenljiva

Zamena posebnih karaktera u ćeliji Excel-a

Link8 ka spisku svih ASCII karaktera.
tacka = Chr(46)
dvotacka = Chr(58)
Worksheets(“deo2”).Range(“C” & (jafinred)).Replace What:=tacka, Replacement:=dvotacka
Pošto su . i : specijalni karakteri moraju se definisati kroz svoje ASCII vrednosti, a ne mogu se pozvati direktno za zamenu.

Kako zameniti ćirilične karaktere u skupni, npr : ц-2,3

Link6 – spisak Unicode karaktera, tu je ц=U+0446
I evo kako :
Dim cirilica1 As String
cirilica1 = ChrW(&H446) & “-2,3″ & ” ”
Worksheets(“deo2”).Range(“D9″).Replace What:=cirilica1, Replacement:=””
I ovime smo set karaktera : ц-2,3 (sa blankom na kraju) zamenili ni sa cime 🙂

Kako dodati “space” pre i posle promenljive
(treba mi jer mi je u ćeliji ovakav sadržaj : 0:03 – 0:04
minus = Chr(150)
minus1 = ” ” & minus & ” ”

Ako se “replace” koristi da se “.” zameni sa ničim “”, javlja se problem ako su u pitanju brojevi koji se završavaju sa nulom, pa od 2550 dobijamo 255. lek za to je da se Excel celije U koje se kopiraju podaci proglase za text (u Excel-u).

Problemi u startnoj kopiranoj Excel ćeliji
1) Ćelija sadrži dva broja koja mi oba trebaju da se kopiraju u odvojene ćelije, i između kojih je znak / (npr : 123 / 456)
Dim pu As String
pu = Sheets(“deo1”).Range(“C8”)
Dim Result() As String
Result = Split(pu, “/”)
Sheets(“deo2”).Range(“I” & (mojapromenljiva)) = Result(0)
Sheets(“deo2”).Range(“J” & (mojapromenljiva)) = Result(1)
Problematičnu ćeliju (sadržaj tipa : 123 / 456) sam proglasila za string “pu”, i koristila VBA funkciju “split”.
Dobar link3.
2) Ćelija sadrži dva broja koja mi oba trebaju da se kopiraju u odvojene ćelije, i između kojih je znak minus (npr : 123 – 456)
E ono gore NE RADI kada je u pitanju znak “-“!!!!!

Spisak ASCII karaktera : link4
Samo ako se minus definise kao ASCII karakter, onda ga funkcija replace prepoznaje :
minus = Chr(150)
staro = Range(“M16”)
MsgBox “Vrednost za staro je ” + staro
novo = Replace(staro, minus, “aaa”)
MsgBox “Vrednost za novo je ” + novo

Ali šta ko vaš minus nije KLASIČAN minus, nego nešto što samo liči na njega (u ASCII tabeli ima jedno 6 karaktera koji izgledaju kao običan minus, ali nisu)?
Excel ima funkciju CODE koja prikazuje ASCII broj za dati karakter.
Dakle ako se “minus” nalazi u ćeliji D11, u ćeliju D12 upišete : =CODE(D11) i dobićete ASCII broj za vaš “minus” znak!
Ako znak ima ASCII prikaz funkcija CODE ce dati njega, a ako nema, dace UNICODE.

Definisanje vremena radi matematičkih operacija
Treba da kopiram vrednosti vremena u hh:mm formatu, ali uporno mi upada neki datum u 1900god, i takođe se vreme pretvara u format hh:mm:ss iz nepoznatih razloga.
REh ovo je rešeno tako što sam koristila kao pšromenljivu ne samo -, nego – sa blankom pre i posle (videti gore kako se definiše).
Pokušaću da zato odamh posle kopiranja sadržaja iz Word-a u Excel ćelije definišem kao “text” što bi trebalo da ukloni problem.
Odličan link5 koji navodi sve formate.
Ono što meni treba je “text” format :
Range(“A1”).NumberFormat = “@”
Ako hoćemo ćeliju da definišemo kao “Custom hh:mm” :
Range(“A1”).NumberFormat = “hh:mm”

Ako je potrebno Excel ćeliju definisati kao broj BEZ decimalnih mesta : Worksheets(“deo1”).Range(“C20”).NumberFormat = “0”

Kako kopirati i boju ćelije i mustru ćelije, na primer :

To se radi ovako :
Dim bojacelije As Long
Dim mustra As Long
Dim original As Integer
Dim kopija As Integer
Dim kolona As Integer
……
‘originalna boja iz prve tabele
bojacelije = Worksheets(“test1”).Cells(original, kolona).Interior.Color
mustra = Worksheets(“test1”).Cells(original, kolona).Interior.Pattern
……
‘sad se originalni podaci kopiraju u drugu tabelu
Worksheets(“test2”).Cells(kopija, kolona).Interior.Color = bojacelije
Worksheets(“test2”).Cells(kopija, kolona).Interior.Pattern = mustra

Heklanje 134 : transformacija hvatača snova, ljubičastog i crvenog!

Ili kako od nečeg neuglednog napravi nešto veselo i šareno :

Prvo je običan hvatač snova, heklan na metalnom obruču, bez ikakvih ukrasa :

Pa sam onda dodala centralni cvetić, i malo isheklanih nizova sa šljokicama i staklenim perlicama :

Pa jedan cvetić-visuljak sa listićem :

I još jedan cvetić-visuljak sa listićem :

I evo još jedan havatč snova, ovog puta crveni, i njegova transformacija :

Od ovog sam počela, sa uheklanih par staklića


Pa sam dodala malo repića……


I zvončića


I još par duuuuugačkih repića 😉

WIN 10 i ping kroz proxy server

Ovo služi da se proveri da li je neki sajt/server dostupan kroz vaš proxy server kroz neki određeni TCP port.
Direktan ping ne može da prođe kroz prixy server jer ping koristi ICMP protokol, dok proxy pušta TCP i UDP pakete.

Metod 1.
Koristiti Chocolatey da se spusti tcping programčić (koji se koristi iz komandne linije).
Tcping link.
Ali cvrc ne ide kroz proxy

Metod 2.
Koristiti Chocolatey da se spusti httping programčić (koji se koristi iz komandne linije).
Httping link.
Ping kroz proxy iz komandne linije izgleda ovako :
httping -x 10.10.10.10:80 www.google.com
Gde je 10.10.10.10 proxy server sa portom 80
Ako je potrebno videti dostupnost negog servera/sajta po određenom TCP portu, to onda izgleda ovako :
httping -x 10.10.10.10:80 neki.server:nekiTCPport
connected to neki.server:nekiTCPport (281 bytes), seq=0 time=692.42 ms
connected to neki.server:nekiTCPport (281 bytes), seq=1 time=690.66 ms

Metod 3.
Kako proveriti da li vaš proxy omogućava povezivanje ka određenom serveru, po određenom portu.
Prvo setovati proxy server u komandnoj liniji :
D:\Proba>netsh winhttp set proxy 10.10.10.10:80
Current WinHTTP proxy settings:
Proxy Server(s) : 10.10.10.10:80
Bypass List : (none)

I onda testirati vezu ka problematičnom serveru i pripadajućem portu :
D:\Proba>telnet tamo.neki.server tamo.neki.port
Connecting To tamo.neki.server:tamo.neki.port…Could not open connection to the host, on port tamo.neki.port: Connect failed