csv Log vraagje

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Gebruikersavatar
Swets
Berichten: 2165
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Kjelt schreef: 03 sep 2020 15:20
Swets schreef: 03 sep 2020 15:03 ik snap er ff niets van...
StrTest = Mid(strFullName,1,3) geeft geen fout...
ExtractFileName = Mid(strFullName, 1, 3) geeft fout?

iemand enig idee?
Ik weet niets van excel maar dit is makkelijk gegoogled ;-)
Ja extract is een "reserved word" en mag niet gebruikt worden.

https://www.mrexcel.com/board/threads/n ... rds.61507/
snap ik er nog niets van?

ExtractFileName = Mid(strFullName, s, Len(strFullName)) waarom werkt dit wel,

ExtractFileName = Mid(strFullName, 10, Len(strFullName)) waarom werkt dat niet ?
http://www.arjan-swets.com (met cnc filmpjes)
Kjelt
Donateur
Berichten: 3253
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: csv Log vraagje

Bericht door Kjelt »

Als ik weer als niet excel expert snel google wil het MID commando 3 parameters hebben.
De eerste de input string, bij jou is dat de filenaam.
De tweede is de startlocatie in de filenaam
De derde is het aantal karakters vanuit de startlocatie.

Dus als de tweede startlocatie niet meteen het begin is van de filenaam , dus groter dan 0 of 1 (ff checken) dan kun je nooit de hele lengte vd filenaam opgeven voor de derde parameter.
Gebruikersavatar
Swets
Berichten: 2165
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Kjelt schreef: 03 sep 2020 15:56 Als ik weer als niet excel expert snel google wil het MID commando 3 parameters hebben.
De eerste de input string, bij jou is dat de filenaam.
De tweede is de startlocatie in de filenaam
De derde is het aantal karakters vanuit de startlocatie.

Dus als de tweede startlocatie niet meteen het begin is van de filenaam , dus groter dan 0 of 1 (ff checken) dan kun je nooit de hele lengte vd filenaam opgeven voor de derde parameter.
nogmaals als ik die eerste regel er inzet dan werkt het....
ExtractFileName = Mid(strFullName, s, Len(strFullName))

en wat ik al eerder zei, ik snap die lengte ook niet... ( ik heb dit stuk ook maar ergens van internet geplukt)... want
"C:\Users\asw\OneDrive\werk\ExcelLog\Log\Compressors.Compressor2.Data.Pressure\D2008010.csv" uit deze string komt hij terug met "D2008010.csv"

dus de totale string is 91 karakters lang (als ik goed geteld heb)
hij begint vooraan te zoeken naar "\" en als die hem gevonden heb, gaat hij weer zoeken, maar start dan 1 karakter verder dan het laatst gevonden "\"
als hij dan start na de laatste "\" , bij de D... zal hij niets meer vinden en valt hij uit de loop, met de positie van de laatst gevonden "\" in s
dan telt hij daar 1 bij op (positie van de D)
maar ik snap ook niet dan er dan een lengte staat van de met de lengte van de hele String.... maar dat zou geen kwaad kunnen...

dus met de
ExtractFileName = Mid(strFullName, s, Len(strFullName))
knipt hij een stuk, uit de totale string, vanaf de positie s, en dat de lengte van de total string lang

dus moet ik die s toch ook een andere waarde moeten kunnen geven....?

als ik zelf tel in die string is de positie na de laatste "\" positie 77

Code: Selecteer alles

Public Function ExtractFileName(ByVal strFullName As String) As String

    Dim FoundPos As Integer
    Dim SearchFromPos As Integer
    Dim s As Integer
    Dim q As Integer
    Dim StrTest As String
    
'   SearchFromPos = 1
'    Do
'        FoundPos = InStr(SearchFromPos, strFullName, "\", 1)
'        If FoundPos = 0 Then Exit Do
'        q = s
'        s = FoundPos
'        SearchFromPos = FoundPos + 1
'    Loop
   
'    s = s + 1
 	s=77   
    ExtractFileName = Mid(strFullName, s, Len(strFullName))

End Function
dit zou toch met het zelfde terug moeten komen?

zelfs als ik in het bovestaande s=1 zet, dan krijg ik een fout? dan kan hij nooit te lang/kort zijn
snap er geen reet van ... :-)

kheb even het te download gezet....

https://www.dropbox.com/s/ww6l3nlyvq6oa ... g.zip?dl=0
Laatst gewijzigd door Swets op 03 sep 2020 16:29, 1 keer totaal gewijzigd.
http://www.arjan-swets.com (met cnc filmpjes)
Kjelt
Donateur
Berichten: 3253
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: csv Log vraagje

Bericht door Kjelt »

Ja zou ik dan ook verwachten.
Geen idee hoe je dit vanuit excel aanroept, nooit mee bezig gehouden maar als ik snel op een werkblad met MID functie speel gaat het altijd goed.

Welke foutmelding krijg je ?
Gebruikersavatar
Rocnc
Berichten: 130
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

Ik heb niet de hele thread gelezen, maar ik zou je (de originele poster) best willen helpen. Dat wil zeggen, als je er niet teveel lol in hebt om dit zelf voor elkaar te krijgen.
Laat maar weten.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 8488
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: csv Log vraagje

Bericht door hugo stoutjesdijk »

Als je nu eens een andere variabele naam gebruikt dan 'ExtractFileName ' want jij wilt niet de filenaam volgens mij.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Erik
Berichten: 1382
Lid geworden op: 21 jan 2007 21:04
Locatie: Den Haag
Contacteer:

