Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Vkládání dat z Excelu do (cizího) webového formuláře

Na webu je formulář pro zadávání dat uživateli, kolonky obsahují datum, čísla a texty (asi 10 údajů).
V excelu mám na listu požadované údaje, ve stejném formátu, jako vyžaduje formulář. Ne jednou, ale za více případů, pěkně v tabulce.

Existuje nějaká možnost, jak data jednoho případu (řádku) dostat hromadně do onoho webového formuláře? Pokud k tomu webu mám přístup jen jako uživatel? Pokud bych to chtěl kopírovat v rámci Excelu, postupoval bych tak, že bych na příslušném řádku měl fokus a následným příkazem (makro) bych provedl kopírování z oné databáze do kolonek/buněk cílového listu.

Teď to můžu akorát otrocky po jedné "kolonce" copy/pastovat. Protože vím, že se jedná o docela kontroverzní postup, raději teď neuvedu cílový web. V případě potřeby mohu upřesnit v PM.

Moc tomu nevěřím, že to půjde, ale náhoda je blbec :-)

Díky za reakce.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ještě bych to potřeboval malinko vylepšit :-) - data, která potřebuji kopírovat na web, jsou ve slo…
L-Core 05.12.2017 17:09
L-Core
Sub ConsCopy() Riad = ActiveCell.Row Den = Range("I" & Riad).Value Dalsi: If Range("A" & Riad) = ""…
robert13 06.12.2017 10:30
robert13
Díky. Ono to má být trochu jinak. Jakmile je ve sloupci H napsáno "x", makro (to kopírování hodnot)…
L-Core 06.12.2017 11:04
L-Core
aha, takže Ty neznačíš každý spracovaný riadok x-om ale len prvý výskyt toho dňa a to značí, že ten…
robert13 06.12.2017 11:16
robert13
Prostě po zapsání x chci hledat takový nejbližší řádek, kde je ve sloupci H nižší číslo než v tom řá…
L-Core 06.12.2017 11:30
L-Core
A to se mi právě nedaří... Makro mi zapsalo "x" do sloupce ("H & Riad") Vybral jsem vedlejší buňku…
L-Core 06.12.2017 11:36
L-Core
Nejak takto? (neskúmal som Tvoj kód, riešim Tvoje slovné vysvetlenia): Sub ConsCopy() Riad = Active…
robert13 06.12.2017 11:55
robert13
To je ono, díky :-) Já se trápil s For a ono to jde s Do until a loop. Akorát nevím, proč mi s tím…
L-Core 06.12.2017 12:10
L-Core
pre For potrebuješ nejakú hranicu. Keď nevieš, koľko položiek budeš preverovať, môžeš pridávať po je… poslední
robert13 06.12.2017 12:24
robert13

Ještě bych to potřeboval malinko vylepšit :-)

- data, která potřebuji kopírovat na web, jsou ve sloupcích A až G (kam "končí práci" to makro)
- data, která nakopíruji, označím "x" v buňce H (makrem)

Makro vypadá takto:

Sub jmeno_makra()

Riad = ActiveCell.Row
Stlp = Range("A" & Riad).End(xlToRight).Column

If Range("A" & Riad) = "" Then
    MsgBox "Nekorektní řádek", vbCritical
    Exit Sub
End If

For i = 0 To Stlp - 1
        Range("A" & Riad).Offset(0, i).Copy
        MsgBox "Obsah schránky:  " & Range("A" & Riad).Offset(0, i), vbInformation
Next i

Application.CutCopyMode = False
MsgBox "Konec řádku", vbExclamation

Range("H" & Riad).Select
ActiveCell.FormulaR1C1 = "x"

End Sub

- ve sloupci I (kam už makro díky práznému sloupci H nezasáhne) mám číslo, označující kalendářní den měsíce, seřazeno vždy plynule sestupně (to nelze změnit), bez přerušení, končí to "1". Položek=řádků za den je více, takže ve sloupci I je to třeba takto:

31
31
31
31
30
30
29
29
29
26
25
25
25
atd

Potřeboval bych to makro doplnit tak, aby fokus skočil (směrem dolů) na první řádek s nižším datumem (číslem) než kde právě makro "probíhalo". Další podmínkou je, že pokud už na takovém řádku je ve sloupci H záznam "x", aby vybral nejbližší další volný řádek toho dalšího (vlastně předchozího) dne. Pokud neexistuje (pro den může existovat třeba jen jeden - nebo i žádný - záznam), přejít na další den.

Viz obrázek, jak by to mělo "chodit":

[80554-excel-png]

Moc děkuji za pomoc. Já to s těmi if v makrech, kdy se prohledávají postupně další a další buňky, prostě neumím...

Sub ConsCopy()

Riad = ActiveCell.Row
Den = Range("I" & Riad).Value

Dalsi:

If Range("A" & Riad) = "" Or Range("H" & Riad) <> "" Then
    MsgBox "Nekorektný riadok", vbCritical
    Exit Sub
End If

For i = 0 To 6
        Range("A" & Riad).Offset(0, i).Copy
        MsgBox "Obsah Clipboard-u :  " & Range("A" & Riad).Offset(0, i), vbInformation
Next i

Application.CutCopyMode = False
MsgBox "Koniec riadka", vbExclamation
Range("H" & Riad) = "x"

Inkr:

Riad = Riad + 1
Range("A" & Riad).Select

