Avatar billede puppetmaster Nybegynder
28. maj 2004 - 10:04 Der er 21 kommentarer og
1 løsning

Virker ikke i Excel 97

Jeg har et regneark, som henter data ind fra nogle database filer.
Problemet er at indlæsningen går i stå og VBA markerer denne linie. Er det fordi Selection. AutoFill ikke er understøttet i Excel 97? Det fungerer fint i Excel XP, men da det er 4-5 brugere der er tale om, vil jeg helst undgå at opgradere alle til XP.

Selection.AutoFill Destination:=Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":"))), Type:=xlFillDefault
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 10:20 #1
Fejlmeddelelsen:
Kørselsfejl "5":
Procedurekaldet eller argumentet er ugyldigt
Avatar billede steen_hansen Forsker
28. maj 2004 - 10:22 #2
Mit umiddelbare gæt er, at det ikke understøttes af Excel97. Sådan er det jo, når der kommer nye Office-pakker på markedet. Men jeg er ikke 100% sikker, så jeg kigger med.
Avatar billede bak Forsker
28. maj 2004 - 10:25 #3
prøv lige at fjerne Type:=xlFillDefault
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 10:30 #4
I følge http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcel9/html/xlxl97mig.asp kan man godt bruge Selection.AutoFill i Excel 97....hmm...
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 10:30 #5
bak, det prøver jeg engang
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 10:35 #6
Det hjalp ikke, bak.
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 11:09 #7
Jeg kan sige så meget, at denne kode, som er tiltænkt at virke med Excel 97, IKKE virker med 97 men med XP! (vedkommende der har udviklet koden har OGSÅ lavet en funktion til XP!) Forvirringen er total! Hvad er der galt med denne kode? når den er afviklet under XP, er der data i regnearket, men det er der ikke under Excel 97!

Function ImportData_ver97(ActualSheet As String, PathImp As String, NameOfFile As String)

'*** Indlæser DBF-filer fra produktionsopfølgningssystemet ***
    On Error Resume Next  'Templaten indeholder ikke kæder til eksterne data
                          'derfor vil linierne "Selection.QueryTable.Delete"
                          'resultere i runtime error
   
    Sheets(ActualSheet).Select
    Cells.Select
    Selection.Clear
    Selection.QueryTable.Delete
    With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & PathImp & NameOfFile, Destination:=Range("A1"))
        .FieldNames = True
        .RefreshStyle = xlInsertDeleteCells
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = False
        .HasAutoFormat = True
        .BackgroundQuery = True
        .TablesOnlyFromHTML = True
        .Refresh BackgroundQuery:=False
        .SavePassword = True
        .SaveData = True
    End With
   
'***Sletter det navn som automatisk oprettes ved indlæsning af eksterne data, ***
'***da navnet kun gælder for aktuel sheet***
    ActiveWorkbook.Names(ActualSheet).Delete
   
'***Opretter nyt "globalt" navn***
    Selection.CurrentRegion.Select
    ActiveWorkbook.Names.Add Name:=ActualSheet, RefersTo:="=" & Selection.CurrentRegion.Address
    Range("A1").Select
   
End Function
Avatar billede sjap Praktikant
28. maj 2004 - 11:14 #8
Prøv at debugge

Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":")))

For at se hvad den giver.
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 11:23 #9
Den viser RangeAddress="$A$1"
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 11:24 #10
Derefter går den i fejl (den meddelelse jeg skrev tidligere)
(det er dog stadig linien Selection.AutoFill Destination:=Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":"))), Type:=xlFillDefault) der er highlightet
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 11:42 #11
Når jeg indsætter fejlcheck kode (on error goto Fejl), så viser err.description
"Der opstod en programdefineret eller objektdefineret fejl"
err.number giver
1004
Avatar billede knowit-mmp Nybegynder
28. maj 2004 - 11:43 #12
En ting du skal være opmærksom på, er at din RangeAddress-variabel ikke må slutte i andet end kolonne G....

