• 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.

alleen bepaalde XML-bestanden importeren

Status
Niet open voor verdere reacties.

gGerretje

Gebruiker
Lid geworden
12 mrt 2008
Berichten
439
Beste helpers,

Ik ben bezig met een bestand dat XML-bestanden importeert.

Nu doe ik dat met een opdrachtknop maar uiteindelijk moet dat automatisch gebeuren als het bestand (met Windows taakplanner) geopend wordt.
Na enig zoekwerk heb ik het voor elkaar gekregen dat de XML-bestanden (die in de submap "XMLmap" staan) worden geïmporteerd.
Het automatiseren van die import is ook geen probleem.

Onderstaand mijn huidige code.

Code:
Private Sub btn_Importeren_Click()
Dim folderName As String
    Application.DisplayAlerts = False
    On Error Resume Next
    folderName = "C:\Ger\XMLmap\"
    With CreateObject("Scripting.FileSystemObject")
        Set Folder = .GetFolder(folderName)
        For Each file In Folder.Files
            ActiveWorkbook.XmlMaps("RR_orders_Map").Import URL:=file
        Next
    End With
    Application.DisplayAlerts = True
End Sub

Het bestand staat dus in de map C:\Ger
Application.Displayalerts = False staat erin om meldingen in verband met afwijkende opmaak te negeren.
On Error Resume Next staat erin om te voorkomen dat een bestand met andere extensie de zaak laat vastlopen.

Nu de vraag:
Door de software (van de leverancier) worden alle XML-bestanden aangeleverd in dezelfde map.
Steeds een aantal bestanden met een gelijk beginnende bestandsnaam (bijv abx1.xml, abc2.xml, abc76.xml, xyz1.xml, xyz2.xml, xyz43.xml, etc.)

De bedoeling is nu dat ik alleen bestanden die beginnen met abc importeer.
Ik denk dat het voor de kenners een makkie moet zijn, maar ik zie hem niet.

Alvast bedankt voor de hulp,

Ger
 

Bijlagen

  • RR_Orders_Input.xlsm
    33,1 KB · Weergaven: 16
  • XMLmap.zip
    4,7 KB · Weergaven: 15
Laatst bewerkt:
Zo?
Code:
Private Sub btn_Importeren_Click()
    [COLOR="#008000"]'dit is de lange versie. De kortere versie staat bij btn_Importeren[/COLOR]
    Dim folderName As String
    Application.DisplayAlerts = False
    On Error Resume Next
    folderName = "C:\Users\Ed\Downloads\XMLmap\"
    With CreateObject("Scripting.FileSystemObject")
        Set Folder = .GetFolder(folderName)
        For Each file In Folder.Files
            [COLOR="#FF0000"]If Left(file.Name, 3) = "abc" Then[/COLOR] ActiveWorkbook.XmlMaps("RR_orders_Map").Import URL:=file
        Next
    End With
    Application.DisplayAlerts = True
End Sub
 
Hoi Ed,

Als je het zo simpel oplost schaam ik me bijna dat ik het gevraagd heb.
Dit werkt (maar dat wist je natuurlijk al).

Ik zat misschien ook te moeilijk te denken. Meer iets in de zin van: for each ... etc.

In jouw oplossing wordt de If voorwaarde namelijk bij elke file gecheckt.
Is dat niet onnodig vertragend?
Niet dat snelheid hier erg belangrijk is, maar daarom vroeg ik me af of die bestanden er niet 'uitgepikt' konden worden.

Maar wel bedankt voor je oplossing hoor.
Ik ben er goed mee geholpen.

Ger
 
In plaats van dat FileSystemObject te gebruiken kan je ook dit doen:
Code:
Map = "C:\Ger\XMLmap\"
XML = Dir(Map & "abc*.xml")
While XML <> ""
    ActiveWorkbook.XmlMaps("RR_orders_Map").Import URL:=Map & XML
    XML = Dir()
Wend
Dan kan je het verhaal van On Error en DisplayAlerts ook weg laten.
 
Laatst bewerkt:
Deze laatste code werkt niet
Ik krijg een XML parseerfout (is goed geschreven zo: parseerfout)

Weet je trouwens waarom er in "RR_orders_Map"in de code staat?
Het bestand heet toch RR_Orders_Input?

(Heb ik er zelf ingezet natuurlijk, maar) die code heb ik gehaald uit een opgenomen macro.
 
Een parserfout heeft niks met mijn voorbeeld te maken, die komt van de XML import.
Mijn voorbeeld haalt alleen de gevraagde bestanden op en doet dat zonder problemen.
 
Laatst bewerkt:
Hoi Ed,

Dan heb ik geen idee waar het aan ligt maar bij mij worden de XML-bestanden met die laatste code niet geïmporteerd.
Ik krijg alleen die foutcode (nadat ik de on error resume next heb verwijderd natuurlijk).
Aan de XMl-files heb ik niets gewijzigd. Die worden met de code uit #2 nog steeds geïmporteerd.
 
Ik ken die import niet.
Misschien dat je URL:=Map & XML moet wijzigen in URL:=XML
 
Ik heb die import niet getest, alleen het ophalen van de bestanden.
Ik ging er vanuit dat jezelf de rest wel zou weten
 
Hoi Ed,

Daar moet je niet te snel van uitgaan. Bij mij al zeker niet.
In ieder geval werkt de code uit jouw eerste reactie perfect. Die ga ik gebruiken.

Er komt wellicht nog een vraagje over dit projectje maar dat is een ander probleem.

Bedankt voor je hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan