Hirdetés

Új hozzászólás Aktív témák

  • prodrakan

    csendes újonc

    Sziasztok!

    Kellene egy kis segítség Excel makróban :O
    Nagyon kezdő szinten vagyok :(
    Van egy kész működő függvényem,amivel jelenleg használom a táblázatomat,de jobban szeretném ezt makróval futtatni,mivel jelenleg minden egyes megnyitáskor a legelejétől lefuttatja pedig nekem csak az első üres sortól kellene.
    A függvényem az alábbi:
    =INDEX('\\Hubudr99102dat\mf\MF3\FEMSZERK_TERMELES\Fémszerkezet\2015.08.01_Komponens_és_szekrény_gyártás\Tervező\2017\[Tervező_2017.xlsm]Planner'!$I$4:$I$5000;HOL.VAN(A4;'\\Hubudr99102dat\mf\MF3\FEMSZERK_TERMELES\Fémszerkezet\2015.08.01_Komponens_és_szekrény_gyártás\Tervező\2017\[Tervező_2017.xlsm]Planner'!$A$4:$A$5000;0))

    A fenti függvénybe egy hiba van,hogy ha nincs adat a cellában akkor "01.00" ír a cellába,pedig akkor jobb lenne,ha üresbe hagyná.
    Azt szeretném,ha megkeresné az első olyan cellát a 'K'-oszlopba,ami üres és ugyan abba a sorba az 'A'-oszlopba is van adat és innentől futtatná le a függvényemet.

    Segítségeteket előre is köszönöm! :R

  • Bazs87

    tag

    válasz szatocs1981 #2898 üzenetére

    a szöveges fájlnak mindegy mi a kiterjesztése, csak a meghíváskor azt írd be.

    ha előtte valamit manipulálsz benne:
    Új sor : text + vbNewLine
    ha nem szeretnél új sort értelemszerűen nem írod bele.

    ha csak megnyitod írásra: write/writeline

    2 Script 2 külön fájlba ír? egyik csv másik txt? Ha nem akkor a szinkronizáció gondot okozhat.

    A szöveges fájl meghívása...
    [link] 24. oldal

    ha kérdésed van állok rendelkezésedre

  • szatocs1981

    aktív tag

    Sziasztok,

    2db VBScript-tel szeretnék egy csv-t vagy egy txt filet feltölteni.
    Az elsö VBScriptnek mindig egy új sorba kell írni a cuccost, a második Scriptnek mindig az utolsó sor végére.

    Hogyan tudom ezt megoldani?

    Elöre is köszönöm a segitseget

  • Cancer

    senior tag

    válasz martonx #2896 üzenetére

    Ezt somorúan hallom... :(

    Akkor marad az Androidos Excel és office 365 előfizetés vagy egy laptop...

  • Cancer

    senior tag

    Sziasztok,

    Nem tudom, hogy jó helyre írok-e, de WPS Office topicot nem találtam.
    Volna egy Huawei M2.10-es laptopom, amin van WPS Office. Rajta Calc (excel). Az lenne a kérdésem, hogy lehet-e valamilyen formában VisualBasic-et kapcsolni ehhez?

    Igazából Az jó lenne, ha lehetne, mert megspórolna a dolog egy laptop vásárlást. :)

  • Ispy

    nagyúr

    válasz BullZeye #2893 üzenetére

    Tehát amikor készen van a mappa átnevezése, akkor getfolder("átnevzett mappa elérési útja"), utána move "új elérési útvonal".

    A getfolder nem csinál mást, mint hozzáférhetővé tesz neked egy foldert, hogy utána például átnevezzed, áthelyezzed.

  • BullZeye

    veterán

    válasz Ispy #2892 üzenetére

    Ömm, nem hiszem, vagyis nem tudom, nem nagyon értek hozzá, jelenleg a script 1 kattintással amin épp van kijelölés szerkeszti és átnevezi a fájl/mappa nevét. Én csak tovább szeretném automatizálni, hogy a kész fájlt/mappát áthelyezze "f:\Filmek" mappába, hogy Kodi kezelhesse magának. Gondolom VBSnél is van getpath jellegű dolog, hogy tudja mi lett az új elérés, és ezt a mappát helyezze át a statikus "F:\Filmek" mappába.

  • Ispy

    nagyúr

    válasz BullZeye #2891 üzenetére

    Szerintem a Path helyére az eredeti könyvtár helyét kell beírni, amit mozgatni szeretnél, mint alul a move esetében is megadtad.

  • BullZeye

    veterán

    válasz Ispy #2890 üzenetére

    Köszi, ezt már próbáltam, sajnos erre a sorra azt írja:

    Érvénytelen eljáráshívás vagy argumentum: 800A0005
    set folder = fs.GetFolder(path)

    Ezzel az argumentummal indul amúgy a script az átnevezés miatt: %F (\w*\d{0,3})\.(\d{4}).*

    Fentiekkel kiegészített script:

    Set objRegExp = CreateObject("VBScript.RegExp")
    Set WshArg = WScript.Arguments
    Set FSO = CreateObject("Scripting.FileSystemObject")

    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.GetFolder(path)



    file_name=""
    new_file_name=""
    flag=False
    objRegExp.Pattern=WshArg.Item(1)
    If WshArg.Count>1 Then
    If FSO.FileExists(WshArg.Item(0)) Then
    Set File = FSO.GetFile(WshArg.Item(0))
    set TextStream = File.OpenAsTextStream(1)
    While Not TextStream.AtEndOfStream
    is_File=False
    file_name=TextStream.ReadLine()
    If FSO.FileExists(file_name) Then
    is_File=True
    End If
    If is_File Then
    Set File = FSO.GetFile(file_name)
    Else
    Set File = FSO.GetFolder(file_name)
    End If
    new_file_name=replace(objRegExp.Replace(FSO.GetBaseName(file_name), "$1 ($2)"),"."," ")
    If is_File Then
    new_file_name=new_file_name+"."+FSO.GetExtensionName(file_name)
    End If
    if is_File and not FSO.FileExists(new_file_name) Then
    flag=True
    ElseIf not is_File and not FSO.FolderExists(new_file_name) Then
    flag=True
    End If
    if flag Then
    File.Name=new_file_name
    Else
    msgbox "File/Folder " & new_file_name & " already exist. Can't rename ..."
    End If
    Wend
    End If
    End If

    folder.Move "F:\Filmek\"

    Próbáltam most ide-oda rakosgatni vagy beleépíteni a getfolder-t oda ahol már van egy getfile vagy getfolder, de ezzel sem működik, itt a Set Folder = FSO.GetFile(path) nem tetszik neki:

    Set objRegExp = CreateObject("VBScript.RegExp")
    Set WshArg = WScript.Arguments
    Set FSO = CreateObject("Scripting.FileSystemObject")

    file_name=""
    new_file_name=""
    flag=False
    objRegExp.Pattern=WshArg.Item(1)
    If WshArg.Count>1 Then
    If FSO.FileExists(WshArg.Item(0)) Then
    Set File = FSO.GetFile(WshArg.Item(0))
    set TextStream = File.OpenAsTextStream(1)
    While Not TextStream.AtEndOfStream
    is_File=False
    file_name=TextStream.ReadLine()
    If FSO.FileExists(file_name) Then
    is_File=True
    End If
    If is_File Then
    Set File = FSO.GetFile(file_name)
    Set Folder = FSO.GetFile(path)
    Else
    Set File = FSO.GetFolder(file_name)
    Set Folder = FSO.GetFolder(path)
    End If
    new_file_name=replace(objRegExp.Replace(FSO.GetBaseName(file_name), "$1 ($2)"),"."," ")
    If is_File Then
    new_file_name=new_file_name+"."+FSO.GetExtensionName(file_name)
    End If
    if is_File and not FSO.FileExists(new_file_name) Then
    flag=True
    ElseIf not is_File and not FSO.FolderExists(new_file_name) Then
    flag=True
    End If
    if flag Then
    File.Name=new_file_name
    Else
    msgbox "File/Folder " & new_file_name & " already exist. Can't rename ..."
    End If
    Wend
    End If
    End If

    folder.Move "F:\Filmek\"

  • Ispy

    nagyúr

    válasz BullZeye #2889 üzenetére

    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.GetFolder(path)
    folder.Move newPath

    forrás

  • BullZeye

    veterán

    Van egy scriptem, amit total commanderből meghívok egy gombbal, és átnevezi a kijelölt film mappákat Kodi számára emészthetőbb formába. Mit és hova kellene még beszúrnom, hogy rögtön át is helyezze az "f:\!Film\" mappába az átnevezett mappákat?

    Itt a script jelenleg:

    Set objRegExp = CreateObject("VBScript.RegExp")
    Set WshArg = WScript.Arguments
    Set FSO = CreateObject("Scripting.FileSystemObject")
    file_name=""
    new_file_name=""
    flag=False
    objRegExp.Pattern=WshArg.Item(1)
    If WshArg.Count>1 Then
    If FSO.FileExists(WshArg.Item(0)) Then
    Set File = FSO.GetFile(WshArg.Item(0))
    set TextStream = File.OpenAsTextStream(1)
    While Not TextStream.AtEndOfStream
    is_File=False
    file_name=TextStream.ReadLine()
    If FSO.FileExists(file_name) Then
    is_File=True
    End If
    If is_File Then
    Set File = FSO.GetFile(file_name)
    Else
    Set File = FSO.GetFolder(file_name)
    End If
    new_file_name=replace(objRegExp.Replace(FSO.GetBaseName(file_name), "$1 ($2)"),"."," ")
    If is_File Then
    new_file_name=new_file_name+"."+FSO.GetExtensionName(file_name)
    End If
    if is_File and not FSO.FileExists(new_file_name) Then
    flag=True
    ElseIf not is_File and not FSO.FolderExists(new_file_name) Then
    flag=True
    End If
    if flag Then
    File.Name=new_file_name
    Else
    msgbox "File/Folder " & new_file_name & " already exist. Can't rename ..."
    End If
    Wend
    End If
    End If

  • alfa20

    senior tag

    válasz alfa20 #2886 üzenetére

    nézd meg ezt:

    Sub main()

    Application.ScreenUpdating = False

    Dim usorKesz, alapSor As Long
    usorKesz = Sheets("Kész").Range("A" & Rows.Count).End(xlUp).Row
    alapSor = 1

    Sheets("Alap").Select

    Do While (Cells(1, 1) <> "")
    Cells(1, 1).Copy
    Sheets("Összefűz").Range("A2").PasteSpecial
    Sheets("Kész").Cells(usorKesz + alapSor, 1) = Sheets("Összefűz").Range("A1") & _
    Sheets("Összefűz").Range("A2") & Sheets("Összefűz").Range("A3")
    alapSor = alapSor + 1
    Sheets("Alap").Cells(1, 1).Delete
    Loop

    Sheets("Kiegészít").Range("A1:A16").Copy
    Sheets("Kész").Range("A" & usorKesz + alapSor).PasteSpecial
    Application.CutCopyMode = False

    Application.ScreenUpdating = True

    End Sub

  • alfa20

    senior tag

    válasz xml2 #2885 üzenetére

    Ha törölni szeretnéd a tartalmat, másképp oldalán meg, a while ciklust módosítanám
    , úgy hogy amit kimásolt azt törölje és addig menjen a ciklus míg a cella tartalma nem üres, de most telóról vagyok, majd délután átírom.

  • xml2

    újonc

    válasz alfa20 #2884 üzenetére

    Nagyon köszönöm a segítséget, pont erre gondoltam!
    Ha másolás helyett inkább kivágást szeretnék, akkor a Copy helyett mehet mindenhova Cut, ugye?
    A tartalomban nem szerettem volna szóközt, úgyhogy kivettem a megjegyzést.

    Szerk: Közben lázasan kerestem a hibát a saját művemben, jelzem, megtaláltam :) Félreértettelek, és az egyes tartalmak között nem szerettem volna szünetet, gondolom így értetted, hogy a cellák között. Tehát mégse kell az a sor :)

  • alfa20

    senior tag

    válasz xml2 #2883 üzenetére

    Szia!

    Én így oldanám meg, viszont a Do While-ban lévő első két sort én elhagynám, az ha nincs miértje, szerintem felesleges. Illetve a "3 cellát összefűzni (szóköz nélkül)" arra utalt, hogy a cellák közt ne legyen szünet vagy a tartalmukban?
    Ha a tartalmukban, akkor vedd ki a kommentet a ' szóköz eltávolítása:

    Sub main()

    Application.ScreenUpdating = False

    Dim usorKesz, alapSor As Long
    usorKesz = Sheets("Kész").Range("A" & Rows.Count).End(xlUp).Row
    alapSor = 1

    Sheets("Alap").Select

    Do While (Cells(alapSor, 1) <> "")
    Cells(alapSor, 1).Copy
    Sheets("Összefűz").Range("A2").PasteSpecial
    Sheets("Kész").Cells(usorKesz + alapSor, 1) = Sheets("Összefűz").Range("A1") & _
    Sheets("Összefűz").Range("A2") & Sheets("Összefűz").Range("A3")
    ' szóköz eltávolítása:
    'Sheets("Kész").Cells(usorKesz + alapSor, 1).Replace What:=" ", Replacement:=""
    alapSor = alapSor + 1
    Loop

    Sheets("Kiegészít").Range("A1:A16").Copy
    Sheets("Kész").Range("A" & usorKesz + alapSor).PasteSpecial

    Application.ScreenUpdating = True

    End Sub

    erre gondoltál?

  • xml2

    újonc

    Sziasztok!
    Excel makró témában szeretnék segítséget kérni.

    Van 4db munkalapom: Alap, Összefűz, Kiegészít, Kész
    Minden cella szöveget tartalmaz.
    Az Alap munkalapon csak az A oszlopban vannak adatok.
    Az Összefűz lapon az A1 és az A3 cella foglalt (fix), az A2-be (változó) kellene másolni az Alap lapról a tartalmat, cellánként.
    Beillesztés után a 3 cellát összefűzni (szóköz nélkül) egy új cellába, majd ezt az új tartalmat továbbküldeni a Kész munkalap A oszlopába, az első üres cellába.
    Mindezt addig kellene csinálni (az Összefűz lap A2 celláját felülírva az új tartalommal), ameddig az Alap munkalap A oszlopában üres cellához nem ér.
    Ha ez megtörtént, a Kiegészít munkalap A1-A16 cellákat kellene bemásolni a Kész munkalap következő, A oszlopban lévő, üres celláiba.

    Nagyon szépen köszönöm, ha valaki lesz olyan kedves, és szán rá egy kis időt, energiát, hogy kisegítsen!

    Szerk: fontos lehet, Office 2010 Prof. Plus, amivel rendelkezem.

  • Vladek83

    tag

    válasz Bazs87 #2879 üzenetére

    + (#2880) Ispy köszönöm a javaslatokat! VB.net lenne. Most ismerkedem vele, eddig excelben próbálgattam írogatni..küzdök.. :)
    úgy tűnik ezzel jó lehet:
    Try

    Dim search As String = "%" + TextBox1.Text + "%"

    Me.TörzsTableAdapter.FillByKereses(Me.TörzsDataSet.Törzs, search, search, search)

    Dim imageName As String = DataGridView1.CurrentRow.Cells(3).Value.ToString()
    Dim img As Image
    img = Image.FromFile(Convert.ToString("D:\Images\") & imageName)
    PictureBox1.Image = img

    Catch ex As Exception



    End Try

  • DasBoot

    aktív tag

    Szép napot! Nagyon, nagyon kezdő vagyok a Visual Basic-ben, de egy konkrét feladatot szeretnék megoldani, ezen keresztül szeretnék ismerkedni vele. 6-os LOTTO-n szeretnék tippelni mégpedig úgy, hogy a mezőkön sohase ismétlődjenek a számok. A 45 számhoz 7 teljes mező kell + 1 a maradék 3 számnak, de nem ez a lényeg, mert újabb 45 is lehetne. Ezt MSExcel-ben el tudtam készíteni, nagyon jól működik, de Visual Basic-ben is szeretném. VB6-os programmal rendelkezem. Köszönöm a válaszokat. Üdv.: Joe

  • Ispy

    nagyúr

    válasz Vladek83 #2878 üzenetére

    Mi a hibaüzenet?

    Egy ötlet: csinálsz egy timert, amit akkor kapcsolsz be, amikor a textbox lostfocus van, akkor a tick-ben feltöltöd a picturebox-ot és kikapcsolod a timert.

  • Bazs87

    tag

    válasz Vladek83 #2878 üzenetére

    a probléma megkerülése nem segít esetleg?

    amíg az egyik fut deaktiválod a másik kódrészletet így keresztreteszelést létrehozva. Netán az textbox objektet "disable"-re állítod, ha van ilyen funkciója, miután pedig lefutott a kép manipuláció újra enabled. Tudom nem szép megoldás, de sajnos jobb ötletem nincs. VB6-ban dolgozol?

  • Vladek83

    tag

    Sziasztok!

    Egy kicsit elakadtam, tudna valaki súgni?

    Van egy TextBox amibe írok, akkor csak azokat az értékeket jeleníti meg, viszont hibára fut, mert közben egy PictureBox-ban kellene megjeleníteni külön a hozzá tartozó képet..
    Együtt nem akar működni a kettő..

    Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'Adatbázis1DataSet.Cikkek' table. You can move, or remove it, as needed.
    Me.CikkekTableAdapter.Fill(Me.Adatbázis1DataSet.Cikkek)

    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

    Dim search As String = "%" + TextBox1.Text + "%"

    Me.CikkekTableAdapter.FillBySearchCikkek(Me.Adatbázis1DataSet.Cikkek, search, search)

    End Sub

    Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged

    Dim imageName As String = DataGridView1.CurrentRow.Cells(3).Value.ToString()
    Dim img As Image
    img = Image.FromFile(Convert.ToString("D:\Images\") & imageName)
    PictureBox1.Image = img

    End Sub
    End Class

  • Bazs87

    tag

    Sziasztok!

    LibreOffice Calc-ot szeretnék vbs-ből manipulálni. Minden fut gond és működik, egyetlen problémám a sheet kiválasztása. Próbáltam több különböző parancsot (index szerint, megnevezés szerint), de sajnos egyik sem működik. Először meg kell nyitnom a fájlt, aminek az activesheet-jét átveszi, emiatt viszont a második megnyitott fájl már írásvédett lesz és az általam generált bagatell módosításokat nem tudom átvenni. (le tudnám menteni más néven, vagyis meg tudnám kerülni ezt a probémát, de nem ez a cél, szeretnék egy elegáns megoldást találni erre)

    Mivel a mahinálni kívánt fájl egy nagyon buta, de rendesen levédett fájl, ezért gondoltam arra is, hogy ott lehet a kutya elásva. A megoldásom viszont a teljesen sima új tesztcélra generált fájlt sem tudta az elvárásoknak megfelelően kezelni.
    Remélem valaki találkozott már ezzel a problémával.
    Köszönöm előre is!

    class timecnt
    dim st, et, ps, nwt, uswt, swt
    end class

    dim list(9)

    ' arrayclass deklaralas
    for i=0 to 9
    set list(i) = new timecnt
    next

    ' adatok kiolvasasa

    '----------------------------------------------------------------------------------------
    'http://www.oooforum.de/viewtopic.php?t=44190

    Set objServiceManager = WScript.CreateObject("com.sun.star.ServiceManager")
    Set StarDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")

    cURL = "file:///D:\BR\netzlaufwerk\NFO\vbs\libre_officemuster\test\test.ods"

    set oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, Array() )
    set oSheet = oDoc.CurrentController.ActiveSheet

    'egyeb nem mukodo megoldasok
    'set oSheet = oDoc.getSheets().getByName( "Tabelle1" )
    'set oSheets = oDoc.getSheets()
    'set oSheet = oSheets.getByIndex(0)
    '----------------------------------------------------------------------------------------

    call librecalc_read

    wknd = false

    ' szamitasok elvegzese
    for i=0 to 9
    with list(i)
    sh = CutLeft ( .st, ":" )
    sm = CutRight( .st, ":" )
    eh = CutLeft ( .et, ":" )
    em = CutRight( .et, ":" )

    wtime = worktime_count(sh, sm, eh, em, .ps)
    if not wknd then
    if wtime<=8 then
    .nwt = wtime
    else
    .nwt = 8
    .uswt = wtime-8
    .swt = 0
    end if
    else
    .nwt = 0
    .uswt = 0
    .swt = wtime
    end if
    end with
    next

    ' adatok kiirasa
    call librecalc_write

    erase list

    '----------------------------------------------------------------------------------------
    set oSheet = nothing
    set oDoc = nothing
    Set StarDesktop = nothing
    Set objServiceManager = nothing
    '----------------------------------------------------------------------------------------

    MsgBox "process is done"



    function worktime_count(starth, startm, endh, endm, pause)
    'msgbox starth + " " + startm + "" + endh + " " + endm + " " + pause
    worktime_count = cInt(endh) + cInt(endm) / 60 - cInt(starth) - cInt(startm)/60
    if pause <> "" then worktime_count = worktime_count - cInt(pause) / 60
    end function

    function CutLeft(txt, sym)
    if txt<>"" then
    s_e = inStr( txt, sym )-1
    CutLeft = left ( txt, s_e)
    end if
    end function

    function CutRight(txt, sym)
    if txt<>"" then
    s_a = inStr(txt, sym)
    CutRight = right(txt, len(txt) - s_a)
    end if
    end function

    sub librecalc_read()
    for i = 0 to 9
    list(i).st = oSheet.getCellByPosition( 1, 15 + i ).String 'B16
    list(i).et = oSheet.getCellByPosition( 2, 15 + i ).String 'C16
    list(i).ps = oSheet.getCellByPosition( 6, 15 + i ).String 'G16
    next
    end sub

    sub librecalc_write()
    for i=0 to 9
    with list(i)
    if .nwt<>0 then
    oSheet.getCellByPosition( 3, 15 + i ).Value = .nwt 'D16
    end if
    if .uswt<>0 then
    oSheet.getCellByPosition( 4, 15 + i ).Value = .uswt 'E16
    end if
    if .swt<>0 then
    oSheet.getCellByPosition( 5, 15 + i ).Value = .swt 'F16
    end if
    end with
    next
    end sub

  • alfa20

    senior tag

    válasz alfa20 #2873 üzenetére

    MySQL-ben kellett beállítani, hogy minden gép elérje most elérem a táblákat, jöhet a programozás :)

  • alfa20

    senior tag

    válasz martonx #2872 üzenetére

    Köszi, ezek mind be vannak állítva, másik gépről MySQL Workbanch-el elérem az adatbázist SSH kapcsolattal. Viszont azt nem tudom hogy tudnám ezt VB.NET-ben kivitelezni, eddig csak olyan csatlakozásokat találtam ahol egy IP:port címre kellett kapcsolódni, de nekem meg egyszer a Pi-re, majd onnan a MySQL-re.
    Vagy nem tudom :(

  • martonx

    veterán

    válasz alfa20 #2871 üzenetére

    Nyilván az Pi3 IP-je fog neked kelleni, valami általad beállított porttal, amit előtte átengedsz a tűzfalon.
    Azt hiszem a mysql-ben használatos user permissionjei is fontosak, már ha nem root-tal akarod használni.

  • alfa20

    senior tag

    Sziasztok!

    Egy hálózaton van több gép is, ezek közül az egyik egy PI3 amin fut egy Webmin + Apache + MySQL, erre hogy tudok VB.NET-el fel csatlakozni?
    MySQL Workbanch-el elérem az adatbázist SSH kapcsolattal
    Pi3 IP: 192.168.0.13:22
    Pi3 MySQL: 127.0.0.1::3306

    Workbanch mind két jelszót kéri a Pi-ét és a adatbázisét is.

  • Bazs87

    tag

    válasz Bazs87 #2869 üzenetére

    RITKÁN, de van hogy a lustaság nem kifizetődő

    így már a tesztejim szerint működik:

    xlsx_dict = "U:\6_798\Translate\v01\pl.xlsx"
    xlsx_trgt = "U:\6_798\Translate\v01\TIAProjectTexts_mod.xlsx"

    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set wobu = CreateObject("Scripting.Dictionary")


    Set objExcel = CreateObject("Excel.Application")

    if not fso.FileExists(xlsx_dict) then
    MsgBox xlsx_dict + " nicht gefunden"
    WScript.Quit()
    end if

    if not fso.FileExists(xlsx_trgt) then
    MsgBox xlsx_trgt + " nicht gefunden"
    WScript.Quit()
    end if

    objExcel.WorkBooks.Open xlsx_dict
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    'dict aufladen
    for i=1 to 532
    tmp1 = cStr(objSheet.Cells(i,1).Value)
    tmp2 = cStr(objSheet.Cells(i,2).Value)

    tmp1 = Replace(tmp1,vbcrln,"</\>")
    tmp2 = Replace(tmp2,vbcrln,"</\>")

    if not wobu.exists(tmp1) then
    wobu.add tmp1, tmp2
    else
    'MsgBox "Problem mit key: " + tmp1
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.WorkBooks.Open xlsx_trgt
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    'Übersetzen
    for i=2 to 24257
    dtext = objSheet.Cells(i,5).Value

    dtext = Replace(dtext,vbcrln,"</\>")

    if wobu.exists(dtext) then
    tmp = Replace(wobu(dtext),"</\>",vbcrln)
    objSheet.Cells(i,6).Value = tmp
    else
    '
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.Application.Quit

    Set objSheet = nothing
    set objExcel = nothing
    Set wobu = nothing
    Set fso = nothing

    msgBox "Fertig"

  • Bazs87

    tag

    Sziasztok!

    Érdekes problémával találtam magam szembe:

    Feladat:
    van egy laza 25ezer soros német-lengyel fordításom, ami egy programból (Siemens TIA Portal) lett exportálva. A "text"manipulálás után szeretném visszatölteni ezt. Persze az új verzió egy libből kikeresve lefordítja amit letud (szakmai szöveg, nem érdemes összekötni semmilyen értelmes fordítóval, max ha gálvölgyi show-t és elégedetlen ügyfelet akarunk)

    Megoldási elv(eddig):
    létrehoztam egy vbs ole kapcsolatot excellel. (ne kérdezzétek miért, nekem komfortosabb így, mint az excel makrófelületével dolgozni)
    A program megnyitja a szótár excelt és az A oszlop elemei lesznek a key-ek, B oszlop azonos sorainak elemei pedig az adatok.
    Excel becsuk, új doku kinyit és egy sima compare után beírogatom a lengyel verziót. Ezután elmentem és mindenki boldog....

    Probléma:
    a txt sorai és az excel cellák tartalma nem azonos szintaxúak -> tele vannak a cellákon belüli "értékek"/adatok sortöréssel.
    Erre felkészültem, ezért nem txt a szótár fájlom, hanem excel.
    A dictionary key eleme viszont vmiért ezeket nem veszi át.

    Másik perverzebb ötletem az lenne, hogy még excelben helyettesíteni kell a vbcrln karaktereket valamilyen egyéb karakterre v láncra amit a mod végén visszahelyettesítenék (és ugye nincs a szövegben persze), de ugye ez plusz munka és nem vagyok túl szorgalmas ilyen fronton.
    Szeretek tanulni a hibámból, mert minden bizonyára elvi hibám van.
    Kérésre rendelkezésetekre tudom bocsátani az adatokat is, a kód így fest:

    xlsx_dict = "U:\6_798\Translate\v01\pl.xlsx"
    xlsx_trgt = "U:\6_798\Translate\v01\TIAProjectTexts_mod.xlsx"

    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set szotar = CreateObject("Scripting.Dictionary")

    Set objExcel = CreateObject("Excel.Application")

    if not fso.FileExists(xlsx_dict) then
    MsgBox xlsx_dict + " nicht gefunden"
    WScript.Quit()
    end if

    if not fso.FileExists(xlsx_trgt) then
    MsgBox xlsx_trgt + " nicht gefunden"
    WScript.Quit()
    end if

    objExcel.WorkBooks.Open xlsx_dict
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    'dict aufladen
    for i=1 to 532
    tmp1 = cStr(objSheet.Cells(i,1).Value)
    tmp2 = cStr(objSheet.Cells(i,2).Value)

    if not szotar.exists(tmp1) then
    szotar.add tmp1, tmp2
    else
    'MsgBox "Problem mit key: " + tmp1
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.WorkBooks.Open xlsx_trgt
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    ' Übersetzen
    for i=2 to 24257
    dtext = objSheet.Cells(i,5).Value
    if szotar.exists(dtext) then
    objSheet.Cells(i,6).Value = szotar(dtext)
    else
    '
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.Application.Quit

    Set objSheet = nothing
    set objExcel = nothing
    Set szotar = nothing
    Set fso = nothing

    msgBox "Fertig"

    Köszönöm az esetleges ötleteket!
    Követem a fórumot és öröm olvasni a profi megoldásaitokat!

  • lorcsi

    veterán

    kellene egy komolyabb help

    a suliban visual studiot használok az otthoni acc-ommal
    írtunk egy progit és csak az ottani hálóra mentettem el, de jó lenen a hétvégéán itthon is csinálni
    szerintetek a háttérben accomra feltöltötte vajon?
    létezik iylen?

  • martonx

    veterán

    válasz alexy92 #2859 üzenetére

    Ezzel a hozzá állással születnek, az örökre úgy hagyott undormányok.

  • PETEE78

    senior tag

    Sziasztok!

    Outlook2013 Inbox beérkező levelek küldő, tárgy, dátum, esetleg méret adatait szeretném kigyűjteni egy excel munkalapra. Nyilván a Ctrl+c volna a legegyszerűbb... :D
    Ezt hogy lehet vb-ben megírni? Mondjuk adott, hogy az adott excel is már meg van nyitva illetve nyilván az Outlook is.

    Vagy esetleg csak a fent említett adatokat 1db txt file-ba lementeni?

    Ha útmutatót adnátok milyen parancsokkal induljak el, nekem az is megfelel.

    Segítségeteket előre is köszönöm!

  • Delila_1

    veterán

    válasz alexy92 #2861 üzenetére

    A bemásolt tengeri kígyóban ilyen részletek vannak:

    Range("C1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Select utasítások nélkül

    usor = Range("C1").End(xlDown).Row
    Range("C2:C" & usor).Copy
    With Workbooks("invoices_masterfile.xlsm").Sheets("main")
    usor = .Range("H" & Rows.Count).End(xlUp).Row + 1
    .Range("H" & usor).PasteSpecial Paste:=xlPasteValues
    End With

    Látod, az usor változót felhasználtam a másoláshoz. Az adatok már ott csücsülnek a vágólapon, a másik füzet egyik lapján új értéket rendelhetek hozzá, jelen esetben a H oszlop első üres sorának a számát.
    A Select utasítások ráállnak az adott füzet adott lapjára, ott is bizonyos cellá(k)ra. Ez időveszteség, ráadásul ugrál a kép.

    Végül

    If Err.Number <> 0 Then
    sub3
    Else
    On Error GoTo 0
    sub2
    End If

  • Ispy

    nagyúr

    válasz alexy92 #2863 üzenetére

    Ezt megcsináltad? Minden subrutinba rakd be az Err.Clear-t, mert szerintem amikor hiba után bemegy egy hiba sub-ba, akkor megtartja az eredeti hiba értékét és ezért a 2. körben is a hiba sub-ba fog menni, annak ellenére, hogy ott nincsen hiba.

    Szóval minden sub elejére rakjad be, hogy Err.Clear....

  • alexy92

    aktív tag

    válasz Ispy #2862 üzenetére

    Az összes lefut, ha van olyan sor amit másolni kell(ergo nincs 1004-es kód, a másik fájlban van olyan adat amit még ebben nincs), hibátlanul :P

  • Ispy

    nagyúr

    válasz alexy92 #2855 üzenetére

    :Y

    Na, a feladat a következő: ezt az egészet mentsed el, tedd félre. Nincs az az isten, hogy tapasztalat nélkül ebbe a kóddzsungelben bármit is megtaláljál.

    Utána kezd el 0-ról, apránként, minimális kóddal. Ha megy, akkor adjál hozzá még egy részt, és így tovább. Ha nem megy, akkor állj meg és akkor térjünk vissza rá.

  • alexy92

    aktív tag

    válasz sztanozs #2860 üzenetére

    Jelenleg örülnék, ha a mechanika összejönnie, de tényleg. :((

  • alexy92

    aktív tag

    válasz sztanozs #2858 üzenetére

    Köszi! A finomítás majd akkor lesz ha kész lesz a mechanika :B

  • sztanozs

    veterán

    válasz alexy92 #2857 üzenetére

    Első körben a felesleges Select és Activate sorokat vedd ki:
    - két (vagy több) select egymás után felesleges, csak az utolsó maradjon meg (kiváve, ah a következőben fel van használva a selection, de ezeket inkább egy sorba kell tömöríteni
    - aktív sheet-et vagy workbook-ot újra aktiválni felesleges
    - a valami.Select + Selected.Value = ... felesleges, helyette valami.Value = ... elég, nem kell kijelölni, ráadásul gyorsabb is
    - ha nem Select-tel dolgozol, hanem közvetlen referenciával, akkor nem kell Activate és Select:
    Workbooks("Workbook.xls").Worksheet("Sheetnév").Range("CellaReferencia").Value = "valami"
    - Copy/PasteSpecial:value helyett sokkal (!) gyorsabb az Array copy: [link]

  • alexy92

    aktív tag

    válasz sztanozs #2856 üzenetére

    örülök ha megy, első nagyobb macro-m amit önszorgalomból írok :B

  • sztanozs

    veterán

    válasz alexy92 #2855 üzenetére

    Úbaszki, mi ez a kódkígyó... :Y

    Semmi indent, egy csomó tök feleslges sor.

  • alexy92

    aktív tag

    válasz Ispy #2854 üzenetére

    Sub All()
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Columns("K:K").Select
    Selection.Replace What:="/", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Columns("A:A").Select
    Range("L1").Select
    ActiveCell.Value = "Check if its in masterfile"
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-1],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("Radler")
    LR = Range("K" & Rows.Count).End(xlUp).Row
    Range("L1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$L").AutoFilter Field:=12, Criteria1:= _
    "Not in file"
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    CevaBelgium
    Else
    VKtrans
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Range("D1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("I" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Range("D1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Range("G1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Range("K1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "RADLER KFT."
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Radler").Activate
    Rows("1:1").Activate
    Selection.AutoFilter
    Columns("L").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate


    End Sub

    Sub VKtrans()
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Columns("A:A").Select
    Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Range("V1").Select
    ActiveCell.Value = "Check if its in masterfile"
    Range("V2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-21],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("VK Transport")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("V1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$V").AutoFilter Field:=22, Criteria1:= _
    "Not in file"
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    DSVROADNV
    Else
    CevaBelgium
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Range("L1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Range("L1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate

    With Sheets("VK Transport")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("O2").End(xlDown).Offset(0, 2).Select
    Range("Q2", "Q" & LR).Select
    End With
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "VK Transport"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("VK Transport").Activate
    Rows("1:1").Activate
    Selection.AutoFilter
    Columns("V:V").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate



    End Sub
    Sub CevaBelgium()
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate
    Columns("A:B").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1").Select
    ActiveCell.Value = "Invoice Date"
    Range("B1").Select
    ActiveCell.Value = "Service Date"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=Date(Left(RC[3],4),mid(RC[3],5,2),right(RC[3],2))"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=iferror(Date(Left(RC[20],4),mid(RC[20],5,2),right(RC[20],2)),RC[-1])"
    Columns("C:C").Select
    Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
    Range("CJ1").Select
    ActiveCell.Value = "Check if its in the masterfile"
    Range("CJ2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-85],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("Ceva Belgium")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("CJ1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$CJ").AutoFilter Field:=88, Criteria1:= _
    "Not in file"
    Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    Azkar
    Else
    DSVROADNV
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate

    Range("AN1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate

    Range("AN1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate
    Range("AL1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate
    Range("C1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "CEVA FREIGHT BELGIUM N.V."
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Ceva Belgium").Activate
    Range("1:1").Select
    Selection.AutoFilter
    Columns("CJ:CJ").Select
    Selection.Delete Shift:=xlToLeft
    Columns("A:B").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate



    End Sub


    Sub DSVROADNV()
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Range("S1").Select
    ActiveCell.Value = "Check if its in the masterfile"
    Range("S2").Select
    ActiveCell.FormulaR1C1 = "=Iferror(match(RC[-18],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("DSV Road")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("S1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$S").AutoFilter Field:=19, Criteria1:= _
    "Not in file"
    Range("b1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    DachserBE
    Else
    Azkar
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Range("b1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Range("L1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("I" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Range("L1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    With Sheets("DSV Road")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("M2").End(xlDown).Offset(0, 1).Select
    Range("N2", "N" & LR).Select
    End With
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, -1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    Range("B" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "DSV ROAD N V"
    Range("C" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=YEAR(RC[4])"
    Range("D" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=month(RC[3])"
    Range("E" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=Isoweeknum(RC[3])"
    Range("F" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("DSV Road").Activate
    Rows("1:1").Select
    Selection.AutoFilter
    Columns("S").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate



    End Sub

    Sub Azkar()
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Azkar").Activate
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
    Columns("P:P").Select
    Selection.TextToColumns Destination:=Range("P1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
    Range("Z1").Select
    ActiveCell.Value = " Check if its in the matserfile"
    Range("Z2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-25],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("Azkar")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("Z1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$Z").AutoFilter Field:=26, Criteria1:= _
    "Not in file"
    Range("O1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    DachserHU
    Else
    DachserBE
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Azkar").Activate
    Range("O1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Range("N1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Range("N1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Azkar").Activate
    Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Azkar").Activate
    With Sheets("Azkar")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("O2").End(xlDown).Offset(0, 1).Select
    Range("P2", "P" & LR).Select
    End With
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("K" & Rows.Count).End(xlUp).Offset(1, 1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "TRANSPORTES AZKAR, S.A"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Azkar").Activate
    Range("1:1").Select
    Selection.AutoFilter
    Columns("Z:Z").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate


    End Sub

    Sub DachserBE()
    Selection.Clear
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser BE").Activate
    Range("S1").Select
    ActiveCell.Value = "Check if its in masterfile"
    Range("s2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-2],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    Range("t1").Select
    ActiveCell.Value = "Date"
    Range("t2").Select
    ActiveCell.FormulaR1C1 = "=date(right(RC[-19],4),mid(RC[-19],4,2),left(RC[-19],2))"
    With Sheets("Dachser BE")
    LR = Range("Q" & Rows.Count).End(xlUp).Row
    Range("S1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("T1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$M").AutoFilter Field:=19, Criteria1:= _
    "Not in file"
    Range("T1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    WaberersINT
    Else
    DachserHU
    End If
    Windows("raw_invoice_riports.xlsx").Activate
    Windows("invoices_masterfile.xlsm").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Select
    Windows("raw_invoice_riports.xlsx").Activate
    Selection.End(xlUp).Select
    Range("P1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Windows("raw_invoice_riports.xlsx").Activate
    Selection.End(xlUp).Select
    Range("P1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Range("F1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(0).Select
    ActiveCell.Offset(1, -1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Range("Q1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.Offset(0, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("F" & Rows.Count).End(xlUp).Offset(1).Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    Range("B" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "DACHSER TRANSPORT BELGIE"
    Range("C" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=YEAR(RC[4])"
    Range("D" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=month(RC[3])"
    Range("E" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=Isoweeknum(RC[3])"
    Range("F" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    ActiveSheet.Range("1:1").AutoFilter
    Windows("raw_invoice_riports.xlsx").Activate
    Rows("1:1").Select
    Selection.AutoFilter
    Columns("S:T").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate



    End Sub
    Sub DachserHU()
    On Error GoTo 0
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("AJ1").Select
    ActiveCell.Value = "Check if its in the masterfile"
    Range("AJ2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-2],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("Dachser HU")
    LR = Range("AH" & Rows.Count).End(xlUp).Row
    Range("AJ1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$AJ").AutoFilter Field:=36, Criteria1:= _
    "Not in file"
    Range("V1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy

    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("V1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    If Err.Number <> 0 Then
    Vege
    Else
    WaberersINT
    End If
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("W1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("W1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("D1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("K" & Rows.Count).End(xlUp).Offset(1, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Range("AH1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "LIEGL & DACHSER SZALLITMANYOZASI ES"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Dachser HU").Activate
    Rows("1:1").Activate
    Selection.AutoFilter
    Columns("AJ").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate





    End Sub
    Sub WaberersINT()
    Selection.Clear
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Columns("A:A").Select
    Range("J1").Select
    ActiveCell.Value = "Check if its in masterfile"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MATCH(RC[-8],[invoices_masterfile.xlsm]main!C13,0),""Not in file"")"
    With Sheets("Waberers INT")
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("J1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Range("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A:$J").AutoFilter Field:=10, Criteria1:= _
    "Not in file"
    Range("C1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    On Error Resume Next
    Selection.Copy
    If Err.Number <> 0 Then
    Vege
    Else
    Vege
    End If
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("G" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Range("C1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("H" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False

    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Range("F1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1, -1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Range("F1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("J" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Range("B1").Select
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate
    Range("M" & Rows.Count).End(xlUp).Offset(1, 0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
    :=False, Transpose:=False
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[1],vendor_codes!C1:C2,2,0)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "WABERERS INTERNATIONAL ZRT"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Year(RC[4])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=Month(RC[3])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=isoweeknum(RC[2])"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],MOR!C1:C2,2,0)"
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-5]"
    With Sheets("main")
    LR = Range("H" & Rows.Count).End(xlUp).Row
    Range("A1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("B1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("C1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("D1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("E1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("F1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    Range("K1").End(xlDown).Offset(0, 0).Activate
    ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LR, ActiveCell.Column))
    End With
    Windows("raw_invoice_riports.xlsx").Activate
    Worksheets("Waberers INT").Activate
    Rows("1:1").Activate
    Selection.AutoFilter
    Columns("J:J").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Windows("invoices_masterfile.xlsm").Activate
    Worksheets("main").Activate

    End Sub

    Sub Vege()
    Selection.Clear
    MsgBox "Siker!", vbExclamation
    End
    End Sub

    Így lenne, és a többit már tudjátok :)

  • Ispy

    nagyúr

    válasz alexy92 #2851 üzenetére

    Nem nagyon programoztam még excelben, szóval az én elképzelésem:

    Dim IsError as boolean

    Private Sub Main -> a fő kódod, gondolom valamilyen eventre fut le az egész cucc

    On Error GoTo ErrHandling

    valami kód, amit írtál és mindig gebasz van vele...

    IF IsError = True Then
    Call Sub2
    Else
    Call Sub3
    End IF

    valami kód, amit írtál és mindig gebasz van vele...

    IF IsError = True Then
    Call Sub4
    Else
    Call Sub5
    End IF

    exit sub

    ErrHangling:
    IsError = True
    Resume

    End Sub

    Private Sub Sub2
    IsError = False
    ....

    End Sub

    Persze lehet ezt még finomítani kell, kb. 5 éve nem nyúltam VBA kódhoz, de kb. így csinálnám. A subokat el is lehet hagyni, csak akkor van értelme külön kódba kiemelni, ha több helyen is használod ugyanazt a kódot.

    Ha mondjuk egész kódrészleteket beraknál ide, akkor nagyobb eséllyel tudunk hibát keresni mi is....

  • alexy92

    aktív tag

    válasz sztanozs #2852 üzenetére

    Szia,

    Délután meg tudom próbálni. selection.copy-nak kell hibát dobnia, mert van amikor üres amit másolok, és akkor ugye az egész sheetet másolná ki (1004-es hiba), de van amikor van benne adat, ugye akkor másolni kéne, és folytatni a sub-ot.

  • sztanozs

    veterán

    válasz alexy92 #2849 üzenetére

    próbáld meg így:
    If Err Then

    Esetleg lehetne egy Err.Clear az On Error Resume Next előtt...
    Amúgy nem lehet, hogy Selection.Copy mindig hibát dob neked? Asszem talán akkor is hibát dob, ha nem az aktív lapon van a Selection...

  • alexy92

    aktív tag

    válasz Ispy #2850 üzenetére

    Szia,

    Sajnos nem vagyok még expert, így tudnál segíteni a változóban? Illetve a változó minden sub elejére kell?
    Azt látom, ott ahol hibára futok, oda kell majd berakjam az on error goto VÁLTOZÓ. ÉS a változóban lesz majd az iferror, a subok elején meg az Iserror-t false-á teszem.

    Köszi!

  • Ispy

    nagyúr

    válasz alexy92 #2849 üzenetére

    Rakjál be egy breakpointot az else-re és nézzed meg mi az értéke az Err.Number-nek.

    Én csinálnék egy class szintű változót (IsError), majd on error goto ...., ide beraknám, hogy IsError = True, majd Resume, IF IsError = True Then sub2 Else sub 3 END IF a subok elején meg IsError = False.

  • alexy92

    aktív tag

    válasz sztanozs #2848 üzenetére

    Szia,

    Szétszedtem, de mindig ez ELSE-re fut, ha hiba van, ha nem. Mi lehet a probléma?

    Köszi!

  • sztanozs

    veterán

    válasz alexy92 #2847 üzenetére

    szedd szét így, és tudod majd debugolni:
    If Err.Number <> 0 Then
    sub3
    Else
    sub2
    End If

  • alexy92

    aktív tag

    válasz Delila_1 #2846 üzenetére

    A probléma az, hogy,

    Sub1
    művelet
    művelet
    művelet
    On Error Resume Next
    Selection.Copy <- itt szokott kijönni az 1004-es hiba, mert sok a kijelölt cella
    If Err.Number <> 0 Then sub3 Else sub2
    művelet
    művelet
    művelet
    end

    sub2
    On error goto 0
    művelet
    művelet

    Ha én a kövi sub elején nullázom le, akkor a kövi subot folytatja, az if err.number utáni részt elhagyja, ha hibára fut, ha nem. Értelemszerűen, ha hibára fut, akkor jól teszi, de nekem jelenleg hiba nélkül is átugorja.

    Köszi!

  • alexy92

    aktív tag

    válasz Delila_1 #2844 üzenetére

    Az a gond, hogy az iferror után nekem minden sub-ban kb 200+ sor van, és azt szeretném, hogy ha nincs error, ebben a kiemelt részben, akkor folytassa magát a subot. Ha lenullázom a kövi sub-ban, akkor az ott fog élni, de az előző subon nagy része nem fut le.

  • alexy92

    aktív tag

    válasz Delila_1 #2817 üzenetére

    Szia,

    Most sikerült ténylegesen foglalkoznom vele, és a helyzet az, hogy szépen tovább lép a suboknál, de sajnos akkor is amikor nem dobna fel hibát. Mit ronthattam el ?

    On Error Resume Next
    Selection.Copy <- itt szokott kijönni az 1004-es hiba, mert sok a kijelölt cella
    If Err.Number <> 0 Then kövi utáni sub Else Kövi sub

    De itt mindig a "kövi sub" jön ki.

    Előre is köszönöm,
    Viktor

  • vilag

    tag

    válasz Amiens #2841 üzenetére

    Köszönöm!

    Ez a triviális megoldás nem jutott eszembe, gondoltam elegánsabb lekérdezni az excelből ha már tudja, így attól az elképzeléstől nem tudtam elvonatkoztatni.

    Kicsit alakítani kellett rajta, mert a "fejléc" 14 sor, de sikerült megoldani.

  • Amiens

    tag

    válasz vilag #2839 üzenetére

    Akkor még egyszerűbb a dolgunk:
    szurt = Application.WorksheetFunction.Subtotal(3, Range("A2:A10"))

  • vilag

    tag

    válasz Amiens #2838 üzenetére

    Lényeges lenne, hogy VBA-ból lehessen lekérdezni, mert a szűrési folyamat is onnan fut és ha nincs találat akkor hibára futok.

    Ezzel szeretném ezt kiküszöbölni, mert ha a szűrés eredményeként 0 találat van, akkor azt már könnyedén le tudom kezelni.

  • vilag

    tag

    Sziasztok!

    Az lenne a kérdésem, hogy lekérdezhető-e valahogyan az autofilterrel szűrt találatok eredménye?

    A bal alsó sarokban ugye kiírja, hogy "4061 rekordból 13 rekordot talált"

    Ez utóbbi számot szeretném valahogy VBA-ban lekérdezni.

    Megoldható ez?
    Googliban és VBA-ban sem találtam megoldást (ez persze nem azt jelenti, hogy nem is létezik megoldás).

    Üdv, vilag

  • sztanozs

    veterán

    válasz Bazs87 #2835 üzenetére

    Ok, mindent bele és gyúrj rá a keresésre - szinte minden esetlegesen felmerülő problémádra van már megoldás.

  • Bazs87

    tag

    válasz sztanozs #2834 üzenetére

    a gyakorlat meg az évek :)

    nekem ez konkrétan az első excel makróm:p

    köszi a tippet!

  • sztanozs

    veterán

    válasz Bazs87 #2833 üzenetére

    Google 5sec, első második találat (bár az elsőben is ott van, csak nem az első válaszban és kicsit fellengzősebben):
    With ActiveWindow
    If .FreezePanes Then .FreezePanes = False
    'Freeze F6: 5 oszlop és 6 sor zárolása
    .SplitColumn = 5 'fix oszlopok száma
    .SplitRow = 6 'fix sorok száma
    .FreezePanes = True
    End With

  • Bazs87

    tag

    válasz sztanozs #2831 üzenetére

    ActiveWindow.FreezePanes = False
    Range("F7").Select
    ActiveWindow.FreezePanes = True

    Ha 2D-s zárolást szeretnék(azért mert ha csak 1D-t csinálok kizárólag az első sor lehet valamilyen beteg ok miatt zárolva, viszont én az első x sort szeretném zárolni), akkor vmivel ki kell jelölnöm, hogy honnan zárjon és manuális megoldással ezt az odaklikkeléssel lehet elérni.
    Talán van valamilyen expert funkció, de sajnos én nem ismerem.
    Nyitott vagyok és érdeklődő ;)

  • Delila_1

    veterán

    válasz sztanozs #2831 üzenetére

    Még ahhoz sem.

    range("a1:d10").copy range("m20")

    vagy
    Range("a1:b10").Copy
    Range("m5").PasteSpecial xlPasteValues

  • sztanozs

    veterán

    válasz Bazs87 #2829 üzenetére

    Miért kell selectelned? Az maximum copy-paste-hez kell.
    Minden mást meg lehet oldani ActiveCell nélkül.

  • Bazs87

    tag

    válasz Bazs87 #2829 üzenetére

    megoldódott ActiveCell-string, az odavissza kapcsolgatás meg nem szép:D Imsertek esetleg jobb megoldást?

  • Bazs87

    tag

    Sziasztok!

    A fórumot olvasva kedvet kaptam az excel vba-hoz. Olyan amatőr kérdésem lenne, hogy hogyan tudom visszakapni a felhasználó által aktuálisan kiválasztott cellát? És milyen változóban tudom az értéket kimenteni?

    A zárolt sor oszlopnál selectelnem kell, de elég idegesítő, h ugrál a kurzor. Az elején lementeném a végén pedig visszanavigálnék ugyanoda. Elméletem szerint így észre sem lehetne venni a működését.

    Netán hamvába holt ötlet?

    Köszi!
    Bazs87

  • sztanozs

    veterán

    válasz martonx #2826 üzenetére

    Mert a DLL addin-t (XLL) telepíteni és regisztrálni kellene ami a jelenlegi környezetben igen macerás.

  • martonx

    veterán

    válasz sztanozs #2823 üzenetére

    Miért nem írsz te magad egy excel addin-t normális .Net-ben? És utána azt használhatnád Excel VBA-ból. Hozzáteszem csak ötletelek, nem tudom, hogy ez járható út-e?

  • sztanozs

    veterán

    válasz Ispy #2824 üzenetére

    Köszi, ezt én is megtaláltam már. Az a baj ezzel, hogy ezek nem .NET FileStream objektum megoldások, hanem a VBScript-ben is használt FSO (FileSystemObject). Ezt nem tudom megetetni a másik (SHA512Managed) .NET osztállyal.

  • Ispy

    nagyúr

    válasz sztanozs #2823 üzenetére

    Hát ilyet én még nem csináltam VBA-ban (szerencsére már semmi nem csinálok VBA-ban jó ideje :D ), de a gugli szerint lehetséges.

  • sztanozs

    veterán

    válasz Ispy #2822 üzenetére

    Szeretnék VBA alatt elérni a System.IO.File statikus osztályt, hogy a File.Open statikus függvénnyel FileStream-et állítsak elő. Ehelyett nekem az is megfelelő, ha a FileStream osztály inicializálni tudom. De ugye VBA alatt csak defualt - argumentum nélküli - konstruktor hívható, de a FileStream-nek nincs ilyen, ezért a new keyword sem használható.

    Igazából az volna, hogy most működő - Excel addin - System.Security.Cryptography.SHA512Managed objekumomat nem byte-array-jel etessem meg, hanem FileStream-mel. Ez egyrész jóval gyorsabb, másrészt memóriatakarékosabb, harmadrészt működik 2GB feletti fájlokkal is.
    PowerShell és natív .NET kilőve. Esetleg még VBS jöhet szóba, de az ugyanez a tészta.

  • Ispy

    nagyúr

    válasz sztanozs #2821 üzenetére

    Inkább írd le, hogy pontosan mit szeretnél csinálni, és meglátjuk arra tudunk-e válaszolni. :)

    Valami szöveges fájlból szeretnél adatokat kinyerni?

  • sztanozs

    veterán

    Erre rá tudna pillantani valaki? [link]
    Tudom, hogy perverz, de nagyon kellene...

  • Bazs87

    tag

    válasz martonx #2819 üzenetére

    köszönöm a választ!

    én inkább delphiznék, de nagyon csábító, hogy a feladat nagyját elég lenne copyzni és otpimalizálni. Minden újraírni elég nagy favágás lenne valszeg. (excel funkciókat kellene átülteni egy programba és kicsit továbbokosítani)

    Mivel ismerős, akivel csinálom csak vb-ben van otthon, így csak ez marad, de akkor legalább ne a vb8-cal csináljuk...

    ideje lenne valamilyen naprakész rendszerrel is dolgozni, továbbá kizáró feltétel, hogy GUI is kell

  • martonx

    veterán

    válasz Bazs87 #2818 üzenetére

    Szia, a VBS tökéletes játszós nyelv, viszont semmi semmivel nem kopmatilibis aminek a nevében szerepel a visual basic.
    Ugyanakkor a szintaktikájuk azonos, szóval annyira nem vészes vbs-ről vb.net-re tovább mozdulni, pláne ha zöldmezős fejlesztésről van szó, akkor én csakis VB.NET-tel állnék neki (na jó én személy szerint C#-al, de a lényeg hogy .Net).

  • Bazs87

    tag

    Sziasztok!

    VBS-ezgetek egy ideje, nagyon tetszik, hogy nem kell semmit telepíteni és pofátlanul egyszerűen használható, mindezt úgy, hogy még regexp lib is van hozzá.

    Egy hobbiprojekt kapcsán megkeresett egy ismerősöm, hogy vb8-ban kellene valamit alakítani, ráadásul excel VBA funkciók átvételéve.
    Mi és mekkora a különbség a vb és a vb.net közt? Egyértelmű leírást nem találtam eddig, igaz csak pár percet gugliztam.

    Úgy gondoltam, h ha már vb.net akkor ne a 8-assal szerencsétlenedjünk, hanem az épp aktuális visual studio verzióval.

    Vajon nagy fába vágom a fejszém ezzel? (sima "adatbázis"építés txt-ben és azokkal manipulálgatni, komolyabb dolgok elvileg nincsenek benne)

    Köszi előre is!
    Bazs87

  • Delila_1

    veterán

    válasz alexy92 #2816 üzenetére

    A Module1-ben találod a makrókat.
    Írd meg a 9 rutint, ahol a

    Range("C" & sor) = Range("A" & sor) / Range("B" & sor)

    sor helyére beírod a saját feladatodat. Az

    If Err.Number <> 0 Then RutinC Else RutinB

    sor helyén a saját rutinjaid nevét add meg! Minden rutinban különböző feladatokat adhatsz meg az én makróim osztása helyett.

  • alexy92

    aktív tag

    válasz Delila_1 #2814 üzenetére

    Szia,

    Sikerült megnéznem. A kérdésem az lenne, hogy ezt hogyan tudnám egy macroba rakni ?

  • alexy92

    aktív tag

    válasz Delila_1 #2814 üzenetére

    Köszi, sajnos a benti hálozatom letiltja az oldalt, de otthon megnézem, és visszajelzek!

  • alexy92

    aktív tag

    válasz Bobrooney #2812 üzenetére

    Köszi nézegettem, de nem nagyon érzem úgy, hogy az én megoldásom lenne.

    Csináltam egy képet, hogy ábrázoljam mi is az én bajom:

    És kb most 30-40 ilyen blokkról beszélek. Nem debugot keresek, hanem egyszerűen az általam választét részt hagyja el.

    Köszönöm!

  • alexy92

    aktív tag

    Sziasztok,

    Egy olyan makrón dolgozom, ami több hasonló műveletet végez el, több sheetről. A kérdésem az lenne, hogy van-e olyan parancs ami közé be tudom illeszteni az egyes részeket, hogy ha azon belűl bármi hibára fut, akkor azt a részt ne futassa le, hanem egyből a következő hasábra menjen?

    Előre is köszönöm!

  • Ispy

    nagyúr

    válasz Pali79 #2807 üzenetére

    Az is sokat segít, ha nem VB 6-os könyvből tanulsz .NET-et programozni :P

  • Bobrooney

    senior tag

    válasz Pali79 #2807 üzenetére

    Mint írtam annyi könyvet találsz mint a nyúlsz@r csak neki kéne esni.

  • Pali79

    aktív tag

    válasz Ispy #2806 üzenetére

    Próbáltam én, hidd el! Én sem szeretek ennyit kérdezni, de nem jutottam egyről a kettőre.

  • Pali79

    aktív tag

    Megint elakadtam... :W A régebbi leírásokba volt olyan, hogy INT, ez elméletileg a szám egész részét adja. Nekem az kell, hogy a számítás végeredménye csak egész legyen, nem kellenek a tizedes jegyek, de ilyet a linkelt leírásban sem találtam.

  • Pali79

    aktív tag

    válasz Ispy #2803 üzenetére

    Szuper, köszi! Bár most megoldottam 0,5 hatványozással, még egyszerűbb is.

  • Ispy

    nagyúr

    válasz Pali79 #2802 üzenetére

    Math functions

    A kód elejére ird be, hogy Import system.math, vagy ahol használni akarod oda, hogy Math.sqrt.

  • Pali79

    aktív tag

    Újabb kérdés: hogyan lehet gyökvonást csinálni? A neten Sqrt parancsot olvastam, de ilyen nincs a parancslistában.

  • Bobrooney

    senior tag

    válasz Pali79 #2800 üzenetére

    Egy kicsit járj utána a dolgoknak, magyarul is találsz rengeteg könyvet, legalább a vezérlőket lesd meg, meg hogy miket tudnak, hidd el könnyebb dolgod lesz. Pl:
    [link]

Új hozzászólás Aktív témák

Hirdetés