2016-10-12 2 views
0

(Excel und Powerpoint 2011 für Mac)Excel-VBA ein Powerpoint-Makro-Aufruf fehlschlägt, während es direkt auf Powerpoint läuft funktioniert

Ich habe einen Excel-Makro, das eine Powerpoint öffnet und führt einen Makro. Wenn ich den Powerpoint-Makro direkt ausführen es funktioniert gut, aber wenn ich es aus dem Excel-Makro-Aufruf ausführen schlägt es mit Laufzeitfehler ‚68‘: Gerät nicht verfügbar

Es ist vor dieser Schleife:

Dim strfilee As String 


mydir = ":tmp" 
strpath = mydir & ":" 
strfilee = Dir(strpath) <--- Failing on this line 


''''Loop through each file in the folder to find the one with the OS parameters 

    i = 0 

    Do While Len(strfilee) > 0 
    cellplace = "A" & i 

     If Right(strfilee, 11) = "params.pptx" Then 
     lspace = InStr(1, strfilee, "_", vbTextCompare) 
     target_name = Trim(Left(strfilee, lspace - 1)) 
     sc_file_name = "tmp" & ":" & strfilee 

       With ActivePresentation 
        number_slides = .Slides(.Slides.Count).SlideNumber 
        End With 
       ActivePresentation.Slides.InsertFromFile sc_file_name, number_slides 


     End If 
     strfilee = Dir 
     i = i + 1 

    Loop 
+0

So wird Ihre Pfadvariable auf ": tmp:" gesetzt. Ich kann nicht sehen, wie das in beiden Fällen funktioniert. Sollte es nicht eine lokale Laufwerksreferenz sein, z.B. "C: \ tmp \" oder ein Netzwerkstandort wie "\\ myServer \ tmp \". Laut MSDN verwendet die Dir-Funktion den PathName-Parameter als "String-Ausdruck, der einen Dateinamen, ein Verzeichnis oder einen Ordnernamen oder Laufwerkslautstärke-Label angibt." –

+0

Hallo JamieG, danke für die Antwort. : tmp ist nur ein Verweis auf den tmp-Ordner in dem tatsächlichen Ordner, in dem sich die Präsentation befindet. Ich werde versuchen, es zum globalen zu ändern, um zu sehen, ob dies die Ursache sein kann. Vielen Dank! – Diego

+0

Das behebt das Problem. Wenn Sie das Makro direkt auf dem Powerpoint ausführen, funktioniert der relative Pfad ": tmp:" einwandfrei. Wenn Sie das Powerpoint-Makro von Excel aufrufen möchten, müssen Sie die globale Route einfügen (activepresentation.path $ ": tmp:" – Diego

Antwort

0

Verwenden Sie den vollständig qualifizierten Pfad, wenn Sie die Dir-Funktion verwenden.

Verwandte Themen