Opgelost subroutine aanroepen in andere excel

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Velpon

Gebruiker
Lid geworden
20 aug 2020
Berichten
89
Geacht forum,
Ik gebruik de volgende VBA om een set regels over te zetten naar een andere Excel. Dat werkte prima totdat ik genoodzaakt werd om in de andere Excel het blad te beveiligen.

Sub BtnKopieerNaarUrenbeheer_Click()
Application.ScreenUpdating = False

Dim vorigemaand As String
Dim mydoc As Excel.Workbook
vorigemaand = JaarMaand(DateAdd("M", -1, Now()))
Dim strPath As String

strPath = Application.ThisWorkbook.Path

Dim numrows As Long
Dim i As Long
Dim c As Byte
Dim l As Long
Dim addedRow As ListRow
Dim DoelTabel As ListObject
Dim BronTabel As ListObject

Set BronTabel = ActiveSheet.ListObjects("T_Agenda")

numrows = BronTabel.DataBodyRange.Rows.Count
l = 0

Set mydoc = Workbooks.Open(Worksheets("Param").Range("_PadUrenbeheer"))
Set DoelTabel = mydoc.Worksheets("Uren").ListObjects("T_Uren")

For i = 1 To numrows
If JaarMaand(BronTabel.DataBodyRange.Cells(i, 1)) = vorigemaand And BronTabel.DataBodyRange.Cells(i, 15) = "" Then
Set addedRow = DoelTabel.ListRows.Add()
For c = 1 To 8
addedRow.Range(c) = BronTabel.DataBodyRange.Cells(i, c)
Next
BronTabel.DataBodyRange.Cells(i, 15) = Now()
l = l + 1
End If
Next i

mydoc.Close SaveChanges:=True
Application.ScreenUpdating = True
MsgBox (l & " lijnen overgezet."), , "UrenBeheer"

End Sub


Dus nu heb ik behoefte aan code om tijdens de kopieer-actie die beveiliging er af te halen en op het einde weer teug erop te zetten.
Kan iemand mij daarbij helpen?
 
Dankje Edmoor voor je snelle reactie.
Mij gaat het om de mogelijkheid unprotect te doen in een "andere" excel die ik net gekoppeld heb met:
Set mydoc = Workbooks.Open(Worksheets("Param").Range("_PadUrenbeheer"))
Set DoelTabel = mydoc.Worksheets("Uren").ListObjects("T_Uren")
 
Dat veranderd niks aan de methode.
 
Ik heb het de derde regel toegevoegd . . .maar loopt vast.

Set mydoc = Workbooks.Open(Worksheets("Param").Range("_PadFactuurregels"))
Set DoelTabel = mydoc.Worksheets("Blad1").ListObjects("T_Factuurregels")
mydoc.Unprotect Password:=wachtwoord
 
In de links die ik gaf kan je zien dat Unprotect een methode voor een worksheet is.
Je laat het nu los op een range.
 
Ik ben bang dat ik het niet begrijp.
mydoc is nu toch een worksheet. Die probeer ik aan te roepen.
Wil jij vertellen hoe het wél moet aub.
 
mydoc is nu een document, niet een worksheet.
Doe dit eens:
Code:
mydoc.Worksheets("Blad1").UnProtect "Wachtwoord"
 
Of laat die overbodige schijn'beveiliging' achterwege.
 
Dankje Edmoor: Dit was precies het zetje wat ik nodig had
 
Verdiep je eens in autofilter en advancedfilter

PHP:
Sub M_snb()
   With Sheet1.ListObjects(1).DataBodyRange
     .AutoFilter 1, ">=" & Format(DateSerial(Year(Date), Month(Date) - 1, 1), "yyyy-mm-dd"), 1, "<=" & Format(Date - Day(Date), "yyyy-mm-dd")
    .Copy sheet2.Cells(1)
    .AutoFilter
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan