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

Macro runnen op verschillende systemen / mappenstructuren

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.791
Eenzelfde toepassin moet op 2 verschillende systemen kunnen draaien die jammer genoeg verschillende mappenstructuren hebben.

Het script wordt geactiveerd door een knop op het werkblad.

Als gedachtengang voor een oplossing is de vraag of het bestand te vinden is, zo niet dan het andere bestand kiezen

Systeem A
Code:
Sub RB000_Ophalen()
    Shell "d:\Data mappen\Documenten\A.bat"
End Sub

System B
Code:
Sub RB000_Ophalen()
    Shell "c:\Data\Documents\B.bat"
End Sub

Oplossingsdenken:

Code:
Sub RB000_Ophalen()

  ??  Id exist "d:\Data mappen\Documenten\A.bat"
    Shell "d:\Data mappen\Documenten\A.bat"
  ??  else 
  Shell "c:\Data\Documents\B.bat"

End Sub
 
Wat voor een script wordt er gestart door een knop het bureablad?
En wat heeft dat script met Excel te maken?
Waarom een bat bestand starten vanuit een macro?
 
Laatst bewerkt:
Hi Edmoor,
De knop op het bureaublad start de macro Sub RB000_Ophalen()
Hiermee start een vbs script om de kolommen van een csv download te redigeren en te renamen naar een .txt
Daarna wordt dat gewijzigde .txt bestand ingeladen met macro in een excel bestand.
 
En waar staat dan de If structuur die je liet zien?
In het VB Script?
Dan kan je daarin eenvoudig bepalen welk pad moet worden gebruikt.
 
Laatst bewerkt:
De Sub RB000_Ophalen() is de eerste stap in het hele proces.
Hier moet het bat bestand met het vbs script gevonden worden en gestart.
 
Dan bedoel je zoiets?
Code:
Sub RB000_Ophalen()
    If Dir("D:\Data mappen\Documenten\A.bat") <> "" Then
        Shell "D:\Data\Documents\A.bat"
    Else
        Shell "C:\Data\Documents\B.bat"
    End If
End Sub
Maar waarom niet dat VB Script starten zonder dat bat bestand?
 
Ik kan natuurlijk 2 knoppen plaatsen en handmatig kiezen voor A of B maar dat vind ik geen goede oplossing ;)
 
Ik weet nog steeds niet wat die knop op het bureaublad doet omdat je daarmee geen macro in een Excel document kan starten.
Tenminste, niet zomaar.
 
Laatst bewerkt:
Het gedownloade bestand heeft geen vaste naam.
Door A.Bat wordt mbv vbs in een .bat een vaste naam gegeven (als .txt) en de kolommen gedirigeerd.

De knop zorgt met het starten van
Code:
Sub RB000_Ophalen()
        Shell "D:\Data\Documents\A.bat"
End Sub

Daarna start met een andere knop het inleesproces
Code:
Sub RB101_Inlezen()
    Application.ScreenUpdating = False
         
    Dim sFil As String
    Dim sPath As String
    Dim lRij As Long
    Dim TempName As String
    
    'Restant Importbestandmelding wissen
        Sheets("Variabelen").Select
        Range("A1:B2").Select
        Selection.ClearContents
    
    With Sheets("Variabelen")
          lRij = 1
        sFil = Dir(.Range("D13") & "\" & .Range("E13") & "*" & .Range("F13")) 'Bestandsdefinitie en filter
        Do While sFil <> ""
            .Range("A" & lRij) = sFil
            lRij = lRij + 1
            sFil = Dir
        Loop
      
enz
 
Ik begrijp er niks van.
Hopelijk heb je wat aan #6.
 
@edmoor.
Bedankt tot zover.
Ik ga morgen eens aan de slag met #6
 
#6 geeft voor mij de oplossing :thumb:
Bedankt !
 
Pfoe, een csv redigeren met een BAT en dan met VBA inlezen. Precies waar je PowerQuery voor hebt.
 
Vandaar dus mijn vragen waar niet echt een antwoord is gegeven.
 
Ja Jan. Dat is allemaal in jaren gegroeid.
Meerdere malen bezig geweest met PQ maar kan de draai niet vinden om daar voor mijn toepassing mee om te gaan. Helaas :rolleyes:
 
Vandaar dus mijn vragen waar niet echt een antwoord is gegeven.

Het bedoelde .bat bestand
Code:
@echo off
d:
cd\downloads
del d:\downloads\TR-info.txt >nul
rename d:\downloads\tr*.csv TR-info.csv
"d:\Data mappen\Hulpbestanden\CSVrb2TXT.vbs" tr-info.csv TR-info.txt
del tr-info.csv

het gerelateerde vbs bestand
Code:
Dim of(28)
fileIN = WScript.Arguments.Item(0)
fileOUT= WScript.Arguments.Item(1)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fi = fso.OpenTextFile(fileIN)
Set fo = fso.CreateTextFile(fileOUT,True)

Do Until fi.AtEndOfStream
    rgl = Split(fi.ReadLine, ";")
    of(0) = rgl(1) 'F02 Opdrachtgeversrekening 
    of(1) = rgl(2) 'F03 Tegenrekeningnummer
    of(2) = rgl(3) 'F04 Naam tegenrekening
    of(3) = rgl(0) 'F01 Boekingsdatum
    of(4) = rgl(10) 'F11 Transactiebedrag
    of(5) = ""     'LEEG 1	
    of(6) = ""     'LEEG 2		
    of(7) = ""     'LEEG 3		
    of(8) = ""     'LEEG 4
    of(9) = ""     'LEEG 5	
    of(10) = ""     'LEEG 6	
    of(11) = ""     'LEEG 7	
    of(12) = ""     'LEEG 8
    of(13) = ""     'LEEG 9	
    of(14) = ""     'LEEG 10	
    of(15) = rgl(14) 'F15 Globale transactiecode
    of(16) = rgl(17) 'F18 Omschrijving
    of(17) = rgl(16) 'F17 Betalingskenmerk
    of(18) = ""     'LEEG 1	
    of(19) = ""     'LEEG 2	
    of(20) = ""     'LEEG 3		
    of(21) = ""     'LEEG 4		
    of(22) = ""     'LEEG 5		
    of(23) = ""     'LEEG 6		
    of(24) = rgl(13) 'F14 Interne transactiecode
	of(25) = rgl(11) 'F12 Journaaldatum
	of(26) = rgl(15) 'F16 Volgnummer transactie
    of(27) = ""     'LEEG 1		
    of(28) = ""     'LEEG 2		
    fo.Write Join(of, ",")
    fo.Write vbCrLf
Loop

fi.Close
fo.Close

Zonder PQ zie ik geen kans deze routine in een VBA te verwerken.
Het is zeker niet mijn bedoeling om geen gevraagde info te verstrekken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan