Avatar billede snowball Novice
09. december 2004 - 10:45 Der er 11 kommentarer og
1 løsning

VBA: Call Shell med mellemrum i filnavnet fejler

Hej.

Det er sikkert en nem lille en ;)

Jeg har nogle data i Access97 som eksporteres over i et Excel som så efterfølgende skal åbnes. Følgende kode åbner en given xls fil i Excel

Call Shell("Excel " & FileName, 1)

Men det virker bare ikke hvis der er mellemrum i filnavnet. F.eks. hvis FileName indholder "C:\Min folder\minfil.xls så kommer Excel og brokker sig over at "C:\Min.xls" ikke findes, og derefter at "folder\minfil.xls" ikke findes.

Kan man åbne filen i Excel på en anden måde sådan så den ikke laver ovenstående fejl?

På forhånd tak.
Avatar billede rbj_fp Nybegynder
09. december 2004 - 10:47 #1
prøv lige
Call Shell("Excel" & Filename, 1) hvor Filename er "'C:\Min Folder\minfil.xls'"
Avatar billede jensen363 Forsker
09. december 2004 - 10:48 #2
Det er mig bekendt ikke filnavnet, men derimod mellemrum i folder-navn som skabe problemet
Avatar billede snowball Novice
09. december 2004 - 10:53 #3
rbj_fp: Virker ikke, for så bliver hele stien jo til "ExcelC:\Min Folder\minfil.xls" ;)

jensen363: Der er problemer med både fil og folder. Hvis FileName indeholder f.eks. "C:\folder\min fil.xls" opstår samme problem.
Avatar billede jensen363 Forsker
09. december 2004 - 11:06 #4
Ved ikke om dette virker i Access97 ... men til alm. inspiration ...

Private Sub GanttChartUpdate_Click()
  Dim stDocName As String
  Dim stLinkCriteria As String
  Dim FilPlacering As String
   
  FilPlacering = DLookup("[Excel_Filplacering]", "tblFilplacering")
   
    OpdaterAlt
       
    DoCmd.SetWarnings False
        DoCmd.RunSQL "DELETE *.* FROM tblGantt_OCX_Data"
    DoCmd.OpenQuery "qryOpdatérGanttData", acNormal, acEdit
        DoCmd.SetWarnings True

    DoCmd.TransferSpreadsheet acExport, 8, "tblGantt_OCX_Data", FilPlacering & "ExcelGantt.xls", True, "Rådata!A1:G7"
   
    runXL

End Sub

Sub runXL()
  Dim myXLWrkBk
  Dim FilPlacering As String
  On Error Resume Next

  FilPlacering = DLookup("[Excel_Filplacering]", "tblFilplacering")

  'Open connection to XL workbook and make visible.
    Set myXLWrkBk = GetObject(FilPlacering & "ExcelGantt.xls")
    myXLWrkBk.Application.Visible = True
    myXLWrkBk.Application.Windows("ExcelGantt").Visible = True
 

'Run procedure in ThisWorkBook folder.
    myXLWrkBk.Application.Run "ThisWorkBook.Auto_Aktiver"
   
End Sub
Avatar billede rbj_fp Nybegynder
09. december 2004 - 11:08 #5
Dette burde virke:
Dim kommando As String
kommando = "c:\programmer\microsoft office\office10\Excel.exe /r ""C:\min mappe\test.xls"""
Call Shell(kommando)
Avatar billede snowball Novice
09. december 2004 - 11:19 #6
jensen363: Der må være en lettere måde end at skulle til at lave Excel objecter og sådan noget.

rbj_fp: Desværre, samme resultat.
Avatar billede rbj_fp Nybegynder
09. december 2004 - 11:21 #7
Du skal jo lige rette placering af excel.exe filen... Det virker fint for mig.
Avatar billede snowball Novice
09. december 2004 - 11:26 #8
rbj_fp: Stien er selvfølgelig rettet, men derfor virker det stadig ikke. Excel kommer stadig med den nævnte fejl. Bruger du også Office97 !?
Avatar billede rbj_fp Nybegynder
09. december 2004 - 11:29 #9
Bruger accessXP, men filen blev konverteret til Access 97 format, og den virkede stadigvæk...
Avatar billede mugs Novice
09. december 2004 - 11:42 #10
Prøv denne:

Dim xls As New Excel.Application
xls.Visible = True
xls.Workbooks.Open Filename:="C:\Min Folder\minfil"

Hvis du får en fejl "Object Is not found in This Library", mangler du en reference til Excel.
Avatar billede snowball Novice
09. december 2004 - 12:03 #11
mugs: Det virker :)

Tak for hjælpen til jer alle.
Avatar billede mugs Novice
09. december 2004 - 12:04 #12
Tak for point.
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