Apr 272011
 

Hér er fyrsti gestapistill síðunnar. Hann er frá Styrmi Frey Gunnarssyni, bróðir mínum og sérfræðingi við Ekspres Bankann í Danmörku. Hægt er að ná í hann í netfanginu styrmirg@hotmail.com.

Pistillinn í heild sinni:

Um daginn var ég beðinn um að gera smá gagnagrunn fyrir fyrirtækið sem ég vinn hjá. Þjónustudeildin selur trygginar fyrir þá viðskiptavini okkar sem eru með lán í bankanum. Þar sem ekkert kerfi var til staðar til að skrá sölu þeirra sem selja tryggingar ákvað ég að gera Excel skjal þar sem maður skráir sjálfur söluna og skapar svo notepad skjal sem síðar meir er verkað með SAS í aðal gagnagrunninum hjá okkur.

Þetta er nokkuð einfalt og VB kóðinn er sáraeinfaldur:

Excel skjalið

Skjalið samanstendur af þremur dálkum. Í dálk A er númerið á láninu sem á að hafa tryggingu ritað. Lánanúmerið á að vera 16 tölur og ef sú regla stenst ekki fást skilaboð þess efnis að svo sé ekki (Data Validation). Í dálk B skrifar maður nafnið á þeim sem seldi trygginguna. Hér þarf að velja nafnið úr drop down menu sem er falinn annars staðar í skjalinu. Ef skrifað er nafn sem ekki er á listanum fást skilaboðin að aðeins sé hægt að velja nafn úr fyrrnefndum lista (Data validation).

Þegar sala hefur verið skráð er ýtt á “Skrá Sölu” takkann. Þessi takki er tengdur VB kóða sem er útskýrður hér fyrir neðan. Hæg er að velja hvort  hver sala sé skráð fyrir sig eða hvort maður hefur skjalið opið og skráir svo allar sölur í einu í lok dags.

Ef um marga notendur er að ræða er gott að hafa skjalið sem “Read Only” eða þá að senda hverjum og einum eintak af skjalinu.

VB Kóðinn

Sub Export()

‘Við byrjum á að skilgreina breyturnar

Dim fs As Object, a As Object, i As Integer, s As String, t As String, l As String, mn As String

‘Til að geta skapað txt skjöl verðum við að setja tímann og
‘dagssetninguna í nafnið á skjalinu svo við eyðum ekki skjölum sem einhver annar hefur gert

dato = Format(Date – 0, “YYYYMMDD”)
tid = Format(Now, hhmmss)
klst = Hour(tid)
minutur = Minute(tid)
sekundur = Second(tid)

‘Þar sem við getum ekki skapað skjöl sem innihalda : í nafninu verðum við að setja _ á milli mínutu
‘sekúndu og tíma

‘Hér kíkir VB kóðinn í skjalið og tekur all sem ekki tómt og sendir á C drifið í txt skjal með , sem
‘aðskilur dálkana

Set fs = CreateObject(“Scripting.FileSystemObject”)
‘Hér setur maður inn slóðina þar sem txt skjölin eiga að vera
‘Í þessu tilviki er notast við \WORK folder á c drifinu. Hann verður að vera til svo macroinn keyrist

Set a = fs.CreateTextFile(“C:\WORK\Sala_” & dato & “_” & klst & “_” & minutur & “_” & sekundur & “.txt”, True)

For r = 1 To Range(“A65536”).End(xlUp).Row
s = “”
c = 1
While Not IsEmpty(Cells(r, c))
s = s & Cells(r, c) & “,”
c = c + 1
Wend
a.writeline s ‘write line
Next r

‘Þegar þetta er búið þurfum við að eyða því sem er búið að senda á C drifið svo sömu upplýsingar ekki
‘verði sendar aftur

Sheets(“Sheet2”).Select
Range(“A2:B2”).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range(“A1”).Select

‘Allt búið og við getum haldið áfram að selja trygginar eða hvað það nú er sem við erum að gera

End Sub

Það er hægt að gera ótrúlega margt með VB kóðum og ef um einfalda hlut er að ræða getur maður oftar en ekki komist upp með að taka upp macro (Record macro). En það er efni í annan pistil.

{filelink=22}

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(krafist)

(krafist)

This site uses Akismet to reduce spam. Learn how your comment data is processed.