Jeg håber der er én der ude som kan hjælpe med lidt af en hovedpine.
Jeg benytter et word doc med ca. 2400 bogmærker som input for excel fil, hvor data'en exporteres fra. Når jeg trigger makro'en modtager jeg fejlmeddelsen "procedure for stor/lang", og har forsøgt lidt metoder på nettet, men er ikke lige helt ferm nok til VBA til at jeg kan kombinere min kode for at transmittere data til word doc + kombinere moduler (eller sub procedurer).
Nogen her som har forstand på dette, og vil have lyst til at dele lidt info, så vil det være en stor hjælp.
Tidligere varcder en begrænsning på procedurer til 64 kbl om det er ændret ved jeg ikke. Du er nødt til at kave en række mindre procedurer, som du så kalder på skift, men det er svært at sige præcis, hvordan det skal opdeles uden at kende detaljerne.
Indrømmer gerne hurtigt at jeg ikke er ekspert på dette område, så det kan garanteres gøres meget smartere. herunder er hvad jeg har lavet blot med 2400 forskellige eksempler istedet for ét enkelt som ses herunder:
Option Explicit Const FilePath As String = "C:\Users\username\Desktop\eksempel på mappe\" Dim wd As New Word.Application
Set doc = wd.Documents.Open(FilePath & "output.docx") Copy2word "eksempel1", eksempel1
doc.Close
wd.Quit 'MsgBox "Created files in " & FilePath & "!"
End Sub Sub Copy2word(BookMarkName As String, Text2Type As String) 'copy each cell to relevant Word bookmark wd.Selection.GoTo What:=wdGoToBookmark, Name:=BookMarkName wd.Selection.TypeText Text2Type End Sub
Det er lidt svært, at gennemskue, når man ikke har dit regneark og/eller Word-dokument, men umiddelbart ser det ud som om, at du netop laver dine bogmærker enkeltvis.
Hvis du har alle dine bogmærker i A-kolonnen, skal du IKKE læse dem med (noget i denne retning):
Dim eksempel1 As String eksempel1 = ThisWorkbook.Sheets(1).Range("a1").Value Dim eksempel2 As String eksempel2 = ThisWorkbook.Sheets(1).Range("a2").Value Dim eksempel3 As String eksempel13= ThisWorkbook.Sheets(1).Range("a3").Value Dim eksempel4 As String eksempel4= ThisWorkbook.Sheets(1).Range("a4").Value O.s.v.
...men, i stedet benytte noget i retning af:
Dim Counter As Long Dim eksempel As String For Counter = 1 To 4 ' Eller, hvor langt ned din bogmærke liste er eksempel = ThisWorkbook.Sheets(1).Range("a" & Counter).Value ' Gøre noget med bogmærket Next
Har mine data liggende i B10 - B401, C10 - C401, D10 - D813, E10 - E813.
Kan jeg så lave: Dim Counter As Long Dim eksempel As String For Counter = 1 To 401 ' Eller, hvor langt ned din bogmærke liste er eksempel = ThisWorkbook.Sheets(1).Range("b" & Counter).Value
Dim Counter As Long Dim eksempel As String For Counter = 1 To 401 ' Eller, hvor langt ned din bogmærke liste er eksempel = ThisWorkbook.Sheets(1).Range("c" & Counter).Value
Dim Counter As Long Dim eksempel As String For Counter = 1 To 813 ' Eller, hvor langt ned din bogmærke liste er eksempel = ThisWorkbook.Sheets(1).Range("d" & Counter).Value
Dim Counter As Long Dim eksempel As String For Counter = 1 To 813 ' Eller, hvor langt ned din bogmærke liste er eksempel = ThisWorkbook.Sheets(1).Range("e" & Counter).Value
Men hvordan fanger den så hvert enkelt bogmærke til rette lokation i word dokumentet. Der er 2400 bogmærker mange forskellige steder i dokumentet
Synes godt om
Ny brugerNybegynder
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.