J'ai un sous VBA & rapide sale qui fait ce que je pense que vous voulez. (Pouvez-vous le traduire dans l'une de vos langues préférées?) Vous pouvez l'essayer avec une copie de votre base de données. (NE PAS essayer avec la seule copie d'une base de données que vous souhaitez conserver!)
Pour substituer « tblBar » pour « tblFoo » dans vos requêtes, vous pouvez l'exécuter à partir de la fenêtre immédiate VBE (de accès, Ctrl +g vous y) comme ceci:
call swapTblNamesInQueryDefs("tblFoo", "tblBar")
Pour enregistrer réellement les définitions de requêtes modifiées, appelez-le comme suit:
call swapTblNamesInQueryDefs("tblFoo", "tblBar", "savechanges")
Le code:
Public Sub swapTblNamesInQueryDefs(ByVal pstrFind As String, _
ByVal pstrReplace As String, _
Optional ByVal pstrMode As String = "DisplayOnly")
Dim qd As QueryDef
Dim re As Object
Dim strSql As String
Set re = CreateObject("vbscript.regexp")
re.Global = True
re.IgnoreCase = True
re.Pattern = "\b" & pstrFind & "\b"
For Each qd In CurrentDb.QueryDefs
If Left$(qd.Name, 1) <> "~" Then
Debug.Print qd.Name
Debug.Print "Before: " & qd.SQL
strSql = re.Replace(qd.SQL, pstrReplace)
Debug.Print "After: " & strSql
'only save the modified SQL statement if called
'with SaveChanges parameter
'If pstrMode = "SaveChanges" Then
If StrComp(pstrMode, "SaveChanges", vbTextCompare) = 0 Then
qd.SQL = strSql
End If
Debug.Print String(20, "-")
End If
Next qd
Set re = Nothing
Set qd = Nothing
End Sub
Edit: évaluation Changement de pstrMode
pour garantir la comparaison de insensibles à la casse (dans le module de cas comprend "Option Compare Binary").
Bon code! Je ne peux pas dire que j'en ai besoin (comme j'ai 3 options de recherche et de remplacement à choisir), mais je peux voir qu'il est utile à un moment donné pour moi, et est certainement utile pour l'OP. –
Merci Hans, VBA est également une option à ma disposition. Je vais essayer le code dans un jour ou deux et faire un rapport. Quels compléments de recherche et de remplacement utilisez-vous David? – Ben
J'ai essayé le code hier et ça a très bien fonctionné. Merci. – Ben