Autofill fungerer kun enten vandret eller lodret, ikke begge på en gang.

Derfor, hvis din RangeAddress eksempelvis er "G2:K20", så vil den fejle.
I det tilfælde må du lave funktionen af 2 omgange.

Derudover er det altid en god ide at bruge RangeObjekter i stedet for tekst-variabler der angiver Range-adresser...

Følgende kode virker :
Sub Test()

  Dim RangeAddress
  Dim rngDestination As Range

  RangeAddress = "A1:G20"

  Set rngDestination = Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":")))

  Selection.AutoFill Destination:=rngDestination, Type:=xlFillDefault

End Sub

hvorimod denne kode fejler :

Sub Test()

  Dim RangeAddress
  Dim rngDestination As Range

  RangeAddress = "A1:K20"

  Set rngDestination = Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":")))

  Selection.AutoFill Destination:=rngDestination, Type:=xlFillDefault

End Sub



Til dit andet spørgsmål vedr QueryTables, så mener jeg at det er egenskaben '.TablesOnlyFromHTML', der skal fjernes fra din kode. Denne funktionalitet er så vidt jeg husker IKKE understøttet i Excel 97.
Avatar billede sjap Praktikant
28. maj 2004 - 11:44 #13
Hvis RangeAddress="$A$1" mangler der så ikke et kolon? F.eks.

Range("G2:" & Mid(RangeAddress, InStr(RangeAddress, ":")))

Ellers kommer der til at stå Range("G2$A$4) og det giver jo ikke mening.
Avatar billede knowit-mmp Nybegynder
28. maj 2004 - 11:50 #14
Jeg mener heller ikke at du kan bruge autofill hvis dit område KUN er på en celle....

Så vidt jeg kan se udfra det du har skrevet, så er RangeAddress=$A$1..

Det svarer til at din function bliver til
mid("$A$1",INSTR("$A$1",":")), hvilket vil give en fejl, for INstr giver nul, og mid(Tekst,0), vil ikke fungere...det giver fejl 5...
Avatar billede sjap Praktikant
28. maj 2004 - 11:50 #15
Du får iøvrigt også en fejl som følge af at der ikke er noget : i RangeAdress

InStr(RangeAddress, ":") returnerer værdien 0, og den kan ikke benyttes som startværdi i Mid
Avatar billede sjap Praktikant
28. maj 2004 - 11:51 #16
knowit -> Nu bliver du vist lidt for hurtig!  ;0)
Avatar billede knowit-mmp Nybegynder
28. maj 2004 - 11:52 #17
Ja.....Beklager..:-)
Avatar billede puppetmaster Nybegynder
28. maj 2004 - 12:23 #18
hmmm...problemet er at det VIRKER under XP, men ikke 97.....strange.
Avatar billede sjap Praktikant
28. maj 2004 - 12:34 #19
Der må være en forskel i hvad Mid funktionen accepterer. Jeg har ikke XP, så jeg kan ikke kontrollere det.

Hvis du kan få det til at virke under 97, kan du jo så efterfølgende prøv om det så virker i XP!
Avatar billede bak Forsker
28. maj 2004 - 14:09 #20
prøv lige at poste hele hele koden, så vi kan se hvad der går galt.
Specielt hvordan den finder RangeAddress og hvad der er Selected på inden

Selection.AutoFill Destination:=Range("G2" & Mid(RangeAddress, InStr(RangeAddress, ":"))), Type:=xlFillDefault
Avatar billede puppetmaster Nybegynder
01. juni 2004 - 11:10 #21
Jeg fandt selv løsningen:
Opgradér MDAC fra 2.6 til 2.6 SP 2 eller 2.8, afhængig af om det er en Windows 95/98/NT.
Så kører det problemfrit
Avatar billede knowit-mmp Nybegynder
01. juni 2004 - 17:43 #22
Nårh ja....det var da også logisk...:-)

Godt at du fandt en løsning, som vi andre måske kan forsøge, når der er noget der driller...

/Martin
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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