2013-06-08 4 views
-1

Я довольно новичок в vba. Мне удалось заставить некоторые коды работать, копируя с этого сайта и редактируя их в мою цель, но это слишком сложно взломать (попытались решить это на пару дней).Скопируйте и вставьте из одной ячейки в другую книгу и ячейку

Я хочу скопировать данные из одного файла и вставить его в другой файл (мастер-файл). Однако он не может перезаписать существующие данные, поэтому он должен выбрать первую пустую ячейку в определенном столбце. Пожалуйста помогите!! Если возможно, вы могли бы добавить как можно больше комментариев, чтобы я мог понять и научиться делать это для себя в будущем.

Файлы данных являются журналами вызовов, и эти цифры, которые копируются, являются результатами анализа, который я выполняю в vba. Таким образом, каждый день будет новый файл данных, но фактические данные, которые я копирую, всегда находятся в одних и тех же ячейках. С другой стороны, главный файл всегда один и тот же, но диапазон, в который я вставляю данные, изменяется.

файл

Пример данных: ("S1" в файле данных Excel) ("S2" в файле данных Exel) 8.6.2013 ("S13" в файле данных Excel) Все они созданы с помощью кода vba, который включает формулы, поэтому они всегда будут в одной и той же ячейке. Есть и другие ячейки данных, но я надеюсь учиться на этом, чтобы я мог включить их сам.

Главный файл, с другой стороны, всегда одинаковый. Единственное, что меняется в главном файле, это ячейка, в которую я вставляю данные. Ячейка практически всегда находится рядом с предыдущей вставкой.

Главный файл: Сотовый S1 из файла данных должен быть скопирован в главный файл «N3», затем в следующий раз «N4», а затем на «N5» и т. Д. ... поэтому он должен найти первый бесплатный ячейка в столбце N.

Сотовый S2 из файла данных должен быть скопирован в главный файл «H3» и оттуда вниз таким же образом, как и предыдущий.

Сотовый S13 из файла данных следует скопировать в главный файл «A3» и вниз таким же образом, как и предыдущий.

Edit:

Это то, что работает в мастер-файл, чтобы восстановить весь столбец B, но он переписывает весь столбец. Следовательно, он хорошо работает, чтобы импортировать часы работы из одного файла, что всегда одно и то же. Затем снова для файла данных анализа проблема заключается в том, что приведенный выше код работает из главного файла, и в этом случае, когда файл данных на самом деле меняется каждый день, я понятия не имею, как изменить его так, чтобы он искал правильный файл.

Sub Work_hours() 

' copy_paste1 Macro 

Dim wsMaster As Worksheet, wbDATA As Workbook 
Dim NextRow As Long, LastRow As Long 

Set wsMaster = ThisWorkbook.Sheets("Sheet1") 
NextRow = wsMaster.Range("A" & Rows.Count).End(xlUp).Row + 1 

Set wbDATA = Workbooks.Open("\\C:\users\heppanetti\Google Drive\heppanetti\outbound\working_hours.xlsx") 

With wbDATA.Sheets("Sheet1") 
Columns("B:B").Select 
Selection.Copy 
Windows("ColdCalling_Stats_template.xlsx").Activate 
Columns("B:B").Select 
ActiveSheet.Paste 

wbDATA.Close False 
End With 
End Sub 
+1

Я думаю, что это [ссылка] (http://stackoverflow.com/a/12498033/1635051) поможет вам найти первую пустую строку , Но для того, чтобы лучше понять, вы всегда можете использовать инструмент «record macro» в Excel и делать то, что хотите, программно, после этого вы можете просто остановить его и проверить сгенерированный макрокод, это действительно поможет вам узнать структура автоматизации excel. –

+0

Спасибо! Я действительно пытался записывать макросы целый день, но проблема в том, что на самом деле найти пустую ячейку из главного файла.Я также могу написать код, который копирует правую ячейку, но по какой-то причине он не вставляет его нигде ... и даже не сообщает о каких-либо ошибках или тому подобных. –

+1

Вы проверили ссылку, я сказал? Это поможет вам найти первую пустую ячейку. Я не знаю, как скопировать и вставить значение, вы можете получить значение ячейки и записать ее в предпочтительной ячейке самостоятельно. –

ответ

0

У меня есть первая часть работы макроса, но теперь я должен иметь возможность переключаться между документами. Имя документа отправителя неизвестно что создает проблемы в активации ...

Option Explicit 

Sub SendToMaster() 
'this macro goes IN the sender workbook 
Dim wsSEND As Worksheet, wbMASTER As Workbook 
Dim NextRow As Long, LastRow As Long 

Set wsSEND = ThisWorkbook.Sheets("Sheet1") 
Range("S2").Select 
Selection.Copy 

Set wbMASTER = Workbooks.Open("\\c:\users\heppanetti\Google Drive\heppanetti\outbound\ColdCalling_stats_template.xlsx ") 
Windows("ColdCalling_stats_template.xlsx").Activate 
Range("H1").End(xlDown).Offset(1, 0).Select 
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 

'here the macro should activate the SENDER workbook again. 
'However the name is unknown, thus Windows("fileName.xlsm").Activate does not work 
    Set wsSEND = ThisWorkbook.Sheets("Sheet1") 
    Range("S1").Select 
Selection.Copy 


Windows("ColdCalling_stats_template.xlsx").Activate 
Range("N1").End(xlDown).Offset(1, 0).Select 
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 




wbMASTER.Close True  'save and close the master 

End Sub 
Смежные вопросы