powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование данных
21 сообщений из 21, страница 1 из 1
Копирование данных
    #37323731
Приветствую, уважаемые!

Excel 2003

На данный момент, у меня копирование данных происходит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub CopyArhiv()
SetRow = ActiveCell.Row
    Лист2.Range("F2") = SetRow
With ActiveCell.EntireRow
    .Copy (Sheets("arhiv").Cells(Sheets("arhiv").Rows.Count, "A").End(xlUp).Offset( 1 ))
End With
End Sub

Но начальник требует, чтобы данные хранились в отдельной книге .xls.
Так вот у меня возникают вопросы:
1. Как сделать копирование данных (строки с активной ячейкой), в другую книгу?
2. Должна ли эта книга быть открыта или необязательно, данные сами попадут
на нужный лист, в конец списка, этой другой книги и сохранятся?
3. Или какие есть аргументы, чтобы скопированные данные, не хранить в другой книге?

Извиняюсь, что много вопросов.
Спасибо.
...
Рейтинг: 0 / 0
Копирование данных
    #37323802
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. thisworkbook.worksheet.cells(1,1) = workbook("111").worksheet.cells(1,1)
2. да, должна быть (указанным в п.1 методом), если не использовать ADO. workbook.open workbook.close true
3. вопрос в том, на.. это надо?
...
Рейтинг: 0 / 0
Копирование данных
    #37324462
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет второго
Книга может быть закрытой и при воспроизведения макроса в "базу" (в закрытую книгу) данные можно впихнуть
...
Рейтинг: 0 / 0
Копирование данных
    #37324463
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри код

Base -закрытая книга
Wor_book - рабочая книга
Worksheets(1).Range("A1:F10").Value - лист 1, диапазон от A1 до F10

авторSub Save_Base ()
iFileName$ = "C:\Base.xls"

If Dir(iFileName$) <> "" Then
With Application
.ScreenUpdating = False
With .Workbooks.Open(Filename:=iFileName$)
.Worksheets(1).Range("A1:F10").Value = Workbooks("[color=redWork_book.xls").Worksheets(1).Range("A1:F10").Value

.Close saveChanges:=True
End With
.ScreenUpdating = True
End With
Else
MsgBox "Спасибо что вы воспользовались услугами Аэрофлота", , _
"Русские авиалинии !!!"
End If

End Sub

:)
...
Рейтинг: 0 / 0
Копирование данных
    #37324464
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub Save_Base ()
iFileName$ = "C:\Base.xls"

If Dir(iFileName$) <> "" Then
With Application
.ScreenUpdating = False
With .Workbooks.Open(Filename:=iFileName$)
.Worksheets( 1 ).Range("A1:F10").Value = Workbooks("Work_book.xls").Worksheets( 1 ).Range("A1:F10").Value

.Close saveChanges:=True
End With
.ScreenUpdating = True
End With
Else
MsgBox "Спасибо что вы воспользовались услугами Аэрофлота", , _
"Русские авиалинии !!!"
End If

End Sub 
...
Рейтинг: 0 / 0
Копирование данных
    #37324466
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о зараннее создай на C:\ книгу с именем Base.xls
...
Рейтинг: 0 / 0
Копирование данных
    #37324470
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше на диск D. На С под Виндовс 7 не сработал
...
Рейтинг: 0 / 0
Копирование данных
    #37324640
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше использовать GetObject. Меньше вопросов, если книга уже открыта.
...
Рейтинг: 0 / 0
Копирование данных
    #37324721
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей, а как определить, открыта книга уже или нет перед использованием GetObject? Перебором и проверкой всех книг, или есть путь проще?
...
Рейтинг: 0 / 0
Копирование данных
    #37324772
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

Код: plaintext
1.
2.
3.
on error resume next
set x=workbooks("MyBook.xls")
on error goto  0 
if x is nothing then ...
...
Рейтинг: 0 / 0
Копирование данных
    #37324775
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен в нужности GetObject:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim x as workbook
dim strfull$
dim strshort$
strfull$="C:\Base.xls"
strshort$=dir(strfull$)
if strshort$="" then exit sub
on error resume next
set x=workbooks(strshort$)
on error goto  0 
if x is nothing then set x=workbooks.open(strfull$)
...
Рейтинг: 0 / 0
Копирование данных
    #37324778
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL),
а если "MyBook.xls" не та "MyBook.xls"?
Хотя в таком случае ту тоже открыть не удастся...
...
Рейтинг: 0 / 0
Копирование данных
    #37324783
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом случае тоже при открытом файле D:\Base.xls код этого не поймёт...

Тогда может так, хоть известить? Закрыть нельзя...
If x Is Nothing Then
Set x = Workbooks.Open(strfull$)
Else
If x.FullName <> strfull$ Then MsgBox "Close duplicate!!!"
End If
...
Рейтинг: 0 / 0
Копирование данных
    #37324933
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Сергей, а как определить, открыта книга уже или нет перед использованием GetObject? Перебором и проверкой всех книг, или есть путь проще?
Function WorkbooklsOpen(wbname) As Boolean
'Возвращает ИСТИНА, если рабочая книга открыта
Dim x As Workbook
On Error Resume Next
Set x = Workbooks(wbname)
WorkbooklsOpen = (Err = 0)
End Function
...
Рейтинг: 0 / 0
Копирование данных
    #37324952
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp,
Это я знаю... Но так
1 не быстро
2 опять тоже самое - это может быть не та книга...
...
Рейтинг: 0 / 0
Копирование данных
    #37324954
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя я не прав - довольно быстро...
...
Рейтинг: 0 / 0
Копирование данных
    #37324991
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Сергей, а как определить, открыта книга уже или нет перед использованием GetObject? Перебором и проверкой всех книг, или есть путь проще?Вообще, зачем определять открыта ли она?
Getobject получит ее в любом случае. Другое дело опрекделить есть ли такая книга по заданному пути:
Function FileExists(FName) As Boolean
' Возвращает ИСТИНА, если файл существует
FileExists = (Dir(FName) <> "")
End Function
И никаких других проверок не надо, Экс сам ругнется если книга с таким именем уже открыта.
...
Рейтинг: 0 / 0
Копирование данных
    #37325201
Ser Arturупс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub Save_Base ()
iFileName$ = "D:\Base.xls"

If Dir(iFileName$) <> "" Then
With Application
.ScreenUpdating = False
With .Workbooks.Open(Filename:=iFileName$)
.Worksheets( 1 ).Range("A1:F10").Value = Workbooks("Work_book.xls").Worksheets( 1 ).Range("A1:F10").Value

.Close saveChanges:=True
End With
.ScreenUpdating = True
End With
Else
MsgBox "Спасибо что вы воспользовались услугами Аэрофлота", , _
"Русские авиалинии !!!"
End If

End Sub 

ругается здесь.
да и еще, мне надо, чтобы копирповалась именно та строка в которой активная ячейка.
Спасибо
...
Рейтинг: 0 / 0
Копирование данных
    #37325215
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеПрофессионал,

Какими словами ругается? Матерными? :)
Скорее всего у вас в шапке модуля стоит Option Explicit, а значит переменную нужно эксплицитно декларировать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub Save_Base ()
Dim iFileName$
iFileName$ = "D:\Base.xls"

If Dir(iFileName$) <> "" Then
With Application
.ScreenUpdating = False
With .Workbooks.Open(Filename:=iFileName$)
.Worksheets( 1 ).Range("A1:F10").Value = Workbooks("Work_book.xls").Worksheets( 1 ).Range("A1:F10").Value

.Close saveChanges:=True
End With
.ScreenUpdating = True
End With
Else
MsgBox "Спасибо что вы воспользовались услугами Аэрофлота", , _
"Русские авиалинии !!!"
End If
End Sub
...
Рейтинг: 0 / 0
Копирование данных
    #37325218
KL (XL), неа, не стоит :)
А как сделать чтобы добавилась (скопировалась) вся строка с активной ячейкой.
...
Рейтинг: 0 / 0
Копирование данных
    #37325219
KL (XL)НеПрофессионал,

Какими словами ругается? Матерными? :)
[/src]
а ругается именно так как я показал и ни чего более (открывается модуль и сё)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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