• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opgelost Dubbele vraag: Range opvragen en vba

Dit topic is als opgelost gemarkeerd
Zó dus

Code:
Sub M_snb()
   With Application.FileDialog(3)
      If .Show  Then MsgBox .SelectedItems(1)
   End With
End Sub
 
En moest die het niet doen nog eentje om te proberen.
Code:
Sub tst()
    Dim objFile As Object, strStart As String
   
    strStart = ThisWorkbook.Path 'you can use here what starting folder you want
    With CreateObject("Shell.Application")
        Set objFile = .BrowseForFolder(0, "Bestand kiezen", &H4000, strStart)
        If Not objFile Is Nothing Then
            MsgBox objFile.Self.Path
        End If
    End With
End Sub
 
Misschien heeft het nog niemand gezien, maar volgens mijn werkt TS op een MAC.
Zie schermafbeelding in #12
 
Dat verklaart een hoop.
Misschien werkt dit dan, heb geen Mac dus kan het niet testen:
Code:
Function BrowseMac(mypath As String) As String
  Dim sMacScript As String
  
  sMacScript = "set applescript's text item delimiters to "","" " & vbNewLine & _
    "try " & vbNewLine & _
    "set theFiles to (choose file " & _
    "with prompt ""Please select a file or files"" default location alias """ & _
    mypath & """ multiple selections allowed false) as string" & vbNewLine & _
    "set applescript's text item delimiters to """" " & vbNewLine & _
    "on error errStr number errorNumber" & vbNewLine & _
    "return errorNumber " & vbNewLine & _
    "end try " & vbNewLine & _
    "return theFiles"
  BrowseMac = MacScript(sMacScript)
End Function
 
Aan iedereen die hulp heeft geboden: Ik werk inderdaad op een Mac. Ik dacht dat dat geen issue zou zijn. Ik heb een programma (parallels) gedownload en daar een Windows op gezet (ik dacht windows 11, de laatste versie), ik heb online een licentie gekocht voor die windows en mijn office 365 op gezet. Dan werkt het script van post 7 wel direct. De hulp van post 25 werkt ook niet op mijn Mac omgeving. Dan ga ik nu wat zoeken en verder bouwen op post 7 in mijn windows omgeving. Allen hartelijk dank voor de bijdragen. En sorry dat ik niet heb vermeld dat het in een Mac omgeving is dat ik werkte. Ik houd jullie op de hoogte van de vorderingen van mijn VBA script.
 
Ik heb de script nu uitgevoerd een paar keren, en zit uiteraard nog met wat vragen. De voorzet is al prachtig. Maar ik moet hem uiteraard nog verfijnen. De script werkt perfect in mijn excel in windows omgeving. Ik heb de filters.add veranderd naar een .xlsm bestand, want de importfile gaat ook een xlsm bestand zijn. Ik veronderstel dat ik ergens juist voor selectedFile.SelectedItems ergens mijn cellen moet gaan aanwijzen. Klopt dit? Hoe moet ik deze cellen juist aanwijzen? Moet ik iets typen in de genre van file.selectedSheet, en dan selected.cells? Want ik vermoed dat ik in de excel file een tabblad moet aanwijzen en dan cellen selecteren. En dan moet ik ergens cellen gaan moeten selecteren in de importfile waar ik deze data wil plakken. Als ik dat correct zou krijgen is mijn file voor 99% af vermoed ik. Maar ik zou nog graag weten hoe en waar ik juist tabbladen en cellen moet selecteren in de importfile, en dan ook tabbladen en cellen in de file waar de data moet komen. Dank voor eventuele feedback.

Sub ImporteerDagbestand()
Dim strFile As String
Dim dialog As FileDialog
Dim selectedFile As String

' Open file dialog to select the day file
Set dialog = Application.FileDialog(msoFileDialogFilePicker)
With dialog
.Title = "Selecteer dagbestand"
.Filters.Add "Dagbestand", "*.xlsm*", 1
.InitialFileName = ThisWorkbook.Path
.AllowMultiSelect = False

