Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Форма данных, сохранение в другом файле - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Форма данных, сохранение в другом файле (Макросы/Sub)
Форма данных, сохранение в другом файле
ASWP Дата: Пятница, 01.06.2018, 21:42 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. Как сохранять данные из ячеек в другом файле, чтобы они из формы записывались в строку таблицы, форма данных примерная, будет больше ячеек, просто хочу понять алгоритм, чтобы потом самому исправлять макрос
К сообщению приложен файл: forma.xlsm(16.0 Kb) · basa2.xlsx(9.1 Kb)


я знаю что ничего не знаю, но другие не знают и этого

Сообщение отредактировал ASWP - Пятница, 01.06.2018, 22:16
 
Ответить
СообщениеДобрый день. Как сохранять данные из ячеек в другом файле, чтобы они из формы записывались в строку таблицы, форма данных примерная, будет больше ячеек, просто хочу понять алгоритм, чтобы потом самому исправлять макрос

Автор - ASWP
Дата добавления - 01.06.2018 в 21:42
_Boroda_ Дата: Пятница, 01.06.2018, 22:05 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А куда вставлять нужно? Всегда в В3:С4 или нет?
И зачем у Вас в файле База умная таблица с запасом сделана? Так не должно быть. Она на то и умная, что сама расширяться будет по мере добавления данных. Кстати, Вы бы выложили файл База в нормальном виде, а то не совсем ясно к чему цепляться при определении последней заполненной строки


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА куда вставлять нужно? Всегда в В3:С4 или нет?
И зачем у Вас в файле База умная таблица с запасом сделана? Так не должно быть. Она на то и умная, что сама расширяться будет по мере добавления данных. Кстати, Вы бы выложили файл База в нормальном виде, а то не совсем ясно к чему цепляться при определении последней заполненной строки

Автор - _Boroda_
Дата добавления - 01.06.2018 в 22:05
ASWP Дата: Пятница, 01.06.2018, 22:14 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, Их надо вставить в строку, от A3 до E3, порядок пока не имеет значения. А уже при вводе других данных, чтобы они вставлялись уже в следующую строку.


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
Сообщение_Boroda_, Их надо вставить в строку, от A3 до E3, порядок пока не имеет значения. А уже при вводе других данных, чтобы они вставлялись уже в следующую строку.

Автор - ASWP
Дата добавления - 01.06.2018 в 22:14
ASWP Дата: Пятница, 01.06.2018, 22:18 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
И зачем у Вас в файле База умная таблица с запасом сделана?

Это я просто сам пытался, что то сделать. Заменил файл.


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
Сообщение
И зачем у Вас в файле База умная таблица с запасом сделана?

Это я просто сам пытался, что то сделать. Заменил файл.

Автор - ASWP
Дата добавления - 01.06.2018 в 22:18
_Boroda_ Дата: Пятница, 01.06.2018, 22:59 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub kopir()
    Dim d_ As Range 'd_ - диапазон ячеек
    Set d_ = Range("I12,I16,L16,I20,L20") 'каких ячеек
    n_ = d_.Count 'сколько их штук
    ReDim ar(1 To 1, 1 To n_) 'ar - массив в одну строку и n_ столбцов
    For i = 1 To n_ 'заполняем массив, цикл от 1 до n_
        ar(1, i) = d_.Areas(i).Cells(1).Value 'i-й элемент массива по горизонтали равен
        'первой ячейке каждого из поддиапазонов диапазона d_
    Next i 'коней цикла
    Workbooks.Open Filename:=ThisWorkbook.Path & "\basa2.xlsx" 'открываем файл База, лежащий в той же папке, что и этот файл
    With ActiveSheet 'работаем с активным листом
        r1_ = .Cells(.Rows.Count, 1).End(3).Row 'от последней ячейки в столбце А прыгаем наверх
        '(как будто на листе из ячейки A1048576 нажали Контрл+СтрелкаВверх), попадаем в последнюю ячейку умной таблицы
        If .Cells(r1_, 1) <> "" Then r1_ = r1_ + 1 'если она заполнена, то будем работать с ячейкой ниже на 1 строку
        .Range("A" & r1_).Resize(1, n_) = ar 'вставляем наш массив в ячейки от "A" & r1_ и на n_ ячеек вправо
    End With 'конец работы с активным листом
    Application.DisplayAlerts = 0 'отключаем Excelю возможность писать сообщения
    ActiveWorkbook.Save 'сохраняем книгу
    Application.DisplayAlerts = 1 'включаем Excelю возможность писать сообщения
    ActiveWorkbook.Close 'закрываем книгу
