Jeg har desværre ikke lært VBA fra bunden - og mangler derfor nok lidt grundlæggende forståelse - alligevel kan jeg nu godt lave nogle "sjove" programmer - af og til må jeg bare gå nogle omveje...
Her mener jeg indholdet i for-løkken bør kunne skrives på to linier (måske én) - uden at aktivere eller "selecte" noget.
Jeg kan bare ikke...
Hvordan skrives det mest simpelt, at noget fra ét ark i en fil skal kopieres over til et andet ark i en anden fil.
For a = 1 To 45 kolonne = Int(kolonnerSkalSkiftes(a - 1)) Workbooks(scriptfilnavn).Activate Sheets(ark).Select Range(Cells(1, kolonne), Cells(367, kolonne)).Copy Workbooks(ddatafilnavn).Activate Sheets(1).Cells(1, kolonne).Select ActiveSheet.Paste Next
Nej - virker ikke. Det har ikke noget med kolonne 0 at gøre. Array indeholder i første omgang talværdien 4 :-) I første omgang skrev du paste til sidst og det gjorde du ikke før - så den har jeg forsøgt at fjerne - det virkede heller ikke. Jeg kan ikke bruge anførselstegn, da scriptfilnavn, ark osv. er variabler... Jeg er før stødt på problemer, når jeg blander range sammen med filnavne og ark... er du sikker på, man kan gøre det?
Hej kabbak. Tak for svar. Det er 45 forskellige kolonner (fra række 1 til 367), jeg skal kopiere. Jeg har oven over koden i array kolonnerSkalSkiftes() skrevet de kolonner, der skal kopieres. Det virker fint med min egen kode, så jeg fatter ikke hvorfor det ikke virker, når jeg bruger "den forkortede":
Public Sub test() Dim Ark As String, ScriptFilnavn As String, DdataFilnavn As String, A As Integer Dim kolonnerSkalSkiftes() As Variant, Kolonne 'Jeg ved ikke om du bruger bogstaver eller tal i kolonne, der for er der ikke skrevet Integer eller string Ark = "Ark1" ' ret til dit ark ScriptFilnavn = "Mappe1.xls" ' mappen der kopieres fra, den SKAL være åben før koden køres DdataFilnavn = ThisWorkbook.Name ' navnet på den mappe koden er i og som der kopieres til For A = 1 To 45 Kolonne = Int(kolonnerSkalSkiftes(A - 1)) Workbooks(ScriptFilnavn).Sheets(Ark).Range(Cells(1, Kolonne), Cells(367, Kolonne)).Copy _ Workbooks(DdataFilnavn).Sheets(1).Cells(1, Kolonne) Next End Sub
Det er bare løgn - den sidste "virker" - dog er det alle formlerne i kolonner fra filen ScriptFilnavn, jeg skal bruge - og det kan jeg ikke lige finde ud af med alt det der resize :-(
Din første løsning, oyejo virker heller ikke...
Det er meget mærkeligt. Alle jeres forslag virker altså fint, når jeg forsøger i to nye filer... bare ikke disse to! Meget mærkeligt, synes jeg.
Jeg var med på, at filerne skal være åbne - men i min kode skal filen aktiveres først... sjovt.
Nå - måske bliver jeg klogere en anden gang - rexdent løsning kom først, så han får point - men tak til jer alle!
Jonas
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.