' Show the dialog and check if a file was selected
If .Show = -1 Then ' If a file is selected
selectedFile = .SelectedItems(1)
strFile = selectedFile
Else ' If no file is selected
MsgBox "Geen dagbestand geselecteerd"
Exit Sub
End If
End With

' Open the selected file and copy the first sheet to this workbook
Workbooks.Open selectedFile
ActiveWorkbook.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

' Close the imported workbook without saving
On Error Resume Next
Workbooks(selectedFile).Close savechanges:=False
On Error GoTo 0 ' Reset error handling
End Sub
 

Bijlagen

Eerst moet je het geselecteerde workbook openen alvorens je sheets en ranges kan aanduiden.
Dus alles wat jij wil doen komt na deze regel.
Code:
Workbooks.Open selectedFile
 
Dat is correct Warme bakkertje, maar na welke lijn moet deze regel precies komen? Deze regel staat nog niet in de VBA dat AHulpje heeft gegeven als voorzet. Dan kan ik wat verder puzzelen. Ik moet verschillende data halen uit verschillende tabbladen...
 
deze regels heb je nu.
Code:
Workbooks.Open selectedFile
   ActiveWorkbook.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
De bovenste regel opent het geselecteerde bestand en de 2de regel kopieërt het volledige 1ste werkblad van dat geselecteerde bestand naar je verzamelbestand. Het is dus die regel die zal moeten aangepast worden naar wat jij wil bereiken.
 
Zover ben ik al. In het vet als comment zit ik teruggaan naar de file waar de Vba in staat, en dan terug naar het geopende bestand om de volgende range te selecteren. Dit 2 lijntjes vind ik ook niet zo direct uit mezelf.

' Open the selected file and copy the first sheet to this workbook
Workbooks.Open selectedFile
ActiveWorkbook.Sheets("Performance").Select
ActiveWorkbook.ActiveSheet.Range("C55:C138").Select
Selection.Copy
'Hier moet ik dan teruggaan naar de file waar de vba in staat. En ook gaan naar het tabblad "Performance"
'Dan moet ik terug naar het geopende bestand gaan om de volgende range in een tabblad te selecteren


' Close the imported workbook without saving
On Error Resume Next
Workbooks(selectedFile).Close savechanges:=False
On Error GoTo 0 ' Reset error handling
End Sub
 
Probeer eens:
Code:
ThisWorkbook.Activate
 
Je krijgt dan zoiets als.
Code:
ActiveWorkbook.Sheets("Performance").Range("C55:C138").Copy ThisWorkbook.Sheets("Performance").Range("A1")
 
Hey edmoor, ik moet juist een andere workbook selecteren. De workbook waarin de vba code staat... . Ik ga het eens proberen, maar ik denk niet dat dit is wat ik nodig heb.
 
ThisWorkbook is het werkboek waar de VBA code in staat,
 
Ik ga het implementeren. Ik houd jullie updated.
 
Je kan in je account gegevens aangeven of je met Windows of MacOS werkt en met welke versies.
Ook kan je daar je Office versie laten weten.
Dan hoef je dat nergens meer te vermelden.

Daarnaast, als je hier code plaatst, zet dit dan in codetags.
 
Hey edmoor, ik ben zeker geen expert. Wat bedoel je precies met codetags? Ik wil het zo goed mogelijk doen. En ik ga bekijken om mijn account gegevens een update te geven. Hartelijk dank
 
Klik eens op de link in mijn handtekening.
 
Ik heb zonet mijn profiel geüpdate. Maar jou handtekening vind ik niet. Ik zie jou profiel en waar je vandaan komt. Maar verder kom ik precies niet.... . Ik ga nog wat verder programmeren in vba. Hartelijk dank voor de feedback
 
Terug
Bovenaan Onderaan