Вход | Регистрация | Забыли пароль?
Страницы: 1 2
Excel в работе
Почетный житель
Сообщений: 1074
Регистрация: 08.02.2011
Статус: offline
Корпус: 7
Секция: 1
Этаж: 6
Рейтинг: 48 ()
Написано: 20.05.2014, 11:03 | Полезность: 0
   #21
Соседи, кто подскажет решение такой задачи:

Есть простенький макрос, который выгружает нужный диапазон из файла эксель в формате pdf:

Sheets("Запрос").Select
Range("B1:D43").Select
ChDir "W:\Common\Запрос\PDF"
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"W:\Common\Запрос\PDF\запрос.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Как видно из кода, диапазон выгружается в определенную папку W:\Common\Запрос\PDF. Мне же нужно, чтобы он выгружался в папку, в которой в данный момент лежит мой файл эксель. Кто подскажет, как в таком случае прописать директорию?
Почетный житель
Сообщений: 1049
Регистрация: 23.03.2011
Статус: offline
Корпус: 1
Секция: 4
Этаж: 13
Рейтинг: 27 ()
Написано: 26.05.2014, 17:53 | Полезность: +1
   #22
ActiveWorkbook.Path - указывает текущую директорию открытого файла.
Добавлено 26.05.2014 в 17:57
Ну или так, если файл в корне диска С окажется

sName = ActiveWorkbook.Path
If Len(sName) <> 3 Then sName = sName & "\"
MsgBox sName
Почетный житель
Сообщений: 1074
Регистрация: 08.02.2011
Статус: offline
Корпус: 7
Секция: 1
Этаж: 6
Рейтинг: 48 ()
Написано: 27.05.2014, 09:15 | Полезность: 0
   #23
Aleks_Nata
Большое спасибо за подсказку. Уже два часа бьюсь, но не получается.
Точнее все работает если диск локальный и надо сохранить например на диске D. Однако если тот же самый код применять на сетевом диске W, то он упорно сохраняет на диск С в папку "мои документы".

Пробовал также использовать функцию CurDir, но результат тот же. На локальных дисках работает. На сетевых отказывается.
Добавлено 27.05.2014 в 09:21
Погуглил тут немного насчет CurDir

"Поскольку функция воспринимает только однобуквенные названия дисков, использовать сетевые имена дисков нельзя"

Пичалька(((
Почетный житель
Сообщений: 1049
Регистрация: 23.03.2011
Статус: offline
Корпус: 1
Секция: 4
Этаж: 13
Рейтинг: 27 ()
Написано: 27.05.2014, 11:07 | Полезность: 0
   #24
Metrolog
Да вот же ... Преобразование пути к сетевой папке в формат UNC

Sub ПолучениеСетевогоПутиПапки()
ОбычныйПуть = "Z:\Папка\Разное\"
With CreateObject("Scripting.FileSystemObject").getfolder(ОбычныйПуть)
СетевойПуть = Replace(.Path, .Drive.Path, .Drive.ShareName)
End With
Debug.Print ОбычныйПуть, СетевойПуть
' СетевойПуть = \\server\Files\Папка\Разное
End Sub

тоже самое но в виде функции

Function UNC(ByVal NetworkPath$) As String
On Error Resume Next
With CreateObject("Scripting.FileSystemObject").getfolder(NetworkPath$)
UNC = Replace(.Path, .Drive.Path, .Drive.ShareName)
End With
End Function

Sub ПримерИспользованияФункцииГТС()
СетевойПуть = UNC("Z:\Папка\Разное")
MsgBox СетевойПуть
End Sub
Почетный житель
Сообщений: 1074
Регистрация: 08.02.2011
Статус: offline
Корпус: 7
Секция: 1
Этаж: 6
Рейтинг: 48 ()
Написано: 27.05.2014, 14:27 | Полезность: 0
   #25
Aleks_Nata
Ура! Получилось.
Я просто сдуру неправильно прописывал путь. В конечном итоге код такой:

Sub Êíîïêà1_Ùåë÷îê()


Dim sname As String
Sheets("Çàïðîñ").Select
Range("B1:D43").Select


sname = Excel.Application.ActiveWorkbook.Path & "\Çàïðîñ.pdf"

ChDir UNC(Excel.Application.ActiveWorkbook.Path)
Selection.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
sname _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False


End Sub

Большое спасибо за помощь.
Страницы: 1 2


Пробки на Яндекс.Картах
Яндекс.Погода
Пользовательское соглашение | Размещение рекламы
Copyright © www.solncevopark.ru, 2010