powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копировать данные из одного excel файла в другой файл?
25 сообщений из 36, страница 1 из 2
Копировать данные из одного excel файла в другой файл?
    #36331664
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, решить следующую задачу:
Есть один файл со списком счетов в одном столбце и суммами по этим счетам в соседнем столбце.
Нужно, при выборе счета нажатием на кнопку формировался файл, содержащий название счета и в этот файл попадали данные по активному счету- номер, сумма. Файлы формируются:

If Selection.Cells(1, 1) = "" Then
MsgBox "Выберите номер счета"
GoTo AEND
Else
End If

If SC <> 1 Then
MsgBox "Выберите номер счета из первого столбца"
GoTo AEND
Else
End If

InvNo = Right(Selection.Cells(1, 1), 1)

FileCopy "D:\счет.xlsx", ("D" + ":" + "\" + Right(Selection.Cells(1, 1), 1) + "." + "xlsx")

Application.Workbooks.Open("D" + ":" + "\" + Right(Selection.Cells(1, 1), 1) + "." + "xlsx").Activate

ActiveWorkbook.Worksheets("Счет").Cells(1, 2).ClearContents

Как записать данные в новый файл?????
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36331751
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Sub tt()
If Selection.Cells( 1 ,  1 ) = "" Then
MsgBox "Выберите номер счета"
GoTo AEND
Else
End If

If SC <>  1  Then
MsgBox "Выберите номер счета из первого столбца"
GoTo AEND
Else
End If

Set wb = ThisWorkbook 'UPDATED

InvNo = Right(Selection.Cells( 1 ,  1 ),  1 )

FileCopy "D:\счет.xlsx", ("D" + ":" + "\" + Right(Selection.Cells( 1 ,  1 ),  1 ) + "." + "xlsx")

Application.Workbooks.Open("D" + ":" + "\" + Right(Selection.Cells( 1 ,  1 ),  1 ) + "." + "xlsx").Activate

ActiveWorkbook.Worksheets("Счет").Cells( 1 ,  2 ).ClearContents

Set tgwb = ActiveWorkbook 'UPDATED

tgwb.Worksheets("Счет").Cells( 1 ,  2 ).Value = InvNo 'UPDATED
tgwb.Worksheets("Счет").Cells( 2 ,  1 ).Value = wb.Worksheets("Счет").Cells( 2 ,  1 ).Value 'UPDATED
' or
wb.Worksheets("Счет").Cells( 2 ,  1 ).Copy tgwb.Worksheets("Счет").Cells( 2 ,  1 ) 'UPDATED

End Sub

...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36331825
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, спасибо большое.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36331937
NadiaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, подскажите, пожалуйста, а как мне добавить данные из первого файла, которые находятся в ячейке справа от активной ячейки (от номер счета) в новый файл, например,
в tgwb.Worksheets("Счет").Cells(1, 3).Value
Заранее спасибо.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36332682
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
справа от выбранной ячейки
Код: plaintext
Selection.Offset( 0 ,  1 ).Copy tgwb.Worksheets("Счет").Cells( 1 ,  3 ).Value

если не выбирать через Select, то можно конкретно указать адрес, от которого надо считать Offset
Код: plaintext
Cells(x, y).Offset( 0 ,  1 ).Copy tgwb.Worksheets("Счет").Cells( 1 ,  3 ).Value
хотя тогда конечно можно и без Offset обойтись, просто y + 1 указать...
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36333981
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо
Код: plaintext
"D" + ":" + "\"
можно было написать покороче
Код: plaintext
"D:\"
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36335672
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, еще раз большое спасибо.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36335685
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,
спасибо, буду знать
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36335699
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, я этого не знала, поэтому сделала вот так:
сначала в новом файле (образец для копирования) использовала ВПР(vlookup) в ячейке, например, (1,3), а потом в код добавила
tgwb.Worksheets("Счет").Cells(1, 3).Value = tgwb.Worksheets("Счет").Cells(1, 3).Value
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36335736
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tgwb. Worksheets("Счет").Cells(1, 3).Value = tgwb. Worksheets("Счет").Cells(1, 3).Value ?
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36336545
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, сама не ожидала, но это работает, как при копировании в excel (специальная вставка, значения).
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36336589
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я о другом - Вы уверены, что должно быть х = х, а не х = у? Скорее всего, в коде иначе, но мало ли...
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36368358
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, задачка немного поменялась, номер счета в первом файле находится теперь во втором столбце. Пытаюсь использовать
Selection.Offset(0, 1).Copy tgwb.Worksheets("Счет").Cells(11, 6).Value
или
Cells(x, y).Offset(0, 1).Copy tgwb.Worksheets("Счет").Cells(11, 6).Value

к сожалению, не работает.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36368415
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Selection.Offset( 0 ,  1 ).Copy tgwb.Worksheets("Счет").Cells( 11 ,  6 ) 
т.е. надо указать для копирование ячейку, а не её значение, или
Код: plaintext
tgwb.Worksheets("Счет").Cells( 11 ,  6 ).Value = Selection.Offset( 0 ,  1 ).Value 
присваиваем значению ячейки другое значение. Так должно работать.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36368617
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только сейчас заметил - я же сам там выше накосячил, неправильный синтаксис дал. Вроде проверяю всегда перед постом... и все промолчали, никто не заметил...
Но в полном коде ещё выше правильно - если copy, то указываем ячейки/область (копируется с форматом ячеек), если =, то указываем значения ячеек.
Цитата из справки:
Код: plaintext
1.
2.
3.
4.
This example copies the formulas in cells A1:D4 on Sheet1 into cells E5:H8 on Sheet2.

Worksheets("Sheet1").Range("A1:D4").Copy _
    destination:=Worksheets("Sheet2").Range("E5")
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36369056
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
спасибо большое.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36377694
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, помогите, пожалуйста:

Во втором файле, если значение в ячейке 22,6 = 0 , то нужно скрывать строку 22, в противном случае отображать эту строку с данными. Записала макросы.
Все вместе выглядит вот так:


Sub hide1() ' hide1
Rows("22:22").Select
Selection.EntireRow.Hidden = True
Application.Run "Счет.XLS!hide1"
Range("A20:A21").Select
End Sub

Sub Unhide1() ' Unhide1
Rows("21:23").Select
Range("E22").Activate
Selection.EntireRow.Hidden = False
End Sub

If tgwb.Worksheets("Счет").Cells(22, 6) = 0 Then hide1 else Unhide1

Как правильно написать цикл, чтобы работало???
Сейчас высвечивается ошибка 400.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36377732
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так на скорую руку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub tt()
Set tgwb = ThisWorkbook ' только для теста
If tgwb.Worksheets( 1 ).Cells( 22 ,  6 ) =  0  Then
 Rows( 22 ).EntireRow.Hidden = True
Else
 Rows( 22 ).EntireRow.Hidden = False
End If
End Sub
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36377779
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно и через Select Case сделать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub tt()
Set tgwb = ThisWorkbook

Select Case Trim(tgwb.Worksheets( 1 ).Cells( 22 ,  6 ).Value)
    Case  0 : Rows( 22 ).EntireRow.Hidden = True
    Case Else: Rows( 22 ).EntireRow.Hidden = False
End Select

End Sub
Ещё замечу, что есть разница между 0 и " ".
Если данные заводятся вручную, то лучше использовать Trim(tgwb.Worksheets(1).Cells(22, 6).Value), чтобы отсечь возможные пробелы до или после 0.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36378556
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, попробовала if, select (с 0, "", trim). Строка не исчезает. Наверное, не туда подставляю.
Посмотрите, пожалуйста:

Sub 1 ()
Dim InvNo As String
Dim RowCounter As Double
Dim SC As Integer
Dim AEND As Label
'Fun hide1

SC = Selection.Column
If Selection.Cells(1, 1) = "" Then
MsgBox "Выберите номер счета"
GoTo AEND
Else
End If

If SC <> 1 Then
MsgBox "Выберите номер из первого столбца "
GoTo AEND
Else
End If

Set wb = ThisWorkbook

InvNo = Right(Selection.Cells(1, 1), 10)

FileCopy "D:\счет.xlsx", ("D:\" + "w_" + Right(Selection.Cells(1, 1), 10) + "счет" + "." + "xls")

Application.Workbooks.Open("D:\" + "w_" + Right(Selection.Cells(1, 1), 10) + "счет" + "." + "xls").Activate

Set tgwb = ActiveWorkbook

tgwb.Worksheets("Счет").Cells(1, 10).Value = InvNo
tgwb.Worksheets("Счет").Cells(22, 6).Value = tgwb.Worksheets("Счет").Cells(22, 6).Value ' данные попадают в ячейку по функции ВПР, а потом, как я писала, х=х значение


Select Case Trim(tgwb.Worksheets("Счет").Cells(22, 6).Value) '
Case 0: Rows(22).EntireRow.Hidden = True
Case Else: Rows(22).EntireRow.Hidden = False
End Select

'If Trim(tgwb.Worksheets("Счет").Cells(22, 6).Value) = 0 Then
'Rows(22).EntireRow.Hidden = True
'Else
'Rows(22).EntireRow.Hidden = False
'End If

tgwb.Worksheets("Счет").Cells(11, 3).Value = tgwb.Worksheets("Счет").Cells(11, 3).Value '

tgwb.Worksheets("Счет").Cells(11, 6).Value = tgwb.Worksheets("Счет").Cells(11, 6).Value '

tgwb.Worksheets("Счет").Cells(17, 7).Value = tgwb.Worksheets("Счет").Cells(17, 7).Value '

tgwb.Worksheets("Счет").Cells(20, 6).Value = tgwb.Worksheets("Счет").Cells(20, 6).Value '

tgwb.Worksheets("Счет").Cells(23, 6).Value = tgwb.Worksheets("Счет").Cells(23, 6).Value '

tgwb.Worksheets("Счет").Cells(25, 6).Value = tgwb.Worksheets("Счет").Cells(25, 6).Value '

tgwb.Worksheets("Счет").Cells(23, 1).Value = tgwb.Worksheets("Счет").Cells(23, 1).Value '

tgwb.Worksheets("Счет").Cells(25, 1).Value = tgwb.Worksheets("Счет").Cells(25, 1).Value '

tgwb.Worksheets("Счет").Cells(26, 1).Value = tgwb.Worksheets("Счет").Cells(26, 1).Value '

MsgBox "Счет создан"

AEND:
End Sub
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36378975
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Sub test()
Dim InvNo As String
Dim RowCounter As Double
Dim SC As Integer
Dim AEND As Label
'Fun hide1

SC = Selection.Column
If Selection.Cells( 1 ,  1 ) = "" Then
MsgBox "Выберите номер счета"
GoTo AEND
Else
End If

If SC <>  1  Then
MsgBox "Выберите номер из первого столбца "
GoTo AEND
Else
End If

'Set wb = ThisWorkbook 'ЛИШНЕЕ

InvNo = Right(Selection.Cells( 1 ,  1 ),  10 )

FileCopy "D:\счет.xlsx", ("D:\" + "w_" + Right(Selection.Cells( 1 ,  1 ),  10 ) + "счет" + "." + "xls")

Application.Workbooks.Open("D:\" + "w_" + Right(Selection.Cells( 1 ,  1 ),  10 ) + "счет" + "." + "xls").Activate

Set tgwb = ActiveWorkbook

tgwb.Worksheets("Счет").Cells( 1 ,  10 ).Value = InvNo
tgwb.Worksheets("Счет").Cells( 22 ,  6 ).Value = tgwb.Worksheets("Счет").Cells( 22 ,  6 ).Value ' данные попадают в ячейку по функции ВПР, а потом, как я писала, х=х значение


Select Case Trim(tgwb.Worksheets("Счет").Cells( 22 ,  6 ).Value) '
Case  0 : tgwb.Worksheets("Счет").Rows( 22 ).EntireRow.Hidden = True
Case Else: tgwb.Worksheets("Счет").Rows( 22 ).EntireRow.Hidden = False
End Select

'If Trim(tgwb.Worksheets("Счет").Cells(22, 6).Value) = 0 Then
'Rows(22).EntireRow.Hidden = True
'Else
'Rows(22).EntireRow.Hidden = False
'End If

tgwb.Worksheets("Счет").Cells( 11 ,  3 ).Value = tgwb.Worksheets("Счет").Cells( 11 ,  3 ).Value '

tgwb.Worksheets("Счет").Cells( 11 ,  6 ).Value = tgwb.Worksheets("Счет").Cells( 11 ,  6 ).Value '

tgwb.Worksheets("Счет").Cells( 17 ,  7 ).Value = tgwb.Worksheets("Счет").Cells( 17 ,  7 ).Value '

tgwb.Worksheets("Счет").Cells( 20 ,  6 ).Value = tgwb.Worksheets("Счет").Cells( 20 ,  6 ).Value '

tgwb.Worksheets("Счет").Cells( 23 ,  6 ).Value = tgwb.Worksheets("Счет").Cells( 23 ,  6 ).Value '

tgwb.Worksheets("Счет").Cells( 25 ,  6 ).Value = tgwb.Worksheets("Счет").Cells( 25 ,  6 ).Value '

tgwb.Worksheets("Счет").Cells( 23 ,  1 ).Value = tgwb.Worksheets("Счет").Cells( 23 ,  1 ).Value '

tgwb.Worksheets("Счет").Cells( 25 ,  1 ).Value = tgwb.Worksheets("Счет").Cells( 25 ,  1 ).Value '

tgwb.Worksheets("Счет").Cells( 26 ,  1 ).Value = tgwb.Worksheets("Счет").Cells( 26 ,  1 ).Value '

MsgBox "Счет создан"

AEND:
End Sub
Добавил указание на лист, где надо скрывать строки. У Вас наверное активный лист другой, на нём строки и скрывались, проверьте.
Ну и 'Set wb = ThisWorkbook 'ЛИШНЕЕ
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36379776
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое.

'Set wb = ThisWorkbook - помогло.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36379878
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. это мешало?
И вот зту часть я бы сделал иначе - сперва заставляем выбрать первую колонку, затем проверяем, что выбрано непустое поле.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub tt()

If Selection.Column <>  1  Then
MsgBox "Выберите номер из первого столбца "
GoTo AEND
End If

If Cells(Selection.Row,  1 ) = "" Then
MsgBox "Выберите номер счета"
GoTo AEND
End If

AEND:

End Sub
или вообще объединить и подсократить:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub ttt()

If Cells(Selection.Row,  1 ) = "" Or Selection.Column <>  1  Then MsgBox "Выберите номер счета из первого столбца ": GoTo AEND

AEND:

End Sub
и без лишних Else...
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36380046
NadyaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, спасибо, сейчас попробую.

Есть еще вопрос:
Есть пользовательская функция Numtranslate (перевод цифр в слова). Есть много старых файлов, в которых эта функция работает и соответственно видна в списке функций Excel.
Сейчас эта функция работает в новом файле только в том случае, если держать открытым старый файл (с работающей функцией) и менять связь.

На всякий случай: раньше был Excel 2003, сейчас 2007.

Подскажите, пожалуйста, что можно сделать.
...
Рейтинг: 0 / 0
Копировать данные из одного excel файла в другой файл?
    #36380076
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NadyaP,

Проще просто эту функцию скопировать в нужный файл.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копировать данные из одного excel файла в другой файл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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