Kan någon hjälpa mig med att översätta följande kod till VB6? Jag har en snabb och bra lösning , men jag vill se ett exempel på vad denna rad kan lämna <b> sPath = Blad1.Range("F2")</b> Är sökvägen till en katalog på servern ex.<b> F:\Program\Files\</b> Sista koll innan jag kommer med mitt förslag. En annan sak det här kommer att gå så himla snabbt så programmet Frågor Ditt svar konfunderar mig lite ! Så här blir mitt första förslag som kan justeras efter behov. Ser snyggt ut! <b>Kan jag bara byta ut Blad1.Range("F2") med en sökväg?</b> Hej igen, Det fungerar Kanon. <b>Vad gör underscore "_" i koden? Rad byte? </b> Nyfikenhetsfråga ! Varför gör man på detta sätt ? Hej.Översätt VBA
<code>
Set fs = Application.FileSearch
Dim sPath As String
Dim sFileName As String
Dim sSuffix As String
Dim lPos As Long
sPath = Blad1.Range("F2")
With fs
.LookIn = sPath
.Filename = "*.*"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
sFileName = .FoundFiles(i)
lPos = InStr(1, sFileName, ".")
sFileName = VBA.Left(sFileName, lPos - 1)
sSuffix = Format(Date, "YYMMDD") & Format(Time, "HHMMSS")
sFileName = sFileName & sSuffix
OldName = .FoundFiles(i): NewName = sFileName & ".txt"
Name OldName As NewName
Next i
Else
MsgBox "Det fanns inga .txt filer att byta namn på. " & Time
End If
End With
If i > 0 Then
MsgBox i - 1 & " filer bytte namn"
End If
</code>
//Torfi
-----------------IT'S KILL, NO WORK------------Sv: Översätt VBA
<b> sPath = Blad1.Range("F2")</b> hur kan sPath se ut ?
Är det rätt uppfattat att du bara vill byta namn på .txt filer
Skall filerna vara sorterade efter sina namn ? A överst eller ?Sv:Översätt VBA
Sorteringen spelar ingen roll bara alla filer får ett suffix, det skall adderas <b>YYMMDDHHMMSS</b> innan fil ändelsen
//TorfiSv: Översätt VBA
Det gäller bara filer med .txt ? oberoende vad den hade för namn skall den nu heta
ex. 041217085032.txt
I ditt ex. sPath F:\Program\Files\ kommer den sista backslachen med är det alltid så ?
eller måste detta kollas. ?Sv:Översätt VBA
kommer att vilja döpa flera filer med samma sekund namn.
Hur vill du handskas med det ?
Om jag kommer till samma mapp ytterligare en gång
skall programmet då döpa om dom en gång till ?Sv:Översätt VBA
Sista koll innan jag kommer med mitt förslag.
1. Det gäller bara filer med .txt ? oberoende vad den hade för namn skall den nu heta
ex. 041217085032.txt
SVAR: Oavsett fil ändelse
2. I ditt ex. sPath F:\Program\Files\ kommer den sista backslachen med är det alltid så ?
eller måste detta kollas.
SVAR: Min tanke sen var att läsa in denna sökväg från en ini-fil eller att man startar applikationen med en parameter som anger sökvägen ex. <b>Rename.exe -F:\Program\Files\</b> i framtiden men jag måste lära mig mer för att komma dit. Utgå ifrån att den kommer att vara kompilerad i programet "F:\Program\Files\"
3. En annan sak det här kommer att gå så himla snabbt så programmet
kommer att vilja döpa flera filer med samma sekund namn.
Hur vill du handskas med det ?
SVAR: Det kommer att finnas väldigt få filer och finns det många så namnet redan unikt och kommer även att vara unikt sen ex. Kalle.txt blir Kalle041217113602.txt och Pelle.txt blir Pelle041217113602.txt.
4. Om jag kommer till samma mapp ytterligare en gång
skall programmet då döpa om dom en gång till ?
SVAR: Helst inte, men jag hade tänkt att lösningen skall vara ganska enkel och att jag kan utveckla den allt eftersom jag blir bättre.
Tack så länge /TorfiSv: Översätt VBA
Det gamla Suffixet och det nya skall vara med tex så kommer
en fil som nu heter Scandir.exe att få namnet "Scandir041217115438.txt"
Är detta rätt ?
Testkörde mitt exempel nu den döpte om ca 110 filer på samma sekund.
Alla fick 23 som sista 2Sv:Översätt VBA
Om någon "besserwisser" kommer med förslag att du skall använda FSO(File System Object)
så skippa det. FSO är trögt och helt underlägset gamla Dir och FileListBox
<code>
Option Explicit
'Lägg in en FileListBox och en CommandButton
Private Sub Form_Load()
File1.Visible = False
File1.Pattern = "*.*"
End Sub
Private Sub Command1_Click()
Dim oldArray() As String
Dim sPath As String
Dim sFileName As String
Dim sSuffix As String
Dim i As Long
sPath = Blad1.Range("F2")
If Right$(sPath, 1) <> "\" Then _
sPath = sPath & "\"
File1.Path = sPath
On Error Resume Next
For i = 0 To File1.ListCount - 1
sFileName = File1.List(i)
oldArray = Split(sFileName, ".")
sSuffix = Format$(Now, "yymmddhhmmss")
Name sPath & sFileName As _
sPath & oldArray(0) & sSuffix & ".txt"
Next 'i
End Sub
</code>Sv: Översätt VBA
Kan jag bara byta ut <b>Blad1.Range("F2")</b> med en sökväg?
vad gör File1 kommandot?
/TSv:Översätt VBA
Javisst typ som du skrev "F:\Program\Filer\"
dvs aktuell mapp utan att nämna någon fil
FileListBoxen måste du lägga in från verktygslådan den tar all hantering av filerna i den mapp
som sPath pekar motSv: Översätt VBA
lite till frågor.
Vad gör underscore "_" i koden? Rad byte?
/TorfiSv:Översätt VBA
Det är bara en editeringsknorr.Hatar folk som inte gör radbyte , utan har 1 m långa
programmeringsrader.Dvs har inget med programmfunktion att göra, bara kosmetika.
Du kan betrakta det som en programrad.
<b>On Error Resume Next</b> står där för att om filen är "Skrivskydda" eller "Hidden"
så får du inte tillstånd att byta namnSv: Översätt VBA
Vad är det för vits att byta namn på tex en .exe till .txt ?Sv:Översätt VBA
Skall inte byta ändelse från exe till txt.
Jag gör en export ur ett affärsystem som inte kan sätta tid eller liknande och måste ha unikt namn på filerna när det upploadas till mottagaren detta kommer att skötas av "dumma" användare som bara kan dubbelklicka på en ikon.
/Torfi
PS, Tack så mkt för din värdefulla hjälp.