Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Save as / 24 сообщений из 24, страница 1 из 1
15.05.2013, 18:29
    #38258996
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Народ, добрового времени суток!
Погомите, пожалуйста, с простеньким макросом (я так думаю). Необходимо чтобы файл с помощью макроса сохранялся в определённую папку изначально с именем файла "1.xls", а последующие файлы сохранялись как "2.xls", "3.xls", "4.xls" т.е. по нарастающей.
Сам в макросах плохо разбираюсь.
...
Рейтинг: 0 / 0
15.05.2013, 18:40
    #38259009
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Код: vbnet
1.
ThisWorkbook.SaveAs CStr(Val(ThisWorkbook.Name)+1)
...
Рейтинг: 0 / 0
15.05.2013, 19:03
    #38259048
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Shocker.Pro,
Ура :) Спасибо!
...
Рейтинг: 0 / 0
15.05.2013, 19:52
    #38259094
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Shocker.Pro,
Блин, всё равно немного не так :( При открытии файла с другим именем эксель ругается, что в папке уже существует файл "1.xls" , а мне надо чтобы он продолжал нумерацию с последнего сохраненого в папке "9.xls"
...
Рейтинг: 0 / 0
15.05.2013, 20:14
    #38259122
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345,

перебирайте циклом файлы в папке и ищите максимальный.
...
Рейтинг: 0 / 0
15.05.2013, 20:37
    #38259151
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Подскажите, пожалуйста, как? Я ламер в вба
...
Рейтинг: 0 / 0
15.05.2013, 20:39
    #38259153
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Подскажите, пожалуйста, как? Я ламер в вба
...
Рейтинг: 0 / 0
15.05.2013, 20:49
    #38259161
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345, примерно так. Не проверял - писал "на коленке"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String, lMax as long,lCnt as long
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        lCnt = Val(sFiles)
        if lMax < lCnt then lMax = lCnt
        sFiles = Dir
    Loop
    ThisWorkbook.SaveAs CStr(lMax+1) & ".xls",vbnormal
End Sub
...
Рейтинг: 0 / 0
17.05.2013, 11:47
    #38261644
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Открывается окно "обзор" и просит ввести имя папки :(
...
Рейтинг: 0 / 0
17.05.2013, 11:55
    #38261656
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345,

а выбрать папку в которой эти файлы не судьба, что ли? Вы же написали - в определенную папку. Я что, должен догадаться какая для Вас определенная и в какой у Вас файлы? :)
Вместо
Код: vbnet
1.
2.
3.
4.
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = False Then Exit Sub
    sFolder = .SelectedItems(1)
End With


пропишите
Код: vbnet
1.
sFolder = "здесь в кавычках полный путь к папке с файлами, включая слеш"
...
Рейтинг: 0 / 0
17.05.2013, 12:35
    #38261740
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Всё равно окошко открывается :(
...
Рейтинг: 0 / 0
17.05.2013, 15:54
    #38262265
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345,

Да как оно может открываться, если блок выбора папки заменили на одну строку с точным путем к ней?! Или это я написал, что надо заменить, но Вы этого не сделали? Напишите-ка, что у Вас там получилось. Вот по моим расчетам должно было так получиться(специально для особо ленивых):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String, lMax as long,lCnt as long
    sFolder = "C:\Папка с файлами\" 'здесь в кавычках полный путь к папке с файлами
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        lCnt = Val(sFiles)
        if lMax < lCnt then lMax = lCnt
        sFiles = Dir
    Loop
    ThisWorkbook.SaveAs CStr(lMax+1) & ".xls",vbnormal
End Sub



P.S. Хоть немного начните изучать VBA. А то Вам уж и код дали, и подсказку как без диалога, а воз и ныне там.
...
Рейтинг: 0 / 0
17.05.2013, 16:45
    #38262384
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Я и так и сяк пробовал :) Либо окошко открывается, либо runtime error 1004
Это возможно у меня библиотека какая-то не подключена?
...
Рейтинг: 0 / 0
17.05.2013, 17:06
    #38262424
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345,

Т.е. я тут буду Вам коды писать, варианты выдавать, гадать где ошибка... А Вы тупо ждать моих новых идей? Я Вас попросил - покажите, что у Вас за код получился! sFolder чему равна? На какой строке ошибка? Неужели сложно догадаться, что помимо того, что сказать "болит!" необходимо сказать ГДЕ .
...
Рейтинг: 0 / 0
17.05.2013, 17:19
    #38262446
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String, lMax As Long, lCnt As Long
    sFolder = "I:\PPM"
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        lCnt = Val(sFiles)
        If lMax < lCnt Then lMax = lCnt
        sFiles = Dir
    Loop
    ThisWorkbook.SaveAs CStr(lMax + 1) & ".xls", vbNormal
End Sub


Ошибка сразу вылетает, скрин приатачил
...
Рейтинг: 0 / 0
17.05.2013, 17:26
    #38262454
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
...
Рейтинг: 0 / 0
17.05.2013, 18:55
    #38262599
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Dmitry12345,

Что значит сразу? И редактор ничего не подсвечивает, не выделяет? Тогда я бессилен. Сам только что код проверил - все работает.
...
Рейтинг: 0 / 0
17.05.2013, 20:03
    #38262704
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
...
Рейтинг: 0 / 0
17.05.2013, 20:08
    #38262710
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
При запуске вылетает сразу, не подсвечивая ничего :) Спасибо Вам за помощь и гемор со мной! Ушёл вешаться :)
...
Рейтинг: 0 / 0
17.05.2013, 20:12
    #38262714
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Где код расположен? Как вызываете код?
Повторю - сам код рабочий. Проблема не в нем, а в файле или в методе вызова процедуры. Возможно вызывается по событию Change или по подключению данных.
...
Рейтинг: 0 / 0
17.05.2013, 20:17
    #38262720
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Кстати...книга, случаем, не в общем доступе?
Попробуйте изменить код так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String, lMax As Long, lCnt As Long, lDefFileFormat as long
    lDefFileFormat = Application.DefaultSaveFormat
    Application.DefaultSaveFormat = xlNormal
    sFolder = "I:\PPM"
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        lCnt = Val(sFiles)
        If lMax < lCnt Then lMax = lCnt
        sFiles = Dir
    Loop
    ThisWorkbook.SaveAs CStr(lMax + 1) & ".xls", vbNormal, , , , , xlNoChange
    Application.DefaultSaveFormat = lDefFileFormat