End Sub
[/vba]
К сообщению приложен файл: forma_1.xlsm(19.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub kopir()
    Dim d_ As Range 'd_ - диапазон ячеек
    Set d_ = Range("I12,I16,L16,I20,L20") 'каких ячеек
    n_ = d_.Count 'сколько их штук
    ReDim ar(1 To 1, 1 To n_) 'ar - массив в одну строку и n_ столбцов
    For i = 1 To n_ 'заполняем массив, цикл от 1 до n_
        ar(1, i) = d_.Areas(i).Cells(1).Value 'i-й элемент массива по горизонтали равен
        'первой ячейке каждого из поддиапазонов диапазона d_
    Next i 'коней цикла
    Workbooks.Open Filename:=ThisWorkbook.Path & "\basa2.xlsx" 'открываем файл База, лежащий в той же папке, что и этот файл
    With ActiveSheet 'работаем с активным листом
        r1_ = .Cells(.Rows.Count, 1).End(3).Row 'от последней ячейки в столбце А прыгаем наверх
        '(как будто на листе из ячейки A1048576 нажали Контрл+СтрелкаВверх), попадаем в последнюю ячейку умной таблицы
        If .Cells(r1_, 1) <> "" Then r1_ = r1_ + 1 'если она заполнена, то будем работать с ячейкой ниже на 1 строку
        .Range("A" & r1_).Resize(1, n_) = ar 'вставляем наш массив в ячейки от "A" & r1_ и на n_ ячеек вправо
    End With 'конец работы с активным листом
    Application.DisplayAlerts = 0 'отключаем Excelю возможность писать сообщения
    ActiveWorkbook.Save 'сохраняем книгу
    Application.DisplayAlerts = 1 'включаем Excelю возможность писать сообщения
    ActiveWorkbook.Close 'закрываем книгу
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 01.06.2018 в 22:59
ASWP Дата: Пятница, 01.06.2018, 23:50 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, Да, спасибо, все работает. Некоторые моменты, по коду, даже с комментариями не понятны, не мое это, программирование :D , но в принципе разобрался.
Еще вот такой вопрос, а как этот макрос ведет себя в сети, смогут ли с ним работать одновременно несколько человек?


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
Сообщение_Boroda_, Да, спасибо, все работает. Некоторые моменты, по коду, даже с комментариями не понятны, не мое это, программирование :D , но в принципе разобрался.
Еще вот такой вопрос, а как этот макрос ведет себя в сети, смогут ли с ним работать одновременно несколько человек?

Автор - ASWP
Дата добавления - 01.06.2018 в 23:50
_Boroda_ Дата: Пятница, 01.06.2018, 23:56 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Совсем-совсем одновременно нет - файл База может быть открыт для сохранения только у кого-то одного. Но если как кролики по-быстрому открыл-вставил-закрыл, то можно. Можно еще сделать проверку на то, открыт ли файл. Поищите, тут на форуме были такие темы


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСовсем-совсем одновременно нет - файл База может быть открыт для сохранения только у кого-то одного. Но если как кролики по-быстрому открыл-вставил-закрыл, то можно. Можно еще сделать проверку на то, открыт ли файл. Поищите, тут на форуме были такие темы

Автор - _Boroda_
Дата добавления - 01.06.2018 в 23:56
ASWP Дата: Суббота, 02.06.2018, 09:17 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Поищите, тут на форуме были такие темы

Вариантов много, но вот как их "прикрутить" к макросу не понятно.
Вот нашел такой вариант, он вообще подходит?

[vba]
Код
Function FileIsOpenTest(TargetWorkbook As String) As Boolean
        Dim TestBook As Workbook               
        On Error Resume Next                    
        Set TestBook = Workbooks(TargetWorkbook)
           If Err.Number = 0 Then               
              FileIsOpenTest = True
           Else
              FileIsOpenTest = False
           End If
        End Function
[/vba]


я знаю что ничего не знаю, но другие не знают и этого

Сообщение отредактировал ASWP - Суббота, 02.06.2018, 09:26
 
Ответить
Сообщение
Поищите, тут на форуме были такие темы

Вариантов много, но вот как их "прикрутить" к макросу не понятно.
Вот нашел такой вариант, он вообще подходит?

[vba]
Код
Function FileIsOpenTest(TargetWorkbook As String) As Boolean
        Dim TestBook As Workbook               
        On Error Resume Next                    
        Set TestBook = Workbooks(TargetWorkbook)
           If Err.Number = 0 Then               
              FileIsOpenTest = True
           Else
              FileIsOpenTest = False
           End If
        End Function
[/vba]

Автор - ASWP
Дата добавления - 02.06.2018 в 09:17
StoTisteg Дата: Воскресенье, 03.06.2018, 00:05 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Во-первых, в этом коде не хватает важной строки:
[vba]
Код
Function FileIsOpenTest(TargetWorkbook As String) As Boolean
        Dim TestBook As Workbook  
        Err.Clear             
        On Error Resume Next                    
        Set TestBook = Workbooks(TargetWorkbook)
        If Err.Number = 0 Then               
            FileIsOpenTest = True
        Else
            FileIsOpenTest = False
        End If
        End Function
[/vba]
Теперь засовываете этот код хоть в тот же модуль, хоть в новый и в начале макроса _Boroda_ прописываете
[vba]
Код
If FileIsOpenTest("Здесь_Имя_Вашего_Файла.xlsm") Then
    MsgBox "Файл уже открыт!"
    Exit Sub
End If
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеВо-первых, в этом коде не хватает важной строки:
[vba]
Код
Function FileIsOpenTest(TargetWorkbook As String) As Boolean
        Dim TestBook As Workbook  
        Err.Clear             
        On Error Resume Next                    
        Set TestBook = Workbooks(TargetWorkbook)
        If Err.Number = 0 Then               
            FileIsOpenTest = True
        Else
            FileIsOpenTest = False
        End If
        End Function
[/vba]
Теперь засовываете этот код хоть в тот же модуль, хоть в новый и в начале макроса _Boroda_ прописываете
[vba]
Код
If FileIsOpenTest("Здесь_Имя_Вашего_Файла.xlsm") Then
    MsgBox "Файл уже открыт!"
    Exit Sub
End If
[/vba]

Автор - StoTisteg
Дата добавления - 03.06.2018 в 00:05
ASWP Дата: Воскресенье, 03.06.2018, 10:16 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
StoTisteg, Спасибо все работает.
Все таки я был близок в поиске "истины" :D


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
СообщениеStoTisteg, Спасибо все работает.
Все таки я был близок в поиске "истины" :D

Автор - ASWP
Дата добавления - 03.06.2018 в 10:16
ASWP Дата: Воскресенье, 03.06.2018, 16:00 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
StoTisteg, Макрос _Boroda_ работает с файлом на другом диске, а второй макрос нет, это можно как то можно исправить?


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
СообщениеStoTisteg, Макрос _Boroda_ работает с файлом на другом диске, а второй макрос нет, это можно как то можно исправить?

Автор - ASWP
Дата добавления - 03.06.2018 в 16:00
StoTisteg Дата: Воскресенье, 03.06.2018, 16:12 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
ASWP, как именно не работает?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеASWP, как именно не работает?

Автор - StoTisteg
Дата добавления - 03.06.2018 в 16:12
ASWP Дата: Воскресенье, 03.06.2018, 17:26 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
StoTisteg, Все я разобрался, алгоритм работы другой у второго макроса, а я в нем прямую ссылку указывал.


я знаю что ничего не знаю, но другие не знают и этого
 
Ответить
СообщениеStoTisteg, Все я разобрался, алгоритм работы другой у второго макроса, а я в нем прямую ссылку указывал.

Автор - ASWP
Дата добавления - 03.06.2018 в 17:26
_Boroda_ Дата: Воскресенье, 03.06.2018, 20:33 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
в этом коде не хватает важной строки:

Это какой? Сброса ошибки? А зачем там нужен сброс ошибки?

Я бы написал примерно так:
[vba]
Код
Sub kopir()
    Dim d_ As Range 'd_ - диапазон ячеек
    fn0_ = "basa2.xlsx" 'название файла
    On Error Resume Next 'пропуск возможной ошибки
    Set Otkr = Workbooks(fn0_) 'попытка обратиться к файлу fn0_
    If Otkr <> Empty Then 'если обращение к файлу прошло успешно
        ff = MsgBox("Файл ''" & fn0_ & "'' открыт. Зайдите попозже.") 'пишем сообщение
        Exit Sub 'выходим из макроса
    End If 'конец ЕСЛИ
    On Error GoTo 0 'приведение сообщений об ошибках к обычному состоянию
    Set d_ = Range("I12:L12,I16,L16,I20,L20") ' каких ячеек !!!ИЗМЕНЕНО
    n_ = d_.Areas.Count 'сколько там диапазонов !!!ИЗМЕНЕНО
    ReDim ar(1 To 1, 1 To n_) 'ar - массив в одну строку и n_ столбцов
    For i = 1 To n_ 'заполняем массив, цикл от 1 до n_
        ar(1, i) = d_.Areas(i).Cells(1).Value 'i-й элемент массива по горизонтали равен
        'первой ячейке каждого из поддиапазонов диапазона d_
    Next i 'коней цикла
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fn0_  'открываем файл База, лежащий в той же папке, что и этот файл
    With ActiveSheet 'работаем с активным листом
        r1_ = .Cells(.Rows.Count, 1).End(3).Row 'от последней ячейки в столбце А прыгаем наверх
        '(как будто на листе из ячейки A1048576 нажали Контрл+СтрелкаВверх), попадаем в последнюю ячейку умной таблицы
        If .Cells(r1_, 1) <> "" Then r1_ = r1_ + 1 'если она заполнена, то будем работать с ячейкой ниже на 1 строку
        .Range("A" & r1_).Resize(1, n_) = ar 'вставляем наш массив в ячейки от "A" & r1_ и на n_ ячеек вправо
    End With 'конец работы с активным листом
    Application.DisplayAlerts = 0 'отключаем Excelю возможность писать сообщения
    ActiveWorkbook.Save 'сохраняем книгу
    Application.DisplayAlerts = 1 'включаем Excelю возможность писать сообщения
    ActiveWorkbook.Close 'закрываем книгу
    d_.ClearContents 'очищаем диапазоны
    MsgBox "Запись данных произведена" 'сообщаем, что все хорошо
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]

*Чуть поправил и файл перевложил
К сообщению приложен файл: 9597832.xlsm(20.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
в этом коде не хватает важной строки:

Это какой? Сброса ошибки? А зачем там нужен сброс ошибки?

Я бы написал примерно так:
[vba]
Код
Sub kopir()
    Dim d_ As Range 'd_ - диапазон ячеек
    fn0_ = "basa2.xlsx" 'название файла
    On Error Resume Next 'пропуск возможной ошибки
    Set Otkr = Workbooks(fn0_) 'попытка обратиться к файлу fn0_
    If Otkr <> Empty Then 'если обращение к файлу прошло успешно
        ff = MsgBox("Файл ''" & fn0_ & "'' открыт. Зайдите попозже.") 'пишем сообщение
        Exit Sub 'выходим из макроса
    End If 'конец ЕСЛИ
    On Error GoTo 0 'приведение сообщений об ошибках к обычному состоянию
    Set d_ = Range("I12:L12,I16,L16,I20,L20") ' каких ячеек !!!ИЗМЕНЕНО
    n_ = d_.Areas.Count 'сколько там диапазонов !!!ИЗМЕНЕНО
    ReDim ar(1 To 1, 1 To n_) 'ar - массив в одну строку и n_ столбцов
    For i = 1 To n_ 'заполняем массив, цикл от 1 до n_
        ar(1, i) = d_.Areas(i).Cells(1).Value 'i-й элемент массива по горизонтали равен
        'первой ячейке каждого из поддиапазонов диапазона d_
    Next i 'коней цикла
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fn0_  'открываем файл База, лежащий в той же папке, что и этот файл
    With ActiveSheet 'работаем с активным листом
        r1_ = .Cells(.Rows.Count, 1).End(3).Row 'от последней ячейки в столбце А прыгаем наверх
        '(как будто на листе из ячейки A1048576 нажали Контрл+СтрелкаВверх), попадаем в последнюю ячейку умной таблицы
        If .Cells(r1_, 1) <> "" Then r1_ = r1_ + 1 'если она заполнена, то будем работать с ячейкой ниже на 1 строку
        .Range("A" & r1_).Resize(1, n_) = ar 'вставляем наш массив в ячейки от "A" & r1_ и на n_ ячеек вправо
    End With 'конец работы с активным листом
    Application.DisplayAlerts = 0 'отключаем Excelю возможность писать сообщения
    ActiveWorkbook.Save 'сохраняем книгу
    Application.DisplayAlerts = 1 'включаем Excelю возможность писать сообщения
    ActiveWorkbook.Close 'закрываем книгу
    d_.ClearContents 'очищаем диапазоны
    MsgBox "Запись данных произведена" 'сообщаем, что все хорошо
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]

*Чуть поправил и файл перевложил

Автор - _Boroda_
Дата добавления - 03.06.2018 в 20:33
ASWP Дата: Воскресенье, 03.06.2018, 22:21 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, Спасибо за еще один вариант. Только в примере база должна лежать рядом с файлом, немного переделал, открывает и на другом диске. А очистка диапазонов у меня тоже была, но я ее сделал по своему, как смог, а только сейчас понял, что у нас же диапазон был присвоен :D
[vba]
Код
Range("I12,I16,N16,L16,I18,L18,I20,L20").Select
        Selection.ClearContents
[/vba]


я знаю что ничего не знаю, но другие не знают и этого

Сообщение отредактировал ASWP - Воскресенье, 03.06.2018, 22:22
 
Ответить
Сообщение_Boroda_, Спасибо за еще один вариант. Только в примере база должна лежать рядом с файлом, немного переделал, открывает и на другом диске. А очистка диапазонов у меня тоже была, но я ее сделал по своему, как смог, а только сейчас понял, что у нас же диапазон был присвоен :D
[vba]
Код
Range("I12,I16,N16,L16,I18,L18,I20,L20").Select
        Selection.ClearContents
[/vba]

Автор - ASWP
Дата добавления - 03.06.2018 в 22:21
StoTisteg Дата: Понедельник, 04.06.2018, 10:30 | Сообщение № 16
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
А зачем там нужен сброс ошибки?
Хм. Затем, что мы собираемся её анализировать и в общем случае не знаем, сколько OERN без сброса было до того?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
А зачем там нужен сброс ошибки?
Хм. Затем, что мы собираемся её анализировать и в общем случае не знаем, сколько OERN без сброса было до того?

