zapiranje okna
zapiranje okna
pozdravljeni
imam malo težavico,upam pa ,da za vas ne bo prehudo.
z makrom kličem naslednje:
Workbooks.Open Filename:=Application.GetOpenFilename
no, včasih to okno izklopim na krizcu,nakar mi makro javi napako.
torej,kaj storiti,da se okno zapre brez javljanja napake.(še bolj elegantno bi bilo, če bi se mi ob tem dejanju zaprl kar cel delovni zvezek
za odgovor se vam najlepše zahvaljujem.
lp
imam malo težavico,upam pa ,da za vas ne bo prehudo.
z makrom kličem naslednje:
Workbooks.Open Filename:=Application.GetOpenFilename
no, včasih to okno izklopim na krizcu,nakar mi makro javi napako.
torej,kaj storiti,da se okno zapre brez javljanja napake.(še bolj elegantno bi bilo, če bi se mi ob tem dejanju zaprl kar cel delovni zvezek
za odgovor se vam najlepše zahvaljujem.
lp
Ha, kaj pa funkcija GetOpenFileName vrne, če zaprete okno...? Vrne false in to ni Excelova datoteka, zato jo slednji pač ne more odpreti in javi napako. Bo potrebno najprej prebrati ime v neko spremenljivko in nato če je vse OK šele odpreti datoteko, če pa datoteka ni izbrana pa vseskupaj pač zapreti (takšnaje vaša želja):
Koda: Izberi vse
Dim IzbranaDatoteka
IzbranaDatoteka = Application.GetOpenFilename
If (IzbranaDatoteka <> False) Then
Workbooks.Open Filename:=IzbranaDatoteka
Else
ThisWorkbook.Close
End If
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen Matjaž
že spet ne gre....
rad bi nadaljeval z vprašanjem,katerega sam ne znam rešiti.
v programu imam uporabljeno eno od vaših kod,ki ste jo nekoč napisali in se glasi takole:
-v kolikor ne izberem datoteke in pritisnem gumb odpri,potem naj se okno
in program zapre
in drugo:
-v kolikor pritisnem na križec,potem naj se okno in program zapre(torej enako,kot v prvem primeru)
(sodelavci kiksajo in tudi jaz)
kot sem že rekel,sem zadevo skušal spremeniti in vključiti vašo včerajšno
rešitev,toda joj... naredil sem pravo zbrko.
prepričan sem ,da gre vam bolje od rok.
za pomoč se zahvaljujem
lp
že spet ne gre....
rad bi nadaljeval z vprašanjem,katerega sam ne znam rešiti.
v programu imam uporabljeno eno od vaših kod,ki ste jo nekoč napisali in se glasi takole:
v to kodo pa bi rad vklučil še:Dim PotDoDatotek As Variant
Dim ImeNoveDatoteke As String
Dim i As Byte
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(PotDoDatotek) = True Then
'Workbooks.Add
ImeNoveDatoteke = ActiveWorkbook.Name
For i = LBound(PotDoDatotek) To UBound(PotDoDatotek)
Workbooks.OpenText Filename:=PotDoDatotek(i), _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:= _
xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))
ActiveWorkbook.Sheets(1).Move Before:=Workbooks(ImeNoveDatoteke).Sheets(1)
Next i
End If
-v kolikor ne izberem datoteke in pritisnem gumb odpri,potem naj se okno
in program zapre
in drugo:
-v kolikor pritisnem na križec,potem naj se okno in program zapre(torej enako,kot v prvem primeru)
(sodelavci kiksajo in tudi jaz)
kot sem že rekel,sem zadevo skušal spremeniti in vključiti vašo včerajšno
rešitev,toda joj... naredil sem pravo zbrko.
prepričan sem ,da gre vam bolje od rok.
za pomoč se zahvaljujem
lp
Sem iskal neko tematiko in videl, sa sem tole vprašanje spregledal....
No tukaj je odgovor:
PS: Če odgovora ne dobite par dni, dopišite kaj v tematiko in tako bo "splavala" na vrh, kjer jo bomo hitreje opazili.
No tukaj je odgovor:
Koda: Izberi vse
Dim PotDoDatotek As Variant
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If Not (IzbranaDatoteka <> False) Then
ThisWorkbook.Close
Exit Sub
End If
Dim ImeNoveDatoteke As String
Dim i As Byte
If IsArray(PotDoDatotek) = True Then
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen Matjaž
nebi rad bil preveč siten,vendar,če se še tako trudim,nikakor ne znam
vključiti vaše zadnje kode v primer,ki sem ga zgoraj navedel.koda ki sem jo navedel(in je vaša),mi deluje ok,vendar tega vašega primera ne znam
uporabiti.
napisali ste
kaj pomeni:
If IsArray(PotDoDatotek) = True Then
kaj sledi nato
za znoret..
upam,da se me boste usmilili.
za odgovor se zahvaljujem.
lp
nebi rad bil preveč siten,vendar,če se še tako trudim,nikakor ne znam
vključiti vaše zadnje kode v primer,ki sem ga zgoraj navedel.koda ki sem jo navedel(in je vaša),mi deluje ok,vendar tega vašega primera ne znam
uporabiti.
napisali ste
Koda: Izberi vse
Dim PotDoDatotek As Variant
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If Not (IzbranaDatoteka <> False) Then
ThisWorkbook.Close
Exit Sub
End If
Dim ImeNoveDatoteke As String
Dim i As Byte
If IsArray(PotDoDatotek) = True Then
If IsArray(PotDoDatotek) = True Then
kaj sledi nato
za znoret..
upam,da se me boste usmilili.
za odgovor se zahvaljujem.
lp
Oh, dajte no, malo se pa tudi lahko potrudite. Kaj mislite kam morate dati to kodo??? Ja v vaš makro, kam pa drugam? Gre pač za to, da nisem pošiljal celotnega makra, če se spremeni samo majehn del
Torej (vaša poslana koda):
Moja poslana koda:
In skupaj (zamikov nisem popravljal, čeravno si ne predstavljam kako ste iz kakeršnekoli moje kode dobili skrpucalo brez presledkov in brez repa in glave) - Spremenjenih je prvih 5 vrstic!:
Torej (vaša poslana koda):
Koda: Izberi vse
Dim PotDoDatotek As Variant
Dim ImeNoveDatoteke As String
Dim i As Byte
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(PotDoDatotek) = True Then
'Workbooks.Add
ImeNoveDatoteke = ActiveWorkbook.Name
For i = LBound(PotDoDatotek) To UBound(PotDoDatotek)
Workbooks.OpenText Filename:=PotDoDatotek(i), _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:= _
xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))
ActiveWorkbook.Sheets(1).Move Before:=Workbooks(ImeNoveDatoteke).Sheets(1)
Next i
End If
Koda: Izberi vse
Dim PotDoDatotek As Variant
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If Not (IzbranaDatoteka <> False) Then
ThisWorkbook.Close
Exit Sub
End If
Dim ImeNoveDatoteke As String
Dim i As Byte
If IsArray(PotDoDatotek) = True Then
Koda: Izberi vse
Dim PotDoDatotek As Variant
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If Not (IzbranaDatoteka <> False) Then
ThisWorkbook.Close
Exit Sub
End If
Dim ImeNoveDatoteke As String
Dim i As Byte
If IsArray(PotDoDatotek) = True Then ' tu se pač nadaljuje vaša koda
'Workbooks.Add
ImeNoveDatoteke = ActiveWorkbook.Name
For i = LBound(PotDoDatotek) To UBound(PotDoDatotek)
Workbooks.OpenText Filename:=PotDoDatotek(i), _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:= _
xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))
ActiveWorkbook.Sheets(1).Move Before:=Workbooks(ImeNoveDatoteke).Sheets(1)
Next i
End If
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen
hja,Matjaž,saj,saj .... sem točno to počel,kar ste sedaj tudi vi napisali,vendar ker mi ni pravilno delovalo, sem mislil,da delam narobe.
namreč,ko izberem datoteko,mi v trenutku zapre okno.to je problem.
torej:
-če ugasnem na križec-se zvezek zapre(pravilno)
-če ne izberem datoteke in kliknem odpri,potem se zvezek zapre(zopet pravilno)
-če izberem datoteko,potem se zvezek zapre(to je nepravilno).
no,tu pa sem res prekratek.
zanima me ,kje je napaka?
za odgovor se zahvaljujem.
lp
hja,Matjaž,saj,saj .... sem točno to počel,kar ste sedaj tudi vi napisali,vendar ker mi ni pravilno delovalo, sem mislil,da delam narobe.
namreč,ko izberem datoteko,mi v trenutku zapre okno.to je problem.
torej:
-če ugasnem na križec-se zvezek zapre(pravilno)
-če ne izberem datoteke in kliknem odpri,potem se zvezek zapre(zopet pravilno)
-če izberem datoteko,potem se zvezek zapre(to je nepravilno).
no,tu pa sem res prekratek.
zanima me ,kje je napaka?
za odgovor se zahvaljujem.
lp
Ja, napačen je IF stavek, saj se sprašuje na nekaj, kar ni nikjer defirano (posledica tega, da kode ne testiram, temveč jo pišem kar v forum). If stavek:
Zamenjajte z sledečim if stavkom:
Spremenljivka IzbranaDatoteka ni nikjer inicializirana (v kodi se je znašla, ker sem popravljal kar mojo prvo posredovano kodo, ki pa je polnila spremenljivko IzbranaDatoteka....)
Koda: Izberi vse
If Not (IzbranaDatoteka <> False) Then
Koda: Izberi vse
If Not (PotDoDatotek <> False) Then
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen Matjaž
naj povem,da sem to napako v kodi tudi sam opazil,vendar raje molčim,ker pač nisem preveč siguren vase,toda glej ga zlomka,tudi ko sem zamenjal IF stavek,mi javi:
Run-time error '13':
type mismatch
in se ustavi na :
ne znam kaj dosti z makri,toda res mi ni jasno,zakaj se ustavlja,saj je vendar sedaj vse pravilno definirano.koda mi je celo logična,toda navkljub vsemu, sem ostal brez idej .
kje mislite,da grešim?
(sedaj pravilno deluje le,ko ugasnem na križcu)
za odgovor se zahvaljujem.
lp
naj povem,da sem to napako v kodi tudi sam opazil,vendar raje molčim,ker pač nisem preveč siguren vase,toda glej ga zlomka,tudi ko sem zamenjal IF stavek,mi javi:
Run-time error '13':
type mismatch
in se ustavi na :
Koda: Izberi vse
If Not (PotDoDatotek <> False) Then
kje mislite,da grešim?
(sedaj pravilno deluje le,ko ugasnem na križcu)
za odgovor se zahvaljujem.
lp
Sem moral dati kodo v Excel in pač resnično poizkusiti, kaj sploh dela. Ja, problem je v možnosti izbire več datotek hkrati... No spodaj imate kodo, ki pa sedaj zagotovo dela, saj sem jo prizkusil:
Koda: Izberi vse
Dim PotDoDatotek As Variant
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(PotDoDatotek) Then
Dim datoteka
For Each datoteka In PotDoDatotek
' sem gre vaša koda, ki obdela posamezno datoteko
Next
Else
ThisWorkbook.Close
End If
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator