Detta är min första post på detta forum, roligt att äntligen hitta ett svensktalade sådant!
Till mitt problem, jag har en vb funktion som jag hittat på nätet som gör precis det jag behöver ifrån det.
Saken är den att jag kan manuellt exekvera det via VB Editorn i MS Access men jag vet inte alls hur jag gör för att få den att köras i mitt macro eller via en knapp på ett formulär.
Min vb funktion ser ut på följande sätt:
Option Compare Database
Function changefieldnames(oldname As String, newname As String)
'----- oldname and newname are passed to this function from
'----- wherever you are in your process. I would do it via a
'----- form, but if the field names you change are the same every
'----- time the process is run, why not store them in a table. The
'----- code you will need to pass the field names to be corrected
'----- from the table is given in Sub readinfieldnames() below.
Dim db As Database
Dim tdf As TableDef
Dim n As Object
Set db = CurrentDb
Set tdf = db.TableDefs("trans1_SMT")
For Each n In tdf.Fields
If n.Name = oldname Then n.Name = newname
Next n
Set tdf = Nothing
Set db = Nothing
End Function
Sub readinfieldnames()
Dim rst_data As Recordset
'------ Assumes you have a table with 2 columns. Column 1 contains
'------- downloaded field names, column 2 has the names you want
Dim oldfieldname As String, newfieldname As String
Set rst_data = CurrentDb.OpenRecordset("conv_FieldNames")
With rst_data
.MoveFirst
Do Until .EOF
oldfieldname = .Fields(0).Value
newfieldname = .Fields(1).Value
changefieldnames oldfieldname, newfieldname
.MoveNext
Loop
End With
Set rst_data = Nothing
End Sub
Jag lyckades tillslut efter mycket om och men få detta löst. Hjälpen kom tillslut via ett annat forum men jag postar lösningen på alla ställen jag frågat utifall någon har samma problem.
Lösningen visdade sig förvånansvärt enkel, man skulle helt enkelt köra funktionen med hjälp av den andre delen i funktionen.
Private Sub Command0_Click()
Call readinfieldnames
End Sub
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e