Avatar billede itcon Nybegynder
30. september 2003 - 14:03 Der er 14 kommentarer og
1 løsning

Ændre navn på linket ark i excel fil

Jeg har en Acc2002 database som linker op til et ark i en excel fil - desværre bliver denne excel fil opdateret andetsteds fra så arkets navn ændrer sig et par gange i løbet af ugen - er der nogen måde hvorpå man kan ændre på navnet som der linkes til, eller "bare" linke til det første ark i xlsfilen uden at bruge ark-navnet ?

Navnet på arket ligger i MsysObjects men det kan jeg vist ikke få lov til at redigere i.

Jeg kan selvfølgelig også bare importere skidtet, men det vil jeg helst undgå.
Avatar billede henrik13 Nybegynder
30. september 2003 - 14:10 #1
I din sti udskifter du navnet mrd en stjerne. *.xls
Avatar billede henrik13 Nybegynder
30. september 2003 - 14:11 #2
Rettelse:
mrd = med
Ligger der flere tager den, den første.
Vh Henrik
Avatar billede itcon Nybegynder
30. september 2003 - 14:13 #3
Det er ikke navnet på xls filen som er problemet, men navnet på arket "inde" i xls filen
Avatar billede kabbak Professor
30. september 2003 - 15:08 #4
Navngiv data området i excel og link til det, så gør det ikke noget at skifter navn på arket.
Vel og mærke at det ikke er et nyt ark de sætter ind.
Avatar billede itcon Nybegynder
30. september 2003 - 15:10 #5
Ny xls og nyt ark hver gang desværre :(
Avatar billede fdata Forsker
30. september 2003 - 16:39 #6
Følgende virker under Access 97:
(klippet ud af en større helhed)

  Const LinkNavn="NavnPåExcelLink"
  Dim Tdf As TableDef

  ' Slet det gamle link
  CurrentDb.TableDefs.Delete LinkNavn

  ' Opret nyt link
  Set Tdf = CurrentDb.CreateTableDef(LinkNavn)        ' Link navn
  With Tdf
    .SourceTableName = "COL$"                    ' Arknavn
    .Connect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & Filnavn  ' Filnavn
  End With
  CurrentDb.TableDefs.Append Tdf

  Set Tdf = Nothing
Avatar billede itcon Nybegynder
30. september 2003 - 16:47 #7
Fdata - det ser lovende ud, jeg havde selv overvejet at genbruge noget kode jeg har liggende fra en funktion som checker om linkede tabeller er intakte, men hvordan får jeg opsnappet ark-navnet, som jeg ikke kender på forhånd ? (SourceTableName = "COL$") - det er typisk en beskrivelse og trækningsdato.
Avatar billede fdata Forsker
30. september 2003 - 16:50 #8
Hm. Den er værre. (Det skrev du jo godt nok også i spm.)
Jeg prøver at rode lidt med det...
Avatar billede itcon Nybegynder
30. september 2003 - 16:54 #9
Det lyder sgu godt
Avatar billede fdata Forsker
30. september 2003 - 17:23 #10
OK. Prøv denne her:

Sub RelinkExcel()
  Const LinkNavn = "Sheet1"
  Const Filnavn = "C:\Temp\Book1.xls"
 
  Dim ArkNavn As String
  Dim Tdf As TableDef

  ' Slet det gamle link
  On Error Resume Next
  CurrentDb.TableDefs.Delete LinkNavn
  On Error GoTo 0

  ' Find første ark
  ArkNavn = FindFørsteArk(Filnavn)
 
  ' Opret nyt link
  Set Tdf = CurrentDb.CreateTableDef(LinkNavn)                ' Link navn
  With Tdf
    .SourceTableName = ArkNavn & "$"                          ' Arknavn
    .Connect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & Filnavn  ' Filnavn
  End With
  CurrentDb.TableDefs.Append Tdf
  CurrentDb.TableDefs.Refresh

  Set Tdf = Nothing
End Sub

Function FindFørsteArk(Filnavn As String) As String
  Dim ExcelObj As Object
  Set ExcelObj = CreateObject("Excel.Application")
 
  With ExcelObj
    .Workbooks.Open FileName:=Filnavn
    FindFørsteArk = .Sheets(1).Name
    .Quit
  End With
   
  Set ExcelObj = Nothing
End Function
Avatar billede itcon Nybegynder
30. september 2003 - 17:28 #11
Ser rigtigt godt ud - har lige en hastesag, så jeg kigger på det om et par timer.
Avatar billede itcon Nybegynder
30. september 2003 - 20:35 #12
Jeg har nu afprøvet koden og det virker i princippet, og så alligevel ikke. Det lor.. system som sprøjter excel filen ud starter arknavnet med et mellemrum, der ikke kan accepteres af din kode. Jeg får nedenstående fejlmeddelse - det underlige er bare at når man linker manuelt så virker det. hvis jeg fjerner mellemrummet virker det også, men det kan det andet system ikke levere....nogen ideer ?

<Name> is not a valid name. Make sure that it does not include invalid characters or punctuation and that it is not too long. (Error 3125)
The specified name does not follow standard naming conventions or is not a valid parameter or alias name. Check your entry to make sure you have not included invalid characters or punctuation and that the name is not too long.
Avatar billede fdata Forsker
01. oktober 2003 - 19:38 #13
Don't give up.
Hvis det ikke giver problemer med andre brugere, kan du jo vælge at omdøbe arket:

Sub OmdøbFørsteArk(Filnavn As String, NytNavn as String)
  Dim ExcelObj As Object
  Set ExcelObj = CreateObject("Excel.Application")
 
  With ExcelObj
    .Workbooks.Open FileName:=Filnavn
    .Sheets(1).Name = NytNavn
    .ActiveWorkbook.Save
    .Quit
  End With
   
  Set ExcelObj = Nothing
End Sub
(ikke testet)

... og så kan du jo let åbne arket. Kombineret med tidligere fremsendte burde det spille.

Hvis du ikke kan omdøbe, ser det lidt sort ud. Løsningen virker jo som sådan; men jeg kan sagtens se dit problem. Jeg har ikke umiddelbart andre ideer.
Avatar billede itcon Nybegynder
01. oktober 2003 - 22:29 #14
Hej fdata,

Ja, jeg har i mellemtiden lavet en løsning a ala det sidste du foreslår - jeg kopierer filen til et tmp-dir, og omdøber første ark - rimeligt lallet, men det virker. Du får selvfølgelig point for din super indsats.
Avatar billede fdata Forsker
01. oktober 2003 - 23:12 #15
Takker.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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