currentproject.path

Status
Niet open voor verdere reacties.

Rumbatje

Gebruiker
Lid geworden
4 sep 2019
Berichten
39
Goedemiddag,

Om een export uit een DB te krijgen in de folder waar deze DB zich bevindt, wordt CurrentProject.Path gebruikt als strPAd. Dit zorgt ervoor dat ik de DB kan plaatsen waar ik wil en de export toch altijd in die folder komt zoals aangegeven in de vba-code.
Code:
Function PV_Melding_Export()
On Error GoTo PV_Melding_Export_Err
strPAd = CurrentProject.Path
    DoCmd.OpenQuery "dque PV Meldingen Export leegmaken", acViewNormal, acEdit
    DoCmd.OpenQuery "tque PV Meldingen Export vullen", acViewNormal, acEdit
    DoCmd.OutputTo acOutputTable, "tbl PV Meldingen Export", "ExcelWorkbook(*.xlsx)", strPAd & "\Import\" & "\Template Inlezen Melding.xlsx", False, "", , acExportQualityPrint

PV_Melding_Export_Exit:
    Exit Function

PV_Melding_Export_Err:
    MsgBox Error$
    Resume PV_Melding_Export_Exit

End Function

Is dit ook mogelijk voor een import?
Dus is er een vba-code die ervoor kan zorgen dat bijvoorbeeld bij het opstarten van de DB er altijd in de folder waar de DB zich bevindt wordt gekeken om de file die daar staat te importeren?
Ik weet dat ik de mogelijkheid heb om DoCmd.RunSavedImportExport te gebruiken, maar ik wil dat niet voor elke DB aan moeten passen.
 
Laatst bewerkt:
Een pad is een pad, dus natuurlijk kan dat. Alleen snap ik niet helemaal wat je van plan bent, en waarom je, als de db zo vaak verhuist, met een opgeslagen importspecificatie werkt. Dan kun je die net zo goed niet opslaan, want je kunt hem, voor zover ik weet, niet bewerken met VBA. Heeft ook niet zoveel zin, als je de import met VBA doet. Want dan heb je de SavedImport niet nodig.
 
Alleen snap ik niet helemaal wat je van plan bent

Ik wil voor een import hetzelfde als voor een export zoals in de code in mijn eerste post. Ik weet alleen niet hoe. Een importoptie voor de DoCmd.OutputTo (DoCmd.ImportFrom)? :)
 
Code:
DoCmd.TransferText acImportDelim, "YourCustomSpecificationName", _
    "tblImport", "C:\SomeFolder\DataFile.csv", False

Dit is wat ik gevonden heb. Dit is voor een .csv.
Ik denk zomaar dat DoCmd.TransferText alleen voor tekstbestanden is en ik er niet een .xlsx mee kan importeren. Ik ga het evengoed proberen, al doende leert men.
 
Laatst bewerkt:
Hallo,

je kan ook met een parametertabel werken waar je de import locatie bijhoudt. In het bijgesloten voorbeeld vind je een oplossing om import/export specificaties aan te passen en deze werkt met een parametertabel. Het is wel een oud voorbeeld (nog een .mdb formaat) en de parameters en specificaties zal je natuurlijk moeten aanpassen naar je eigen situatie.

vriendelijke groeten
Noëlla
 

Bijlagen

  • IMEX_Tool.zip
    107,3 KB · Weergaven: 27
Noellag,

Het is niet wat ik zoek. Ik hoef geen importspecificaties op te slaan in een tabel, ik weet voor elke db waar die zich bevindt, namelijk in de folder van de db.
Ik wil alleen niet elke keer als een db (om welke reden dan ook) verplaats wordt een nieuwe importspecificatie opgeven, dat kan geautomatiseerd.
Kan zoiets slimmer en handiger, zeker, alleen voor nu ben ik dus opzoek naar een vba code die dat kan.
 
