2016-10-12 4 views
0

(Excel и PowerPoint 2011 для Mac)Excel-VBA вызова Powerpoint макрос терпит неудачу во время работы непосредственно на PowerPoint работает отлично

У меня есть макрос первенствовать, который открывает и PowerPoint выполняет макрос. Если я выполнить Powerpoint макрос непосредственно работает нормально, но если я исполню ее из макровызова первенствовать он терпит неудачу с ошибкой времени выполнения «68»: Устройство недоступно

Это до этого цикла:

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

Значит, ваша переменная path имеет значение ": tmp:". Я не вижу, как это работает в любом случае. Если это не локальный привод, например, «C: \ tmp \» или сетевое расположение, такое как «\\ myServer \ tmp \». Согласно MSDN, функция Dir принимает параметр PathName как «выражение String, которое указывает имя файла, имя каталога или папки или метку тома диска». –

+0

Здравствуйте, JamieG, спасибо, что ответили. : tmp - это просто ссылка на папку tmp в фактической папке, где расположена презентация. Я попытаюсь изменить его на глобальный, чтобы увидеть, может ли это быть основной причиной. Благодаря! – Diego

+0

Это исправило проблему. Когда вы выполняете макрос непосредственно на Powerpoint, относительный путь «: tmp:» работает нормально. Если вы хотите вызвать макрос powerpoint из excel, вы должны поместить глобальный маршрут (activepresentation.path $ ": tmp:" – Diego

ответ

0

Попробуйте использовать полный путь при использовании функции Dir.