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

VBA om bron van excelquery te wijzigen.

Status
Niet open voor verdere reacties.

Excelbat

Gebruiker
Lid geworden
23 mrt 2012
Berichten
402
Hi All,

Ik lees m.b.v. 'BestandWaarmeeIngelezenWordt.xlsx' een query uit, waarvan de oorspronkelijke gegevens staan in bestand 'RawData.xlsx'.
Echter soms is er een voor mij een dwingende reden om bestand 'RawData.xlsx' op te slaan in C:\Temp, en soms in bijv. H:\AndereMap\Jaar2017.
In bestand 'BestandWaarmeeIngelezenWordt.xlsx' heb ik twee plaatjes, en in cel $I$2 resp. $I$3 de locatie's waar 'RawData.xlsx' opgeslagen zou kunnen staan.

Hoe kan ik via VBA een keuze maken waarvandaan (uit welke map) de RawData.xlsx ingelezen moeten worden?

Bekijk bijlage RawData.xlsx
Bekijk bijlage BestandWaarmeeIngelezenWordt.xlsx

Greetz/Excelbat
 
Daar krijg je beter antwoord op als je die "dwingende reden" erbij verteld.
 
Mijn collega kan alleen op een netwerk werken (H-schijf). Ik werk graag vanaf de harde schijf (C-schijf).

Greetz/Excelbat
 
Mogelijk kan je wat doen met de gebruikersnaam

Code:
Sub VenA()
Dim schijf As String
  If Environ("username") = "Excelbat" Then schijf = "C:\" Else schijf = "H:\"
End Sub
 
Ik heb deze zojuist gevonden op internet. Een post van SNB (VbaExpress.com) uit 2013, die ik lichtelijk omgebouwd heb. En deze werkt:

Code:
Sub M_snb()
    For Each cn In ThisWorkbook.Connections
        cn.ODBCConnection.Connection = Replace(cn.ODBCConnection.Connection, "C:\Temp", "C:\Tijdelijk")
        cn.ODBCConnection.CommandText = Replace(cn.ODBCConnection.CommandText, "C:\Temp", "C:\Tijdelijk")
    Next
End Sub

Deze code gaat echter alle connections af, en ik wil graag dat alleen de connectie uit Worksheet 'Blad1' wordt omgebouwd, waarbij de tabel in 'Blad1' een listobject is.
Kan iemand mij daarbij helpen s.v.p.?

@VenA: Ik kan Environ("username") niet gebruiken om verbindingen te wijzigen.

Greetz/Excelbat
 
En dit is 'm dan uiteindelijk geworden:

Code:
Sub M_snb_Excelbat()
        ThisWorkbook.Connections("QueryExcelbat").ODBCConnection.Connection = Replace(ThisWorkbook.Connections("QueryExcelbat").ODBCConnection.Connection, "C:\Temp", "C:\Tijdelijk")
        ThisWorkbook.Connections("QueryExcelbat").ODBCConnection.CommandText = Replace(ThisWorkbook.Connections("QueryExcelbat").ODBCConnection.CommandText, "C:\Temp", "C:\Tijdelijk")
End Sub

Voor de liefhebbers, bij deze het bestandje waarin de macro's verwerkt zijn. En uiteraard mijn hartelijke dank aan SNB en de andere helpers die op mijn topic gereageerd hebben.

Bekijk bijlage BestandWaarmeeIngelezenWordt.xlsb

Greetz/Excelbat
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan