Страницы: 1
RSS
прекращается работа excel при запуске макроса, возникает ошибка которая просто прекращает работу excel
 
Доброго всем дня.
У меня задача сохранение отдельных данных из рабочего файла во внешний файл.
написал макрос. Но при его активизации происходит отключение работы Excel. Может кто то посмотреть код на наличие ошибок.
Заранее спасибо.
 
Какую-нибудь статью про отладку кода не хотели бы почитать?
 
это что вообще?
Цитата
Workbooks.Open("P:\P:\@План\цифровая печать\материалы на 8587.xlsx")
разве не видно опечатку в полном пути файла? (задвоенная буква диска)
 
У вас там всё неправильно.
Код
1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
Dim ЭтаКнига, a As String
ЭтаКнига = ThisWorkbook.Name
Адрес = "C:\Users\Sano\Downloads\Книга1.xls"
Workbooks.Open (Адрес)
a = Dir(Адрес, vbNormal)
Workbooks(ЭтаКнига).Worksheets("Лист1").Cells(1, 1) = Workbooks(a).Worksheets("Лист1").Cells(1, 1)
End Sub
И так далее
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Игорь,  Спасибо. Моя невнимательность меня часто подводит.
 
Equio,
Мне  бы время на это найти но как я понимаю мне необходимо перечитать эти материалы т.ч. буду благодарен за ссылки.
Теперь нужно понять почему метод масива нельзя применять к выбранному листу. 1004 ошибка. Такое уже бывало :(
 
Alemox,
Спасибо огромное
 
Цитата
alex_j написал:
почему метод масива нельзя применять к выбранному листу
- почему? :)
И что за "метод массива"?
 
Уже наверно не по теме. Но при варианте записи предложенной Alemox,  у нас нет определения последней заполненной ячейки.
Код
1
2
3
4
5
6
7
8
9
10
11
  Dim book, a As String
book = ThisWorkbook.Name
pooh = "P:\@План\цифровая печать\материалы на 8587.xlsx"
Workbooks.Open (pooh)
a = Dir(pooh, vbNormal)
Workbooks(a).Worksheets("Лист2").Cells(i, 1) = Workbooks(book).Worksheets("ТК").Cells(1, 9)
Workbooks(a).Worksheets("Лист2").Cells(i, 2) = Workbooks(book).Worksheets("ТК").Cells(8, 1)
Workbooks(a).Worksheets("Лист2").Cells(i, 3) = Workbooks(book).Worksheets("ТК").Cells(18, 2)
Workbooks(a).Worksheets("Лист2").Cells(i, 4) = Workbooks(book).Worksheets("ТК").Cells(28, 15)
Workbooks(a).Worksheets("Лист2").Cells(i, 5) = Workbooks(book).Worksheets("ТК").Cells(29, 15)
Workbooks(a).Worksheets("Лист2").Cells(i, 6) = Workbooks(book).Worksheets("ТК").Cells(31, 10)

соответственно связка
Код
1
i = .Range("A" & .Rows.Count).End(xlUp).Row + 1

не применима поскольку у меня происходит указание в какую ячейку я вставляю значения из какой. А для определения последней заполненной нужно было бы сперва открыть лист в книге и проверить ячейки. Или есть какой то еще способ?
Изменено: alex_j - 04.09.2017 16:42:24
 
Цитата
alex_j написал:
не применима поскольку у меня происходит указание в какую ячейку я вставляю значения из какой. А для определения последней заполненной нужно было бы сперва открыть лист в книге и проверить ячейки. Или есть какой то еще способ?
из ячейки нельзя вытащить данные не открыв книгу. я как-то пытался такое првеорнуть, он то вытаскивал, то в итоге у меня в принципе эксель не работал, пока я не стер файл с макросом:-)
 
Цитата
alex_j написал:
нужно было бы сперва открыть лист в книге и проверить ячейки
- не понимаю, а что мешает это сделать? Книга открыта, а лист можно и не "открывать", просто обращаетесь к
Код
1
Workbooks(a).Worksheets("Лист2")

сперва определяете нужную строку, затем в неё пишите данные.
raitnax, можно открыть незаметно, можно "не открывая" вытащить используя формулу листа или ExecuteExcel4Macro(), но в данном случае это ведь не требуется.
Страницы: 1
Читают тему
Наверх
Loading...