- iPhone topik
- Vékonyabb lett, jobb kamerát kapott, de az akku maradt a régi: itt a Fold7
- Légies iPhone halvány színei
- Motorola Moto G56 - bátyja árnyékában
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- HMD Skyline - jó szerelés
- Milyen okostelefont vegyek?
- Apple iPhone SE - se vele, se nélküle
- Bővebb Google-támogatást kap sok Garmin óra
- Google Pixel topik
Új hozzászólás Aktív témák
-
válasz
lasarus1988 #1270 üzenetére
hogyan törölhetem egy könyvjelző tartalmát word-ben makróból
Sehogy, pontosabban úgy, hogy magát a könyvjelzőt törlöd, majd azonnal létrehozod"hogyan választhatom ki a fejlécben szereplő könyvjelzőt? Csak ott nem működik"
Sehogy, számos bookmark függvény/szolgáltatás nem elérhető/használható, ha a könyvjelző az előfej vagy előláb-ban van(Nem biztos, hogy tudok még írni, mert megint kezd behalni a PH (legalábbis nálam))
-
válasz
lasarus1988 #1268 üzenetére
Igen, jól látod, valóban úgy működik a kód és sajnos abban is igazad van, hogy ez a módszer nem megfelelő a többi CSV esetén.
Azonban azt fontos tudni, hogy az általad küldött CSV fájlok azok nem valódi CSV fájlok, csak CSV kiterjesztésű fájlok, amúgy sima text fileok is lehetnének.A CSV-nek meg van az alap felépítése, ami nagyon egyszerű, épp ezért könnyű feldolgozni is őket. A 3 CSV fájl már ismétlődő struktúrákat tartalmaz, nyílván ilyen esetben megtévesztő, ha CSV fájlra hivatkozik valaki...
-
válasz
lasarus1988 #1266 üzenetére
Na remek, mire gépközelbe jutottam, már írtál egy megoldást, gratula.
De ha már én is megírtam, akkor beteszem a kódot, más megközelítésben készült, talán vannak olyan megoldások benne, ami mások számára is hasznos lehet.
("Alakítsd át" sima SUB-bá, mert ez most egy parancsgombhoz van rendelve)Private Sub CommandButton1_Click()
Const NumberOfRowInCSV As Integer = 9
Dim MyCSVFilename As String
Dim x() As String
Dim temp As String
MyBookmarks = Array("MeasureTime", "Engineer", "ProjectNumber", "Temperature", _
"Huminidity", "Manufacturer", "Type", "SerialNumber", "Sample")
On Error Resume Next
MyCSVFilename = ""
With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Kérem válasszon egy CSV fájlt..."
.Filters.Clear
.Filters.Add Description:="CSV fájlok (*.csv)", Extensions:="*.csv"
.Show
MyCSVFilename = .SelectedItems(1)
End With
If MyCSVFilename = "" Then Exit Sub
Word.ActiveDocument.Select
fnum = FreeFile()
Open MyCSVFilename For Input As fnum
For I = 0 To NumberOfRowInCSV - 1
Line Input #fnum, temp
x = Split(temp, ";")
Word.Selection.Bookmarks(MyBookmarks(I)).Range = x(1)
Next I
Close #fnum
End Sub -
lasarus1988
tag
válasz
lasarus1988 #1265 üzenetére
Azt hiszem sikerült megoldani.
Sub haliho()
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Dim LastRow As Integer
Dim I As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open("C:\Eredmények\22-november-2010_1_Init_TestData.csv")
xlApp.Visible = True
LastRow = xlWb.Worksheets(1).Range("A65535").End(xlUp).Row
For I = 1 To LastRow
Word.Application.ActiveDocument.Select
Select Case xlWb.Worksheets(1).Cells(I, 1).Value
Case "Mérés időpontja"
Word.Selection.Bookmarks("MeasureTime").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Mérőszemély"
Word.Selection.Bookmarks("Engineer").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Ügyiratszám"
Word.Selection.Bookmarks("ProjectNumber").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Hőmérséklet"
Word.Selection.Bookmarks("Temperature").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Páratartalom"
Word.Selection.Bookmarks("Huminidity").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Gyártó"
Word.Selection.Bookmarks("Manufacturer").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Típus"
Word.Selection.Bookmarks("Type").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Gyáriszám"
Word.Selection.Bookmarks("SerialNumber").Range = xlWb.Worksheets(1).Cells(I, 2).Value
Case "Minta száma"
Word.Selection.Bookmarks("Sample").Range = xlWb.Worksheets(1).Cells(I, 2).Value
End Select
Next I
xlWb.Close
Set xlWb = Nothing
xlApp.Quit
Set xlApp = Nothing
End SubÍgy most tökéletesen működik, igaz a csv-ben nem pontosvessző a szeparátor hanem vessző. Ez nem akkora gond mert csak a hőmérsékletnél illetve a páratartalomnál használtam vesszőt, de majd kicserélem pontra.
-
válasz
lasarus1988 #1263 üzenetére
Oksa, akkor megpróbáljuk mellőzni az Excel-t, vesszővel válasz el a számokban a tizedesjegyeket és a CSV-ben pontosvesszővel válasszuk el az értékeket, azonban még egy kérdésem lenne, nevezetesen, hogy a CSV struktúráját meg lehet változtatni, úgy értem azokat Te állítod elő?
Mert ebben a formájában nem egy "szabványos" CSV, normál esetben így kellene, hogy az adatok szerepeljenek benne(arról nem is beszélve, hogy így könnyebb feldolgozni)
Nem is csodálom, hogy a jelenlegi CSV struktúrában nem működött a makró...Mérés ideje;Mérést végezte;Ügyiratszám;Hőmérséklet;Páratartalom;Gyártó;Típus;Gyáriszám;Minta száma
2010.11.22. 16:07:12;Gipsz Jakab;12345;23,1;45,1;valami;valami;QWERTZ123456;1
2010.11.22. 16:07:12;Gipsz Jakab;12345;23,1;45,1;valami;valami;QWERTZ123456;1
2010.11.22. 16:07:12;Gipsz Jakab;12345;23,1;45,1;valami;valami;QWERTZ123456;1
2010.11.22. 16:07:12;Gipsz Jakab;12345;23,1;45,1;valami;valami;QWERTZ123456;1Szóval ahogy látszik, az első sor a fejléc, (ami amúgy nem kötelező), aztán jönnek az adatok. Ilyen formátumra van lehetőség átalakítani?
(Bocs, ha látszólag ezek felesleges kérdésnek tűnnek, de hidd el, hogy a jó (és adott esetben egyszerű) kód alapját képezi...) -
válasz
lasarus1988 #1260 üzenetére
Sajnos csak 18.30-19.00 közt érek haza, de utána megnézem, addig is pár megjegyzést engedj meg, így "ránézésre"...
1. A Hőmérséklet esetén ponttal, míg Páratartalom esetén meg vesszővel vannak elválasztva a tizedesjegyek. Most akkor melyik?
2. Ez a kód ún. "old school code", azaz nálam biztosan el sem fog jutni a nálad problémás részig(W7 x64 és Office x64-et használok), mert pl a Dim ExcelApp As Excel.Application deklarációnál is már le fog akadni, de szinte biztos, hogy a Application.GetOpenFilename-re is hibát fog dobni, pl nincs ilyen metódus. Természetesen orvosolhatóak ezek a problémák...
3. InputData = Application.Windows(1).Sheets(1).Range("A1").Value
Cikluson belül ez az érték nem fog változni, akkor pedig a Case ágak közül is mindig ugyanazon fog végigfutni.4. Cells(I, 2)
Hogy kerültek az excelben egymás alá az adatok? Mert ugye ahogy a I ciklusváltozót növekszik úgy B1-től B10 cellákból szedi az adatot, ugye az meg egymás alatt van...5. Így ránézésre szerintem le lehet egyszerüsíteni a kódot, pl kivonjuk az "egyenletből" az Excel-t, simán a CSV fájlt fogjuk feldolgozni Word-ből, macro segítségével
6. Korábban írtad, hogy van x CSV fájl. Ebben a kódban ez nem jön ki, azaz 1 word doksit nyitsz meg és 2 darab CSV-t Excel-el.
Ha korábban jól értettem, akkor nem az lenne a feladat, hogy van 1 darab kész word doksid és ebbe az 1 word doksiba kellene több CSV fájlból könyvjelzőket beszúrni?
Vagy esetleg 1 adott word doksihoz csak 1 adott CSV tartozik?
Ha ez utóbbi akkor írd le, hogy milyen a párosítás pl
ubul.doc -> ubul.csv
geza.doc -> jeno.csv
stb stb -
válasz
lasarus1988 #1258 üzenetére
Most nem vagyok otthon, de ha beírod(vagy elküldesz a mailemre) egy ilyen CSV-t(nem kell, hogy az eredeti adatok legyenek benn, csak a felépítésében legyen azonos), akkor majd ránézek, ha hazaértem.
-
válasz
lasarus1988 #1256 üzenetére
Így már logikus, gondolom nem 1-2 darab csv fájlról van szó, bár bevallom azt nem tudom, hogy makróval hogy lehetne megadott könyvjelzőkhöz bepozicionálni...
-
válasz
lasarus1988 #1253 üzenetére
Nem értem a logikádat, mármint hogy minek word-be írsz makrót, miért nem Excelben, ha úgyis ott akarod megnyitni a CSV-ket?
Új hozzászólás Aktív témák
Hirdetés
- gban: Ingyen kellene, de tegnapra
- Kerékpárosok, bringások ide!
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Nintendo Switch 2
- Kuponkunyeráló
- iPhone topik
- Vékonyabb lett, jobb kamerát kapott, de az akku maradt a régi: itt a Fold7
- Milyen TV-t vegyek?
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- További aktív témák...
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- 27%-OS ÁFÁS SZÁMLA I Jogtiszta Microsoft digitális és fizikai termékek I DIGITALKEYZ.COM
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- BESZÁMÍTÁS! NZXT Kraken Elite 360 RGB vízhűtés garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest