Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 13:36   #1
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию Подставить значение текущего каталога

Как в макросе заменить значение
iPath = "C:\Temp\" выделено жирным
на значение текущего рабочего каталога


Sub SeparateTable()
Dim iLastRowBaza As Long
Dim iLastRowSht As Long
Dim NameOfGoods As String
Dim i As Long
Dim BazaSht As Worksheet
Dim iPath As String

Application.ScreenUpdating = False
Set BazaSht = ActiveSheet
iLastRowBaza = BazaSht.Cells(Rows.Count, 1).End(xlUp).Row
If iLastRowBaza <= 2 Then
MsgBox "На листе нет данных", 48, "Ошибка"
Exit Sub
End If
iPath = "C:\Temp\"
If Dir(iPath) = "" Then
MsgBox "Каталога" & iPath & " не существует", 48, ""
Exit Sub
End If
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
For i = 3 To iLastRowBaza
NameOfGoods = BazaSht.Cells(i, 1)
If i > 3 Then
If NameOfGoods <> BazaSht.Cells(i - 1, 1) Then
ActiveWorkbook.SaveAs Filename:=iPath & BazaSht.Cells(i - 1, 1)
ActiveWorkbook.Close
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
End If
End If
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 13:41   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

iPath = ActiveWorkbook.Path
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 07.12.2009, 14:04   #3
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
iPath = ActiveWorkbook.Path
Спасибо
Спасибо
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 14:20   #4
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от kzld Посмотреть сообщение
Спасибо
Спасибо
Пишет
Каталога не существует
Изображения
Тип файла: bmp catalog.bmp (81.9 Кб, 109 просмотров)
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 14:29   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Присваивать значение пути таким методом -
Код:
iPath = ActiveWorkbook.Path
надо до этих строк
Код:
Workbooks.Add
Иначе да, пути не существует, т.к. вновь созданная книга еще нигде не сохранена и не имеет, так сказать, официального пути расположения.
А вообще, я сначала подумал, что нужен текущий каталог в прямом смысле слова.
Код:
Dim sCurPuth As String
sCurPuth = CurDir
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 07.12.2009, 14:35   #6
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Присваивать значение пути таким методом -
Код:
iPath = ActiveWorkbook.Path
надо до этих строк
Код:
Workbooks.Add
Иначе да, пути не существует, т.к. вновь созданная книга еще нигде не сохранена и не имеет, так сказать, официального пути расположения.
А вообще, я сначала подумал, что нужен текущий каталог в прямом смысле слова.
Код:
Dim sCurPuth As String
sCurPuth = CurDir
В макросах не силён.
Если не составит труда, прошу переделать (исправить) приведённые выше листинг макроса
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 14:42   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Код:
Sub SeparateTable()
Dim iLastRowBaza As Long, iLastRowSht As Long,i As Long
Dim NameOfGoods As String,iPath As String
Dim BazaSht As Worksheet

Application.ScreenUpdating = False
Set BazaSht = ActiveSheet
iLastRowBaza = BazaSht.Cells(Rows.Count, 1).End(xlUp).Row
If iLastRowBaza <= 2 Then
MsgBox "На листе нет данных", 48, "Ошибка"
Exit Sub
End If
iPath = ActiveWorkbook.Path
If Dir(iPath) = "" Then
MsgBox "Каталога" & iPath & " не существует", 48, ""
Exit Sub
End If
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
For i = 3 To iLastRowBaza
NameOfGoods = BazaSht.Cells(i, 1)
If i > 3 Then
If NameOfGoods <> BazaSht.Cells(i - 1, 1) Then
ActiveWorkbook.SaveAs Filename:=iPath & BazaSht.Cells(i - 1, 1)
ActiveWorkbook.Close
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
End If
End If
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 07.12.2009, 14:55   #8
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
[CODE]Sub SeparateTable()
Спасибо, буду пробовать
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 15:14   #9
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Код:
Sub SeparateTable()
Dim iLastRowBaza As Long, iLastRowSht As Long,i As Long
Dim NameOfGoods As String,iPath As String
Dim BazaSht As Worksheet

Application.ScreenUpdating = False
Set BazaSht = ActiveSheet
iLastRowBaza = BazaSht.Cells(Rows.Count, 1).End(xlUp).Row
If iLastRowBaza <= 2 Then
MsgBox "На листе нет данных", 48, "Ошибка"
Exit Sub
End If
iPath = ActiveWorkbook.Path
If Dir(iPath) = "" Then
MsgBox "Каталога" & iPath & " не существует", 48, ""Exit Sub
End If
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
For i = 3 To iLastRowBaza
NameOfGoods = BazaSht.Cells(i, 1)
If i > 3 Then
If NameOfGoods <> BazaSht.Cells(i - 1, 1) Then
ActiveWorkbook.SaveAs Filename:=iPath & BazaSht.Cells(i - 1, 1)
ActiveWorkbook.Close
Workbooks.Add
BazaSht.Range("A1:L2").Copy Destination:=Range("A1")
End If
End If
При пошаговом выполнении F8, спотыкается на строчке
MsgBox "Каталога" & iPath & " не существует", 48,
kzld вне форума Ответить с цитированием
Старый 07.12.2009, 15:16   #10
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Что значит спотыкается? Учитесь описывать саму ошибку, а не слово "спотыкается".
Скорее всего надо эту строчку подкорректировать
Код:
If Dir(iPath) = "" Then
вот так
Код:
If Dir(iPath,vbdirectory) = "" Then
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение текущего каталога Mutagena Помощь студентам 3 01.12.2009 19:55
Приложение которое выводит список файлов текущего каталога и при клике на любом из файлов откроет его. LimanSSk Общие вопросы Delphi 2 18.05.2009 16:03
Найти и подставить значение из другой таблицы ElenaTro Microsoft Office Excel 1 01.04.2009 13:01
Как вывести на экран имена файлов текущего каталога? (С++) Darw1n Помощь студентам 1 13.12.2008 11:10
Изменение текущего каталога mr2 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.02.2008 21:13