Avatar billede bambus Nybegynder
13. februar 2002 - 12:14 Der er 8 kommentarer og
1 løsning

GetSetting i VBA

Mit problem er som følge af diskussionen D 12/2 om skrivning til Reg. databasen. Først mit program.
Jeg har en liste A og en liste B. ListeA indlæses til combobox1, hvor de valg der nu er i combobox1, bruges til åbning af  en ny workbook  indeholdende ListeB

Private Sub UserForm_Initialize()
Dim ItemList(100) As String
Dim ItemID As Integer

On Error GoTo Fejl
StartUp:
FName = GetSetting("ListView", "liste", "Stinavn", "")
Select Case FName
    Case Is = False, ""
FName = Application.GetOpenFilename _
    (filefilter:="Text Files(*.txt),*.txt,All Files (*.*),*.*")
SaveSetting "ListView", "liste", "Stinavn", FName

End Select

ItemX = 0
    Open FName For Input As #1
        Do While EOF(1) = False
            ItemX = ItemX + 1
                Line Input #1, ItemList(ItemX)
        Loop
    Close #1
               
    ComboBox1.Clear
        For ItemID = 1 To ItemX
            ComboBox1.AddItem ItemList(ItemID)
        Next
Exit Sub
Fejl:
DeleteSetting "ListView", "liste"
GoTo StartUp
End Sub


Private Sub ComboBox1_Change()
FName = GetSetting("ListView25", "diffliste", "Stinavn", "")
    Workbooks.OpenText FileName:=FName & ComboBox1.Text
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ActiveWorkbook.Close
End Sub

Som man kan læse bliver den nye sti til liste B  for lang med \ListeA, da Fname jo er stien til ListeA.
ListeA og ListeB er begge txt filer og ligger i samme mappe.

? hvordan løses dette problem? Det skulle jo helst fungere sådanne så man kun skal søge efter ListeA hvis mappen med ListeA og ListeB evt. flyttes!
13. februar 2002 - 13:33 #1
Hej Bambus
Split funktionen er en fin lille fætter til dette formål - yderligere info kig i VBA hjælpen.

  Dim vntSplit As Variant
  'Opsplitter stien FName i et Array
  vntSplit = Split(FName, "\")
  'Sætter FName = FName - det sidste Array (ListeA) og tilføjer ListeB's sti
  FName = Left(FName, Len(FName) - Len(vntSplit(UBound(vntSplit)))) & ListeB
13. februar 2002 - 13:37 #2
OK lidt mere hjælp.
Sub SplitString()
  Dim vntSplit As Variant
  Dim iCount As Integer
  vntSplit = Split("C:\Folder1\Folder2\Folder3\File1.xls", "\")
  For iCount = 0 To UBound(vntSplit)
    Debug.Print vntSplit(iCount)
  Next iCount
End Sub

Ovenstående skriver følgende:
C:
Folder1
Folder2
Folder3
File1.xls

Koden som jeg har lavet reducerer længden af FName med længden af sidste Array fra (her længden af "File1.xls") og tilføjer ListeB
Avatar billede bambus Nybegynder
13. februar 2002 - 13:45 #3
win 95 kender ikke funktionen split

jeg tænkte på en Like operation??
13. februar 2002 - 13:57 #4
win95 ? Dit program er vel i Excel ? :-)

Split er tilgængelig i Excel2000 - i Excel97 ?
13. februar 2002 - 14:04 #5
Så kan du vel bruge denne her:

Sub String_String()
    Dim iCount As Integer
    Dim FName As String
    FName = "C:\Folder1\Folder2\Folder3\File1.xls"
   
    For iCount = Len(FName) To 1 Step -1
        If Mid(FName, iCount, 1) = "\" Then
            Exit For
        End If
    Next iCount
   
    FName = Left(FName, Len(FName) - (Len(FName) - iCount)) & ListeB
End Sub
Avatar billede bambus Nybegynder
13. februar 2002 - 14:04 #6
sorry :)) Excel97, og split er ikke tilgængelig... øv øv jeg kender godt funktionen og har før haft brug for den, når der skal indlæses data fra en txt. file. :(
men er der ikke en funktion i vba der fungere som like (men ikke kun giver true / false) ?
13. februar 2002 - 14:06 #7
Den anden måde virker også fint :-)
Avatar billede bambus Nybegynder
13. februar 2002 - 14:10 #8
yess! :))
13. februar 2002 - 15:54 #9
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester