Avatar billede martin_moth Mester
20. august 2009 - 21:29 Der er 8 kommentarer og
2 løsninger

Kopier ark fra Excel via VBA: Subscript out of range

Skal noget så simpelt som at kopiere et sheet fra et regneark til et andet.

Har en procedure der åbner master-filen (xls-filen der skal kopieres fra), kopierer et bestemt sheet over i mit aktuelle fil, og lukker masterarket igen. Men jeg får en subscript out of range når jeg kører nedenstående kode - og jeg fatter simpelthen ikke hvorfor:

Først et par konstanter:

Const MasterFilePath = "C:\" '<-- Sti til masterregneark
Const MasterFileName = "Toolbox.xls" '<-- Filnavn på masterregneark

Min sub:

Sub copySheetFromMaster(SheetnameToCopy)
  Dim WBName As String
  Dim MasterFilenameAndPath As String
  MasterFilenameAndPath = MasterFilePath & MasterFileName
 
  WBName = ActiveWorkbook.Name 
  Workbooks.Open Filename:=MasterFilenameAndPath, ReadOnly:=True
  Sheets(SheetnameToCopy).Select
  Sheets(SheetnameToCopy).Copy BeFore:=Workbooks(WBName).Sheets(1)
  Windows("MasterFileName").Activate '<FEJL: 9. Subscript out of range
  ActiveWindow.Close False
  Windows(WBName).Activate
  Sheets(SheetnameToCopy).Activate
End Sub

Arket BLIVER kopieret, fejlen kommer først når jeg skal lukke masterarket. Synes det har virket tidligere. Hvad er fejlen mon?
20. august 2009 - 22:00 #1
Prøv med
Windows(MasterFileName).Activate

i stedet for
Windows("MasterFileName").Activate
Avatar billede martin_moth Mester
20. august 2009 - 22:31 #2
for fanden da - havde "hardcoded" et filnavn ind før jeg skiftede til at bruge en variabel... Glemte at fjerne "

Men nu kommer samme fejl ved

  Sheets(SheetnameToCopy).Copy BeFore:=Workbooks(WBName).Sheets(1)
Avatar billede martin_moth Mester
20. august 2009 - 22:34 #3
WBName = "Book1". Kan se at den undervejs i koden har lukket min Book1 - den jeg stod i da jeg startede macroen.  Men det beder jeg den da ikke om
Avatar billede martin_moth Mester
20. august 2009 - 22:37 #4
NÅ - lukkede og åbnede. Alt spille rnu.

Nu det var så nemt kommer et lille ekstra spørgsmål:

Hvordan tjekker jeg om Masterworkbook evt. allerede er åben, inden jeg kører linien :

Workbooks.Open Filename:=MasterFilenameAndPath, ReadOnly:=True
Avatar billede martin_moth Mester
20. august 2009 - 22:41 #5
NEJ - fanme nej. Første gang jeg kører macroen, lukker den mit aktuelle regneark, det ark, der skal kopieres TIL. Kører jeg macroen igen herefter, virker alt...
Avatar billede martin_moth Mester
20. august 2009 - 22:48 #6
ALTSÅ:

Fejlen er, at når jeg starter excel, og kører macroen får jeg fejlen. Fejlen opstår fordi den xls-fil der skal kopieres TIL bliver lukket.

åbner jeg så en ny fil, og kører macroen, virker alt perfekt.

Men lukker jeg excel, starter det forfra - første kørsel af macroen giver fejl. Herefter virker alt. Hvorfor lukekr den book1 (eller hvad mit regneark der kopieres TIL nu tilfældigvis hedder)
Avatar billede martin_moth Mester
20. august 2009 - 22:51 #7
starter en ny tråd, da jeg vist har forvirret lidt for meget her. Smid svar
Avatar billede martin_moth Mester
20. august 2009 - 22:57 #8
21. august 2009 - 06:35 #9
Hvorfor giver du dig selv point - mit første indlæg var et svar.
Avatar billede martin_moth Mester
21. august 2009 - 08:47 #10
Fordi det jo bare skubbede problemet til et andet sted, og jeg umiddelbart troede at de to problemer hang sammen. Oprettede derfor en ny tråd (http://www.eksperten.dk/spm/884266), nu jeg havde skrevet 117 indlæg i denne.

Men det viste sig at det ikke havde noget med hinanden at gøre.

Du får derfor 100p mere - værsgod : http://www.eksperten.dk/spm/884274
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
Kategori
Kurser inden for grundlæggende programmering

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