Автор - StoTisteg
Дата добавления - 04.06.2018 в 10:30
StoTisteg Дата: Понедельник, 04.06.2018, 10:31 | Сообщение № 17
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
ASWP, а Селект зачем?[vba]
Код
Range("I12,I16,N16,L16,I18,L18,I20,L20").ClearContents
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеASWP, а Селект зачем?[vba]
Код
Range("I12,I16,N16,L16,I18,L18,I20,L20").ClearContents
[/vba]

Автор - StoTisteg
Дата добавления - 04.06.2018 в 10:31
ASWP Дата: Понедельник, 04.06.2018, 18:44 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Я бы написал примерно так:

А можно сделать, чтобы функция проверки работала с файлом в локальной сети?
Я нашел макрос,он работает, но не совсем корректно с вашей второй функцией, у меня проблема с циклом, я не могу его правильно начать и закончить.
[vba]
Код
Function FileIsBusy(File$) As Boolean   ' не открывая файла проверяет, открыт ли он вообще кем-либо
    Dim FN%: FN = FreeFile
    On Error Resume Next
    Open File For Random Access Write Lock Write As #FN
    Close #FN
    FileIsBusy = (Err <> 0)
End Function
[/vba]
[vba]
Код
Sub Test()
    MsgBox FileIsBusy([b9])
End Sub
[/vba]
а Селект зачем?


Я не программист, все работает- значит все нормально :D


я знаю что ничего не знаю, но другие не знают и этого

Сообщение отредактировал ASWP - Понедельник, 04.06.2018, 18:49
 
Ответить
Сообщение
Я бы написал примерно так:

А можно сделать, чтобы функция проверки работала с файлом в локальной сети?
Я нашел макрос,он работает, но не совсем корректно с вашей второй функцией, у меня проблема с циклом, я не могу его правильно начать и закончить.
[vba]
Код
Function FileIsBusy(File$) As Boolean   ' не открывая файла проверяет, открыт ли он вообще кем-либо
    Dim FN%: FN = FreeFile
    On Error Resume Next
    Open File For Random Access Write Lock Write As #FN
    Close #FN
    FileIsBusy = (Err <> 0)
End Function
[/vba]
[vba]
Код
Sub Test()
    MsgBox FileIsBusy([b9])
End Sub
[/vba]
а Селект зачем?


Я не программист, все работает- значит все нормально :D

Автор - ASWP
Дата добавления - 04.06.2018 в 18:44
_Boroda_ Дата: Вторник, 05.06.2018, 11:48 | Сообщение № 19
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тогда так

у меня проблема с циклом

Про какой цикл Вы пишете?
К сообщению приложен файл: 9597832_1.xlsm(17.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда так

у меня проблема с циклом

Про какой цикл Вы пишете?

Автор - _Boroda_
Дата добавления - 05.06.2018 в 11:48
ASWP Дата: Вторник, 05.06.2018, 19:53 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Про какой цикл Вы пишете?

В макросе получается две функции, и я не могу правильно задать условие их выполнения.
Тогда так

Вот такая ошибка появляется

Я убрал две строчки, и добавил полный путь,там где нужно, и все работает.
[vba]
Код
fn0_ = "basa2.xlsx" 'название файла
    fn_ = ThisWorkbook.Path & "\" & fn0_ 'полный путь к файлу
[/vba]


я знаю что ничего не знаю, но другие не знают и этого

Сообщение отредактировал ASWP - Вторник, 05.06.2018, 19:54
 
Ответить
Сообщение
Про какой цикл Вы пишете?

В макросе получается две функции, и я не могу правильно задать условие их выполнения.
Тогда так

Вот такая ошибка появляется

Я убрал две строчки, и добавил полный путь,там где нужно, и все работает.
[vba]
Код
fn0_ = "basa2.xlsx" 'название файла
    fn_ = ThisWorkbook.Path & "\" & fn0_ 'полный путь к файлу
[/vba]

Автор - ASWP
Дата добавления - 05.06.2018 в 19:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Форма данных, сохранение в другом файле (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!