Re: csv Log vraagje

Bericht door Erik »

Snap er allemaal geen snars van, ff gegoogled. Is dit wat?

Code: Selecteer alles

Function FileOrFolderName(InputString As String, _
    ReturnFileName As Boolean) As String
    
'Returns the foldername or the filename based on boolean value assigned

Dim i As Integer, FolderName As String, FileName As String

i = 0

'Code used for finding the position of last occurence of path separator
While InStr(i + 1, InputString, Application.PathSeparator) > 0
    i = InStr(i + 1, InputString, Application.PathSeparator)
Wend

'Extract the folder path
'If No occurence of path separator is found then assign the default directory path
If i = 0 Then
    FolderName = CurDir
Else
    FolderName = Left(InputString, i - 1)
End If

'Extracting the file name
FileName = Right(InputString, Len(InputString) - i)

'Returning the folder or file name from function based on ReturnFileName parameter
If ReturnFileName Then
    FileOrFolderName = FileName
Else
    FileOrFolderName = FolderName
End If

End Function
Gr.

Erik
Ferry
Berichten: 225
Lid geworden op: 28 jul 2007 09:32
Locatie: Rilland
Contacteer:

Re: csv Log vraagje

Bericht door Ferry »

Die error 400 die je krijgt kan meerdere oorzaken hebben!

Het is trouwens een teken dat er iets niet helemaal goed zit met de registry settings van Excel, Normaal gesproken krijg je nl een duidelijker omschrijving wat de error precies is.

Maar dat is nu even niet het belangrijkste.

Ik denk dat je de foutmelding krijgt omdat je een werkblad een ongeldige naam wilt geven, of dat je een werkblad een naam wilt geven die al bestaat.

Als je in de macro de regel

ExtractFileName = Mid(strFullName, s, Len(strFullName))

veranderd in

ExtractFileName = Mid(strFullName, q + 1, ((s - q) - 2))

Dan krijg je mapnaam waarin de geselecteerde csv staat


Let wel op als je dit de eerste keer doet werkt het perfect, echter als je daarna nog een keer een csv uit dezelfde map probeert toe te voegen krijg je toch weer die 400 foutmelding omdat er al een werkblad bestaat met die naam

Als je meerdere logfiles uit dezelfde map wilt gebruiken, zul je dus ook nog iets anders moeten doen, bv de naam van het bestand op de een of andere manier ook nog toevoegen aan de mapnaam


Hoop dat dit verhaal beetje duidelijk is voor je
Zo niet dan geef je maar een gil

nog 1 dingetje trouwens je mag geen punten of andere leestekens gebruiken in de naam van je werkbladen, dus in jouw voorbeeld gaat het alleen goed als je een log uit de map purge gebruikt


Ferry.....
Gebruikersavatar
Swets
Berichten: 2165
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Ik dacht even dat het nu goed ging....

Dit:
ExtractFileName = Mid(strFullName, q + 1, ((s - q) - 2))
geeft bij de onderstaande:
C:\Users\asw\OneDrive\werk\ExcelLog\Log\purge12\D2006290.csv
Netjes Purge12 ...

maar deze:
C:\Users\asw\OneDrive\werk\ExcelLog\Log\Compressors.Compressor1.Data.Pressure\D2006290.csv
geeft weer een 400...
Ik weet ook ff nog niet hoe ik die 400 nu oplos?

zou dat te lang zijn? ofzo
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2165
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Rocnc schreef: 03 sep 2020 17:18 Ik heb niet de hele thread gelezen, maar ik zou je (de originele poster) best willen helpen. Dat wil zeggen, als je er niet teveel lol in hebt om dit zelf voor elkaar te krijgen.
Laat maar weten.
Nou ik denk dat ik alle help kan gebruiken.... :-)
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 8488
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: csv Log vraagje

Bericht door hugo stoutjesdijk »

Swets schreef: 10 sep 2020 12:24 C:\Users\asw\OneDrive\werk\ExcelLog\Log\Compressors.Compressor1.Data.Pressure\D2006290.csv

Te lang zou heel goed kunnen, mijn tabblad mag maximaal 'abcdefghijklmnopqrstuvwxyz12345' heten

en jouw 'Compressors.Compressor1.Data.Pressure' is langer.
Even inkorten onder 31 tekens en je weet het.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Ferry
Berichten: 225
Lid geworden op: 28 jul 2007 09:32
Locatie: Rilland
Contacteer:

Re: csv Log vraagje

Bericht door Ferry »

Lijkt er idd op dat er maximaal 31 karakters gebruikt mogen worden
Gebruikersavatar
Swets
Berichten: 2165
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

tja... liefst knipte ik daar weer compressor1 pressure uit.... hoe ga ik dat nu weer doen....

Tis wel dat die met die puntjes er in altijd 3 puntjes hebben...

aaaaaa.bbbbbbb.cccccc.ddddddd en dat ik altijd Bbbbbbb en Ddddddd wil hebben....

dus ik moet dan iets hebben dat eerst kijkt of er puntjes in staan, nee dan de hele mapnaam, ja dan deel bbbbbb ddddddd er uit filteren....

pffff....
http://www.arjan-swets.com (met cnc filmpjes)
Kjelt
Donateur
Berichten: 3253
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: csv Log vraagje

Bericht door Kjelt »

Tijd om een generieke programmeertaal zoals bv Python te leren denk ik.
Dat excel VB is leuk voor eenvoudige dingetjes.
Plaats reactie