End Sub
...
Рейтинг: 0 / 0
17.05.2013, 20:32
    #38262731
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
The_Prist,
Чисто для проверки беру открываю новую книгу, жму ALT+F11, вставляю код в ThisWorkиook, жму F5 и сразу вылетает эта ошибка. У второго кода та же ошибка
...
Рейтинг: 0 / 0
17.05.2013, 21:09
    #38262761
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Пробуйте. Закомментированные строки и части строк на самом деле не нужны.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String, lMax As Long, lCnt As Long ', lDefFileFormat As Long
'    lDefFileFormat = Application.DefaultSaveFormat
'    Application.DefaultSaveFormat = xlNormal
    sFolder = "с:\temp"
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        lCnt = Val(sFiles)
        If lMax < lCnt Then lMax = lCnt
        sFiles = Dir
    Loop
    ThisWorkbook.SaveAs sFolder & CStr(lMax + 1) & ".xls", xlWorkbookNormal, , , , , xlNoChange
'    Application.DefaultSaveFormat = lDefFileFormat
End Sub



Убедитесь, что путь, заданный в строке sFolder = "с:\temp" , существует.
...
Рейтинг: 0 / 0
18.05.2013, 15:36
    #38263279
Dmitry12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Save as
Казанский,
Ура! Ура! Ура! Спасибо вам большое!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Save as / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]