in de opdracht docmd.transferdatabase kan je in het argument databasename toch het volledige pad met naam van de database opgeven. Je kan voor andere formaten ook docmd.transfertext of docmd.TransferSpreadsheet gebruiken
 
Ik heb nu dit:

Code:
DoCmd.TransferSpreadsheet acImport, "TASK", strPAd & "\Export\" & "\Export Meldingen.xls", False

Dit geeft echter de foutmelding "fout 13 tijdens uitvoering typen komen niet met elkaar overeen"

de runsavedimportexport naar hetzelfde bestand als in de code werkt wel zonder foutcode, wat doe ik fout?
 
Hallo,

als eerste: ik zie dat je een ouder formaat .xls gaat importeren. Dan moet je als tweede argument het juiste formaat aangeven. Standaard gebruikt access acSpreadsheetTypeExcel12Xml ( xlsx formaat). Als ik het pad bekijk dat je meegeeft:
"\Export" & "\Export Meldingen.xls" resulteert in "\Export\\Export Meldingen.xls", dus een dubbele backslash in het pad.
 
thnx, ik heb het aangepast.

Het bestand wordt gevonden, echter nu de foutmelding dat het bestand in dat pad niet door Access kan worden geopend :shocked:
Ik heb geprobeerd dit te veranderen door het bestand op te slaan als .xlsx, maar dat helpt niet. Ik kan het bestand handmatig wel toevoegen aan een tabel, dus waarom ik deze melding krijg is mij een raadsel.
 
Je kan het bestand even posten, dan zal ik eens proberen om het in Access op te laden. Kan wel niet beloven om het nog vandaag te doen, want moet vanaf 13:00 uur nog een paar database servers upgraden.
 
Ik zal even na moeten vragen of dat bestand online mag komen, laat het weten.
 
Na overleg ga ik een aangepast bestand delen, dat doe ik morgen. Ik zal ook bespreken of ik dan de db die ik gebruik mee kan sturen als dat handig is voor jullie?
 
als je de gevoelige data kan vervangen door dummy data kan dat zeker helpen. Morgen en waarschijnlijk ook overmorgen ga ik weliswaar zeker geen tijd hebben, maar desnoods kijk ik er dit weekend wel even naar.
 
Hieronder het bestand. Ik heb het aangepast door een groot gedeelte van de data te verwijderen. Ik heb het ook met deze versie geprobeerd, maar ook bij dit bestand krijg ik de foutmelding.
Ik heb de code nog iets uitgebreid door een bereik aan te geven:

Code:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "TASK", strPAd & "\Export Primavera\\Export meldingen.xls", True, [B]"TASK!A1:UI9999"[/B]

Ook deze werkt niet. Ik heb gelezen dat veel input in de code optioneel is, dus dat je prima weg kan laten welk soort spreadsheet het is bijvoorbeeld, maar dan krijg ik weer een andere foutmelding.
Ik ben benieuwd wat hier uit gaat komen en zie jouw/jullie reactie tegemoet!
 

Bijlagen

  • Export Meldingen.xls
    572,5 KB · Weergaven: 33
Hij doet het prima als je de dubbele backslash er uithaalt.
Code:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "TASK", strPAd & "\Export Primavera\Export meldingen.xls", True, "TASK!A1:UI9999"
 
Ik heb, omdat ik jouw pad natuurlijk niet ken/heb, deze variant gebruikt.
Code:
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "TASK", CurrentProject.Path & "\Test\Export meldingen.xls", True, "Task!A1:DI9999"
 
Super! Het weghalen van de backslash heeft inderdaad het probleem opgelost. Bedankt hiervoor.

Ik wil je nog wel vragen, hoe kom je erop om dan die dubbele backslash weg te halen? Het is ogenschijnlijk een simpele oplossing, terwijl ik gister de hele dag aan het proberen ben geweest dit op te lossen. Wat is jouw gedachtegang hierin, zou je dat kunnen proberen uit te leggen? Zo leer ik namelijk ook weer om op een bepaalde manier naar een code te kijken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan