Příspěvky uživatele


< návrat zpět

Strana:  1 2 3   další »

Dobrý den,

podle návodu na stránce:

https://docs.microsoft.com/en-us/office/vba/api/excel.querytables.add

se pokouším napsat kód ve VBA, který by se mi vytvořil ODBC připojení k databázi na základě hodnot zapsaných v buňkách na listu Technical_1.

Kód mám napsaný, ale vyhazuje mi chybu Application-defined or Object-defined error 1004. VBA editor mi poukazuje na chybu v řádku, která začíná "set qt = ...". Já ale nemohu přijít na to, co tam mám napsáno špatně.

Nezkontroloval by někdo ten kód a neporadil, prosím?

Děkuji za Váš čas.

' Dostupne pro cely sesit:
Public P_iSeries As String
Public P_database As String
Public P_user As String
Public P_password As String
Public P_sqlstring As String

Sub Makro1()
'
' Makro1
'
' Klávesová zkratka: Ctrl+u
'

Dim sqlstring As String
Dim connstring As String

' Nacteni promennych parametru z bunek:
With ActiveWorkbook.Sheets("Technical_1")
P_iSeries = .Cells(11, 12).Value
P_database = .Cells(12, 12).Value
P_user = .Cells(13, 12).Value
P_password = .Cells(14, 12).Value
P_sqlstring = .Cells(27, 12).Value
End With

' Mezi uvozovky si muzu napsat cely SQL dotaz (string) - od prikazu select az napr. po order by:
sqlstring = " & P_sqlstring & "

' Connection string k databazi uvadet tady (zase do uvozovek protoze je to retezec):
connstring = "Driver={ISeries Access ODBC Driver};System=" & P_iSeries & ";Uid=" & P_user & ";Pwd=" & P_password & ";Library=" & P_database & ";QueryTimeout=0;charset=utf-8"

' Vytvorit QueryTable jako objekt s nazvem "qt":
Dim qt As QueryTable
Set qt = ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("C1"), Sql:=sqlstring)

' refresh dat (zacatek tabulky bude v bunce "C1"):
With qt
.RefreshStyle = xlInsertEntireRows
.Refresh
End With

End Sub

Mockrát děkuji oběma za odpověď. Velmi mi to pomohlo a zase jsem se něčemu novému přiučil. Obě řešení se dají v mém případě využít. Nejspíše použiji to řešení s tím INDEXem. To je totiž hodně parádní!

Děkuji.

Dobrý den,

rád bych se zeptal, zda jde nějakým způsobem nastavit podmíněné ověřování hodnot ve sloupci 2 podle vybraných hodnot ve sloupci 1, když je vše zformátováno jako Tabulka?

Pro lepší pochopení přikládám soubor v příloze - cílem je, abych mohl ve sloupečku K vybírat pouze hodnoty, které přísluší dané třídě.

Umím toto podmíněné ověřování nastavit přes nepřímý.odkaz (indirect), když cílová tabulka není formátovaná jako Tabulka. V tomto případě jde ale o formátovanou Tabulku a metoda s nepřímým odkazem mi nechce fungovat...

Moc děkuji za případné rady.

Ano, máte pravdu, to byl nejspíše ten problém. Děkuji za pomoc 1

Dobrý den, děkuji za odpověď. Zkouším tuto kontrolu do svého kódu dostat, ale dostávám compile error Else without If - v mém případě ani nepotřebuji žádnou chybovou hlášku, stačí mi, že pokud jméno a adresář souboru neexistuje (nebo je jiný), tak aby makro v tu chvíli skončilo. Kód mám napsaný takto:

Sub CustomWorkbook6()
Dim CWB6 As Workbook
'CustomWorkbook
Dim CFN6 As String
'Full Name of the file including file extension (e.g. .xlsm)
Dim CFP6 As String
'Full Path to the file including "\" in the end.
CFN6 = Sheets("MasterData").Range("BF20").Value
CFP6 = Sheets("MasterData").Range("BE20").Value
On Error Resume Next
Set CWB6 = Workbooks(CFN6)
On Error GoTo 0
If CWB6 Is Nothing Then Set CWB6 = Workbooks.Open(CFP6 & CFN6)
Else
If CWB6.Path <> CFP6 Then
Exit Sub
End If
End If
With CWB6
.Activate
End With
End Sub

