Avatar billede tvc Seniormester
24. januar 2017 - 13:55 Der er 1 kommentar

Ændre i VBA modul via VBA program

Hej
Jeg har brug for at ændre i Modul1 i et VBA-projekt.

I Module_MappingOpdateret skal 1000 rettes til 2000:

Sub MappingOpdateret()

Dim r As Long, Mapping As String


    Application.ScreenUpdating = False
   
'Gennemløber kolonnen H indtil blank mødes
    With ActiveWorkbook.Sheets("Mapping")
        For r = 3 To 1000
            Mapping = .Range("H" & CStr(r)).Value
            If Mapping <> "" Then
                'Undersøg om Mapping findes i listen
                If FindMapping(Mapping) = False Then
                    MsgBox "Mapping [" & Mapping & "] findes ikke som regnskabspost. " & vbLf & "Vælg en eksisterende mappping.", , "Kontrol"
                    ActiveWorkbook.Sheets("Mapping").Range("H" & CStr(r)).Select
                    Exit Sub
                End If
            Else
                MsgBox "Mapping kontrolleret.", , "Kontrol"
                LS
                Exit Sub
            End If
        Next r
    End With
   
    Application.ScreenUpdating = True
   
        ActiveWorkbook.Sheets("Mapping").Activate
End Sub

Er der en som kan hjælpe (jeg har et password på VBA projektet)?
Avatar billede Jan Hansen Ekspert
29. januar 2017 - 01:13 #1
Prøv dette

Option Explicit
'Nedenstående sub lægges i "Denne_projektmappe"´s Codemodul

'Private Sub Workbook_Open()
'      ThisWorkbook.VBProject.References.AddFromGuid _
'      GUID:="{0002E157-0000-0000-C000-000000000046}", _
'      Major:=5, Minor:=3
'End Sub

Dim vbPro As VBIDE.VBProject
Dim vbComp As VBIDE.VBComponent
Dim Codemod As VBIDE.CodeModule
Dim bFound As Boolean
Dim iLinier As Integer
Dim sLinier As String
Dim lCount As Long
    Const sGlCode As String = "1000"    'Gammel Kode (1000)
    Const sNyCode As String = "2000"    'Ny kode (2000)

Sub RetKode()
    Set vbPro = ThisWorkbook.VBProject
    Set vbComp = vbPro.VBComponents("Module1") ' module1 er navnet på modulet der skal rettes
    Set Codemod = vbComp.CodeModule
    With Codemod
        iLinier = .CountOfLines
        For lCount = 1 To iLinier
            bFound = .Find(sGlCode, lCount, 1, lCount, -1, True)
            If bFound = True Then
                sLinier = Replace(.Lines(lCount, lCount), sGlCode, sNyCode)
                .ReplaceLine lCount, sLinier
            End If
        Next lCount
    End With
End Sub

Mvh Jan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester