- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Microsoft Excel topic
- Crypto Trade
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- MinDig TV
- Rendszergazda topic
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
- ArchiCAD és Artlantis topik
-
IT café
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
félisten
Hali!
Excel_Filename = "d:\munkafüzet1.xlsx"
Workbooks.Open filename:=Excel_Filenamevagy akkor
Excel_Filename = ThisWorkbook.FullName
Aztán itt lefut a makró többi része, és az Excel_Filename-be megkapod a fájlnevet, ezzel meg létrehozhatsz egy munkalapot pl így
Sheets.Add.Name = Excel_Filename,
aztán meg így hivatkozol rá pl Worksheets(Excel_Filename).ActivateRemélem erre gondoltál.
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Pulsar
veterán
válasz Fire/SOUL/CD #5952 üzenetére
szóval most így néz ki a makró, de nem fut le. Mint bénáztam el?
Sub masolas_adat()
Excel_Filename = ThisWorkbook.FullName
Workbooks.Open FileName:="C:\Production_Daily.xls"
Columns("A:G").Select
Selection.Copy
Windows(Excel_Filename).Activate
Sheets("IDE_MASOLD").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Windows("Production_Daily.xls").Activate
ActiveWindow.Close
Application.CutCopyMode = True
End Sub -
Cuci3
tag
Annyi a gon, hogy nem a FullName-et kell használnod, csak a Name-et. FullName az elérési útvonalat is tartalmazza (c:\blblbla.xls), míg a Name csak a fájl nevét és kiterjesztését (blablabla.xls).
Lentebb az átírt kód, kommentált kód. Bocs, de az elérési utat, fájlneveket nem volt kedvem visszaírni.Option Explicit 'deklarálás nélkül nem lehet változót használni
Sub masolas_adat()
Dim excel_filename, filename2 As String
excel_filename = ThisWorkbook.Name
Workbooks.Open Filename:="E:\Munkafüzet2.xls"
filename2 = ActiveWorkbook.Name
'én azért ide tennék valami kiválasztást, hátha megnyitás után rossz sheet az aktív
Columns("A:G").Select
Selection.Copy
Windows(excel_filename).Activate
Sheets("Munka2").Activate
'Workbooks(excel_filename).Sheets("Munka2").Activate
'én jobban szeretem a Workbooks(excel_filename) hivatkozást, de mind1
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Windows(filename2).Activate
'vagy Workbooks(filename2).Activate
ActiveWindow.Close
Application.CutCopyMode = True 'Biztos kel ez a sor? Nekem tök felelslegesnek tűnik.
End Sub[ Szerkesztve ]
-
Pulsar
veterán
Szia!
Működik, köszönöm!Application.CutCopyMode = True 'Biztos kel ez a sor? Nekem tök felelslegesnek tűnik.
Hát szerintem igen. Mert elötte kikapcsolom a vágólapot (így küszöbölöm ki a "nagy méretű adat van a vágólapon, biztos hogy bezárja a file-t" ablakot. Vissza meg azért kapcsolom, mert ha még egyszer futtatom akkor is lefusson... vagy ez hülyeség?
-
Cuci3
tag
Hello-bello!
Tud valaki olyan honlapot, oldalt, ahonnan példákon keresztül jól el lehet sajátítani a VBA programozását? Olyan szájbarágósat, ami mondjuk nem a redimmel kezdi.
Amúgy én is inkább könyvet mondanék, de haverom még 6 hónapig Japánban van, és ő sem tudja elolvasni azokat a kriksz-krakszokat.
A honlap lehet magyar vagy angol. Köszi! -
Pulsar
veterán
Sziasztok!
Chek boxot szeretnék alkalmazni, csak nem tudom, hogy hogyan.
A következőt szeretném megoldai:Van egy csomó hivatkozásom:
Sub futtat()
Application.ScreenUpdating = False
Application.Run ("masolas_adat")
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")Azt szeretném, hogyha a check box be van jelölve, akkor ne történjen semmi, de ha nincs bepipálva, akkor a Application.Run ("masolas_adat") nélkül fusson le a cucc.
Ilyen megoldható? -
Delila_1
Topikgazda
válasz szabi6k #5962 üzenetére
Az első helyezettet akár a MAX függvénnyel is kiírathatod, de a NAGY függvény is jó, ami a következő kettőt is megadja.
=NAGY(tartomány;helyezés)
A helyezés helyére írod azt a számot, ahányadik helyezettet le akarod kérdezni.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A CheckBox-ok segítségével kiválasztod, hogy mit akarsz tenni. Tegyél be egy gombot, és az hajtsa végre a feladatot a CheckBox-ok állásának megfelelően.
A primitív példa a CommandButton1 lenyomására az A1-be beírja a CheckBox1 állapotát.
A makrót a vezérlőket tartalmazó laphoz kell rendelni.Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Cells(1) = "BE"
Else
Cells(1) = "KI"
End If
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Pulsar
veterán
válasz Delila_1 #5966 üzenetére
van nyomógombom
Tát ha így jó lenne:
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Application.ScreenUpdating = False
Application.Run ("masolas_adat")
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
Else
Application.ScreenUpdating = False
' Application.Run ("masolas_adat") <--- vagy kitörlöm ezt a sor, mind1, csak így látványosabb
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
End If
End Sub -
Delila_1
Topikgazda
Az Application.ScreenUpdating=False sort még az If elé tenném (mert az nem függ a CheckBox állásától), az End Sub előtt pedig feltétlenül állítsd vissza True-ra. Másképp a makró futása után letiltva marad a képernyő frissítése, hacsak az utoljára futtatott makró nem a frissítés visszaállításával végződik. Mindenesetre elegánsabb, ha ott állítod vissza, ahol letiltottad.
Az innen futtatott makrókban nem kell külön tiltani, ill. engedélyezni.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Még egy apróság:
Ha tabulátorokkal tagolod a makrót, sokkal áttekinthetőbb lesz, az esetleges hibákat is könnyebb megtalálni benne. Érdemes megjegyzéseket beírni az egyes sorokhoz a későbbi módosítás megkönnyítéséhez. Valahogy így:Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If CheckBox1.Value = True Then
Application.Run ("masolas_adat")
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
Else
'Application.Run ("masolas_adat") Nem kell, ha a CheckBox1 jelöletlen
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
End If
Application.ScreenUpdating = True
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
ulrik19
tag
válasz Delila_1 #5971 üzenetére
Még egy kis szőrözés (bocsi érte)
1) elegendő lenne így is:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If CheckBox1.Value Then
masolas_adat
End If
reogitesreceiving
reogitesvisual
reogitesquicktest
reogitesfct
Application.ScreenUpdating = True
End Sub2) de ha mégis szükséges az application.run, akkor nem muszáj zárójelet használni az argumentumnál, mert nincs visszatérési érték. (de ez már tényleg csak szőrszálhasogatás )
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
Pulsar
veterán
Milyen szerények vagyrok, holott NAGY MESTEREK vagytok!
Még egy kérdés:
Segítettetek abban, hogy hogyan tudok a file nevére hivatkozni
excel_filename = ThisWorkbook.NameUgyanígy van mód a file create time-jára is hivatkozni?
-
VANESSZA1
őstag
Az után érdeklődnék, hogy Excel fájl-ba be lehet-e illeszteni egy Word fájl-ban található adatot vagy magát az egész Word doksit?
Precision M7710_&_Precision M7740- CPU: 9980HK, RAM: 32GB/3200MHz, GPU: RTX5000, IGZO 4K-UHD, SSD: 2TB Force MP510, 2TB ADATA XPG SX8200 PRO, 1TB SK HYNIX Class 50 SSD
-
ulrik19
tag
válasz VANESSZA1 #5979 üzenetére
Lehet: Beszúrás/objektum/Létrehozás fileból...
ott kiválasztod a file-t, és azt is, hogy csatolja (ha módosítod a word doksit, akkor az excelben is a módosított fog mindig látszódni), vagy ágyazza be (ilyenkor a beillesztéskori állapot megmarad, hiába írod át a .doc-ot később)...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
ulrik19
tag
válasz ulrik19 #5980 üzenetére
és hogy teljes legyen a kép, ezeket lehet lekérni
Title
Subject
Author
Keywords
Comments
Template
Last Author
Revision Number
Application Name
Last Print Date
Creation Date
Last Save Time
Total Editing Time
Number of Pages
Number of Words
Number of Characters
Security
Category
Format
Manager
Company
Number of Bytes
Number of Lines
Number of Paragraphs
Number of Slides
Number of Notes
Number of Hidden Slides
Number of Multimedia Clips
Hyperlink Base
Number of Characters (with spaces)(word-del együtt elvileg)
[ Szerkesztve ]
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
Delila_1
Topikgazda
válasz ulrik19 #5980 üzenetére
Ez lefordítva
Sub DátumNév()
Dim FN, utvonal
utvonal = "C:\"
FN = Left(ActiveWorkbook.BuiltinDocumentProperties("Creation date").Value, 11)
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
ulrik19
tag
válasz Delila_1 #5984 üzenetére
ja, erre szeretné használni? mármint, hogy a létrehozási dátum:idő néven mentse el?
(de ilyenkor a file-név mindig az "előző file" létrehozási nevén futna, mármint amiben futtatták a makrót...)...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
ulrik19
tag
válasz Delila_1 #5986 üzenetére
Persze-persze, az világos. Az logika nem világos nekem, hogy mire fog menni az így kialakított filenevekkel. (mármint azért, mert ugye egy adott file neve annak a file-nak a létrehozási dátuma lesz, amiből létrehozták. Mert ha mindig az aktuális dátum idő lenne benne, azt még érteném )
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
Delila_1
Topikgazda
... és hogy a füzet előző neve se maradjon ki:
Sub MentésElőzőnévÉsDátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
FN = FN & "_" & Left(ActiveWorkbook.BuiltinDocumentProperties("Creation date").Value, 11)
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End Sub[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz ulrik19 #5987 üzenetére
Erre az esetre
Sub MentésElőzőnévÉsMaidátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
FN = FN & "_" & Date
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End SubBár ezzel az a baj, hogy az első ilyen mentés után a fájlnév tartalmazza a mentés dátumát, a következő mentésnél 2, majd 3, végül n db dátum lesz a névben. Hacsak az
FN = Left(...) sorban le nem vonjuk minden alkalommal az előző dátumot is.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
ulrik19
tag
válasz Delila_1 #5988 üzenetére
húha, egyre inkább nem értem
ha mindig az abszolút eredeti file-ból futtatja ezt a kódot, akkor mindig ugyanazon a file-néven fogja elmenteni (mert ugye a létrehozási dátum nem változik)
ha mindig az újonnan létrejött file-ból futtatja, akkor meg egyre hosszabb filenév lesz, mert mindig hozzáfűzi a dátumot.
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
-
Delila_1
Topikgazda
válasz ulrik19 #5990 üzenetére
Hogy mind az első, mind az összes többi mentés korrekt legyen:
Sub MentésElőzőnévÉsDátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
If Len(ActiveWorkbook.Name) > 15 Then
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 15)
Else
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
End If
FN = FN & "_" & Date
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End SubEz a 2007-nél régebbi verziókra vonatkozik, 2007-nél a levonás 16, és 5, a 4 jegyű kiterjesztés miatt.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Pulsar
veterán
Húúha.. kicsit félre értettétek a feladatot.
Amit szeretnék, hogy van egy file, amit egy makró megnyit (xls az is). Ezt a file-t bizonyos indőnként egy szerver generálja. a neve mindig ugyanaz, felülíródik. amikor ebből a file-ból kiolvasom az adatokat (sima egyszerű kijelölés másolás) akkor kellene még ennek a file-nak az keletkezési ideje, egy cellába, abba a file-ba ahonnan a makrót futtatom
remélem így értitek. -
Delila_1
Topikgazda
Sub dátum()
Workbooks("Munkafüzet1").Sheets("Munka1").Range("A1") = Date
End SubA Munkafüzet1 helyett beírod az állandó füzeted nevét, ami a makrót tartalmazza, és átírod a Munka1 lap nevét, no meg az A1 cellát is a megfelelőre.
Ha az idő is kell a dátumhoz, a Date helyére Now() kerüljön.Ui.: Mivel a keletkezési ideje kell, a Now() az igazi. Azt kell megoldani, hogy a másik füzet megnyitásakor hajtódjon végre.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
-
ulrik19
tag
válasz Delila_1 #5994 üzenetére
Hú, nem tudom, jól értem-e amire gondoltál. De szerintem az alap excel file-hoz nem tud "hozzányúlni", mert egy totál független programból jönnek szerintem az adatok (adat exportálás excel formátumban menüpontszerűségből), vagyis nemhogy makrót, de még csak képletet, értéket (totál semmit) nem tud beszúrni.
Az sem kizárt, hogy igazából egy html formátum jön ki xls kiterjesztéssel
(egyébként a Date() és Now() mindig az adatkiolvasás időpontját és/vagy napját mutatná, nem a file létrejöttét. vagyis azt hiszem)
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
ulrik19
tag
válasz Delila_1 #5996 üzenetére
Az activeworkbook azért nem biztos, hogy jó, mert a makró nem abban a file-ban fut, aminek a dátuma kell, és nem biztos, hogy a dátum lekérdezésekor éppen az az aktív. Persze lehet úgy alakítani a kódot, de akkor már egyszerűbb egy direkthivatkozás: workbooks("filenév.xls")
[ Szerkesztve ]
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
Új hozzászólás Aktív témák
- Milyen TV-t vegyek?
- Gördeszka topic
- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Xbox Series X|S
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- BestBuy ruhás topik
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- További aktív témák...
- Warhammer Online - Age of Reckoning (DE) Collectors Box (Figurával!)
- World of Warcraft Shadowlands Collectors edition EU EN
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Eredeti Windows, telepítéssel! Digital Doctor Számítógép Szerviz