2016-05-20 20 views
0

Я извиняюсь заранее ...Excel vba macro для копирования ячеек и вставки в другой

Я жадный пользователь Excel, но не квалифицированный с VBA. Любая помощь приветствуется.

  1. мне нужно пользователю ввести дату в ДДММГГГГ формате.
  2. Откройте книгу на основе этой информации ddmmyyyy (объедините ее с именем файла).
  3. Скопируйте ячейки из определенного диапазона в эту книгу (AN1: AS1).
  4. Вставьте скопированные ячейки в другую книгу. Он должен быть вставлен рядом с датой, введенной пользователем.

Вот код, который я пытался до сих пор:

dim input as string 
input = inputbox("Insert date in format ddmmyyyy") 
Workbooks.open (""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"") 
Workbooks("(""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"")).Worksheets("Sheet1").Range("AN1:AS1").Copy _ 
    Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A1") 

Может кто-нибудь помочь мне сделать эту работу? Спасибо.

+1

Для вашего входа, попробуйте 'ввода = текст (inputbox («Вставить дату в формате ddmmyyyy»), «ddmmyyyy»), чтобы форматировать формат. – BruceWayne

ответ

0

Скопируйте этот код в окне VBA макроса с поддержкой листа и либо F5 выполнить или назначить его как макрос к кнопке или другого объекта управления:

Public Sub CopyCells() 
     Dim wkb   As Excel.Workbook 
     Dim wks   As Excel.Worksheet 
     Dim wkb2  As Excel.Workbook 
     Dim wks2  As Excel.Worksheet 
     Dim strMSG  As String 

     strMSG = InputBox("Insert date in format ddmmyyyy") 

     Set wkb = Excel.Workbooks.Open("\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & strMSG & "1155.csv") 

     Set wkb2 = Excel.Workbooks.Open("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls") 

     Set wks = wkb.Worksheets("Sheet1"): wks.Activate 

     wks.Range("AN1:AS1").Copy 

     Set wks2 = wkb2.Worksheets("Sheet1") 

     wks2.Range("A1").PasteSpecial xlPasteAll 

     Set wks = Nothing: Set wkb = Nothing 

     set wks2 = nothing: set wkb2 = nothing 
    End Sub 
+0

Это попадает на строку, которая читает набор wks2 = wkb2.worksheets ("sheet1"): wks.activate. Является ли «sheet1» именем вкладки? Если это так, это называется «ACD Data». Я поставил это там и получил сообщение об ошибке времени выполнения «91». Переменная объекта или с блочным значением. Пожалуйста, порекомендуйте. –

+0

Да, «Лист 1» был предположением и был именем рабочего листа по умолчанию. Вам нужно заменить Лист 1 на имя листа, на котором данные идут * на *, и убедитесь, что значение указано в кавычках. – Sorcefyre

0

Вы можете изменить последнюю строку Range("A2"):

Workbooks(""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"").Worksheets("Sheet1").Range("AN1:AS1").Copy _ 
Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A2") 

И затем добавить дату перед ней ячейками A1:

Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A1").Value=input 

Надеется, что это помогает.

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