Mnohokrát Vám děkuji za pomoc. Funguje přesně podle mých představ 1

Dobrý den,

mám vytvořený Excel sešit, ve kterém pomocí makra (tlačítko1) otevírám jiný sešit a chtěl bych napsat do kódu podmínku, která by při kliknutí na tlačítko1 nejdříve ověřila, jestli není otevíraný sešit již otevřený.

Pokud ne --> tak sešit otevřít,
Pokud ano --> přejít do již otevřeného sešitu.

Je vůbec možné něco takového napsat přes VBA? Pokud ano, neposkytl by mi někdo kód, který by toto řešil?

Děkuji mnohokrát za případné rady 1

elninoslov:
Moc děkuji za opravu kódu. Funguje perfektně. Spuštění makra při změně 1 -> 1 mi v mém případě nevadí, ale děkuji za přílohu, kterou si i tak uložím :-)

Dobrý den,

pokouším se napsat VBA kód, který by při změně hodnoty v určité buňce (v mém příkladu K3) spustil určité makro. Na buňku K3 mám navázaný rozevírací seznam o 2 položkách, když je zvolena 1. položka seznamu, v buňce K3 je zapsáno 1, když je zvolena 2. položka seznamu, v buňce K3 je zapsáno 2.

Kód mám zapsaný takto:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyCellRange As Range
Set MyCellRange = Range("K3")

If MyCellRange.Value = 1 Then
Call Macro1

ElseIf MyCellRange.Value = 2 Then
Call Macro2

If Not Application.Intersect(MyCellRange, Range(Target.Address)) _
Is Nothing Then

End If
End Sub


Takto zapsáno mi to ale nefunguje. Potřeboval bych, aby se požadované makro spustilo automaticky pokaždé, když uživatel vybere novou hodnotu rozevíracího seznamu (tzn. při každé změně z 1 na 2, nebo ze 2 na 1).

Děkuji za příp. odpovědi.

elninoslov: mnohokrát Vám děkuji, funguje výborně (ostatně jako vždy od Vás) 1

Tady je ještě ta příloha (Test.xlsx).

Děkuji.

Dobrý den,

ve stejném souboru řeším nyní ještě jeden problém na jiném listu, na kterém mám tabulku (zformátovanou jako Tabulka) a v ní ve sloupci A názvy školení (seřazené podle abecedy), jména zaměstnanců (nejsou v příkladu), datum, do kdy je dané školení u daného zaměstnance platné a příznak, jestli jde o platné školení nebo ne.

Do dalšího sloupečku bych potom potřeboval zapsat 1, pokud jde o platné školení (příznak ano) a jedná se o nejstarší (nejnižší) datum. Pokud je ale ve sloupci Název školení jedno školení vícekrát, tak 1 vypsat u daného školení pouze 1x. Špatně se mi to popisuje, příklad (Test.xlsx) asi řekne víc.

Zkoušel jsem různé kombinace funkcí AGGREGATE a SMALL, ale bohužel nevím, jak u těchto funkcí zahrnout více než 1 podmínku.

Děkuji za případné rady a přeji hezký den.

elninoslov: Mockrát děkuji ještě jednou :-)

elninoslov: mohl bych se ještě zeptat, jak upravit vzorec, pokud bych chtěl naopak do buňky Q6 zadat "Atribut 1", aby se mi na řádky vypsalo, která jména mají u tohoto atributu příznak "x"?

Tzn. v příkladu bych zadal do buňky Q6 Atribut 1 a na řádcích by se mi vypsalo pod sebou John, Jane, Pavel a Yoda?

Bohužel mi totiž není moc jasné, co přesně dělají vnořené funkce SMALL(KDYŽ(POSUN))) v příkladu.

Děkuji mnohokrát.

Dobrý den,

mnohokrát děkuji oběma za obrovskou pomoc a inspiraci. Zase jsem se tady něčemu přiučil :-)


Strana:  1 2 3   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 9:02

Vynásobit hodnoty kurzem - Power Query

elninoslov • 25.4. 8:40

Relativní cesta - zdroje Power Query

Alfan • 25.4. 8:04

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 0:34

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26