If Range("I" & Riad) = "" Then
    MsgBox "Dospel som na koniec databázy", vbInformation
    Exit Sub
    ElseIf Range("H" & Riad) = "x" Then
    GoTo Inkr
        ElseIf Range("i" & Riad) = Den Then
        GoTo Dalsi
        Else: MsgBox "Koniec bloku pre deň " & Den, vbExclamation
        Den = Range("I" & Riad)
End If

End Sub

Program ukončí každý spracovávaný riadok oznamom "Koniec riadka" a označí ho "x"-om.
Pokiaľ za x-om ešte nasleduje ten istý deň, pokračuje ďalej v tento deň kopírovaním do Clipboardu, ak nie, oznámi koniec bloku, skočí na najbližší nižší bez-x-ový deň a čaká na opätovné spustenie.
Pokiaľ zostúpi až na koniec (t.j. v stĺpci I už nie je žiadny dátum), skončí činnosť a oznámi koniec databázy.

P.S.
1 Pokiaľ sa pokúsiš spustiť program v riadku s prázdnym obsahom v stĺpci A alebo v stĺpci už označenom "x", dostaneš hlášku o nekorektnom riadku.

2 Nastavil som to podľa toho, aký príklad si uviedol, t.j. v každom riadku sú naplnené stĺpce A až G, t.j. nezisťuje sa, či niektorý riadok nekončí skôr, než na stĺpci G

Díky.

Ono to má být trochu jinak. Jakmile je ve sloupci H napsáno "x", makro (to kopírování hodnot) musí skončit a najít nejbližší řádek předchozího dne (je to řazeno od 31 k 1), kde ještě nebylo ve sloupci H označeno "x".

Tedy nemělo by platiti toto:

Pokiaľ za x-om ešte nasleduje ten istý deň, pokračuje ďalej v tento deň kopírovaním do Clipboardu

Takže když spustím makro na řádku, kde je ve sloupci I hodnota 25, mělo by to po kopírování a zapsání "x" do I25 skočit na (další) řádek, kde je ve sloupci I hodnota 24. A zároveň ve sloupci H nesmí být "x"

Já na to chtěl jít tak, že nejprve nadu další den a pak budu ověřovat to x.

Ověření x (zda je/není ve sloupci H:

' hledani dalšího volného řádku, kde není "x"

For j = 1 To 10
    Range("H" & Riad + j).Select
    If Range("H" & Riad + j) = "" Then
        Exit For
    End If
Next j

Ale nedařilo se to hledání dalšího (vlastně předchozího) dne:
Tohle nefunguje:

Range("I" & Riad).Select
Denmesice = ActiveCell.Value

For k = 1 To 100
    Range("I" & Riad + k).Select
    If Range("I" & Riad + k).Value = "Denmesice - 1" Then
        Exit For
    End If
Next k

Prostě po zapsání x chci hledat takový nejbližší řádek, kde je ve sloupci H nižší číslo než v tom řádku, kde se právě x zapsalo. Až makro takový řádek najde (nižší datum, některé dny samozřejmě mohou chybět), ověří se, zda u toho řádku není x. Fokus se pak nastaví třeba na první sloupec takového řádku a makro se zastaví.

Následně je mohu zase ručně! (ne automaticky) spustit, z toho nového dne.

A to se mi právě nedaří...

Makro mi zapsalo "x" do sloupce ("H & Riad")
Vybral jsem vedlejší buňku (I) a její hodnotu (den měsíce) chci označit jako proměnnou (Denmesice)

Range("I" & Riad).Select
Denmesice = ActiveCell.Value

A pak jsem chtěl spustit cyklus tak dlouho, dokud se ve sloupci I neobjeví nižší hodnota, než byla na řádku, kde se to X zapsalo. A tam mám asi nějakou chybu, skončí mi to na dalším řádku stejného dne, neskočí to na další den (den s nižším číslem)..


For k = 1 To 100
    Range("I" & Riad + k).Select
    If Range("I" & Riad + k).Value = "Denmesice - 1" Then
        Exit For
    End If
Next k

Snad nevadí, že hodnota ve sloupci I není tam zapsané číslo, ale výsledek vzorečku =den(řádeksloupec), že se bere z datumu ve sloupci F. Pokud je tam třeba 26 (z datumu 26.10.2016), "poznačí" si

Denmesice = ActiveCell.Value

hodnotu
"26"

Nejak takto?
(neskúmal som Tvoj kód, riešim Tvoje slovné vysvetlenia):

Sub ConsCopy()

Riad = ActiveCell.Row
Den = Range("I" & Riad).Value

Dalsi:

If Range("A" & Riad) = "" Or Range("H" & Riad) <> "" Then
    MsgBox "Nekorektný riadok", vbCritical
    Exit Sub
End If

For i = 0 To 6
        Range("A" & Riad).Offset(0, i).Copy
        MsgBox "Obsah Clipboard-u :  " & Range("A" & Riad).Offset(0, i), vbInformation
Next i

Application.CutCopyMode = False
MsgBox "Koniec riadka", vbExclamation
Range("H" & Riad) = "x"

Do Until Range("I" & Riad) <> Den And Range("H" & Riad) <> "x"
    Riad = Riad + 1
Loop

Range("A" & Riad).Select

If Range("I" & Riad) = "" Then MsgBox "Dospel som na koniec databázy", vbInformation

End Sub

Zpět do poradny Odpovědět na původní otázku Nahoru