Доброй ночи всем кто не спит. Вопрос в этой теме создаю только потому, что мой вопрос касается VBA, в первую очередь. В одной из ранее начатых тем мне очень помог buchlotnik, и подсказал процедуры с помощью которых я мог бы выполнить некоторые расчеты программе Microsoft Project также, как это мы делаем в Экселе. На сегодня мой вопрос-просьба: Как перенести в заданную ячейку Projecta с указанным номером строчки и названием (либо номером) колонки, ячейку из экселя с указанным наименованием файла, номером листа, номером строчки и номером колонки. Или, хотя бы, прошу подсказать, как это "делается" в Excel? С уважением и благодарностью ______________ Юрий.
Доброй ночи всем кто не спит. Вопрос в этой теме создаю только потому, что мой вопрос касается VBA, в первую очередь. В одной из ранее начатых тем мне очень помог buchlotnik, и подсказал процедуры с помощью которых я мог бы выполнить некоторые расчеты программе Microsoft Project также, как это мы делаем в Экселе. На сегодня мой вопрос-просьба: Как перенести в заданную ячейку Projecta с указанным номером строчки и названием (либо номером) колонки, ячейку из экселя с указанным наименованием файла, номером листа, номером строчки и номером колонки. Или, хотя бы, прошу подсказать, как это "делается" в Excel? С уважением и благодарностью ______________ Юрий.Юрий_Нд
Доброго дня Всем. buchlotnik, очень Вам благодарен, что Вы нашли время отозваться. Прошу прощения за такую оплошность, что не приложил исходники-болванки. Ещё есть пожелания, чтобы кроме "красивого" варианта переноса данных, был представлен вариант переноса по отдельной ячейке, с помощью метода "цикл в цикле". Или просто способ переноса отдельной ячейки Excel-я. С уважением и благодарностью __________ Юрий.
Доброго дня Всем. buchlotnik, очень Вам благодарен, что Вы нашли время отозваться. Прошу прощения за такую оплошность, что не приложил исходники-болванки. Ещё есть пожелания, чтобы кроме "красивого" варианта переноса данных, был представлен вариант переноса по отдельной ячейке, с помощью метода "цикл в цикле". Или просто способ переноса отдельной ячейки Excel-я. С уважением и благодарностью __________ Юрий. Юрий_Нд
К сообщению приложен файл:_-2.xlsx
(9.0 Kb)
·
_-2.rar
(21.3 Kb)
Ничего не понял про "красивого" и всё такое, про закрытый файл в первом посте тоже вроде ни слова (отдельная тема есть), циклом заполнить задачи можно как-то так: [vba]
Код
Sub get_tasks() Dim rng(), xl As Object, r%, c%, i%, j% Set xl = CreateObject("Excel.Application") With xl .Workbooks.Open (ThisProject.Path & Application.PathSeparator & "2.xlsx") .Activesheet.Range("E9").CurrentRegion.Select r = .Selection.Rows.Count - 1 c = .Selection.Columns.Count ReDim rng(1 To r, 1 To c) For i = 1 To r For j = 1 To c rng(i, j) = .Activesheet.Range("E9").Offset(i, j - 1).Value Next j Next i .Quit End With
For i = 1 To r SelectTaskField Row:=i, Column:="Number1", RowRelative:=False 'строчка из макрорекодера - select нужен один для выбора целевой задачи, далее идут четыре set SetTaskField Field:="Name", Value:=rng(i, 1) SetTaskField Field:="Number1", Value:=rng(i, 2) SetTaskField Field:="Number2", Value:=rng(i, 3) SetTaskField Field:="Number3", Value:=rng(i, 4) Next i End Sub
[/vba]можете менять на другой конкретный путь [vba]
Код
.Activesheet.Range("E9")
[/vba] можете менять на конкретный лист и другой диапазон [vba]
Код
.CurrentRegion.Select
[/vba] это нужно если не одна ячейка, а весь прилегающий диапазон считываем
Текущий макрос открывает заданный файл Excel из той же папки, считывает диапазон от E9 (кроме заголовков) и последовательно пишет в Project
Ничего не понял про "красивого" и всё такое, про закрытый файл в первом посте тоже вроде ни слова (отдельная тема есть), циклом заполнить задачи можно как-то так: [vba]
Код
Sub get_tasks() Dim rng(), xl As Object, r%, c%, i%, j% Set xl = CreateObject("Excel.Application") With xl .Workbooks.Open (ThisProject.Path & Application.PathSeparator & "2.xlsx") .Activesheet.Range("E9").CurrentRegion.Select r = .Selection.Rows.Count - 1 c = .Selection.Columns.Count ReDim rng(1 To r, 1 To c) For i = 1 To r For j = 1 To c rng(i, j) = .Activesheet.Range("E9").Offset(i, j - 1).Value Next j Next i .Quit End With
For i = 1 To r SelectTaskField Row:=i, Column:="Number1", RowRelative:=False 'строчка из макрорекодера - select нужен один для выбора целевой задачи, далее идут четыре set SetTaskField Field:="Name", Value:=rng(i, 1) SetTaskField Field:="Number1", Value:=rng(i, 2) SetTaskField Field:="Number2", Value:=rng(i, 3) SetTaskField Field:="Number3", Value:=rng(i, 4) Next i End Sub