Страница: 1 |
Вопрос: Как cкопировать данные из другого файла Excel | Добавлено: 11.10.05 12:07 |
Автор вопроса: ![]() |
Необходимо скопировать данные из файла, который выбирается в диалоговом окне Открыть. Однако при копировании все запятые у рациональных чисел пропадают (например, 1,003 стает 1299999999999 и так далее).
Помогите. плиз. вот пример как я это делаю: ---------------------------------- Dim str1, str2 As String res = Application.FindFile If res = True Then Range("e2:I2").Select 'copy data Range(Selection, Selection.End(xlDown)).Select Selection.Copy ActiveWindow.Close Range("A1:F1").Select 'delete old data Range(Selection, Selection.End(xlDown)).Select Selection.Delete Range("A1").Select 'insert data ActiveSheet.Paste Columns("B:B").Select Selection.Delete Shift:=xlToLeft Range("A2").Select Selection.End(xlDown).Select 'how many data KolDATA = ActiveCell.Row - 1 Range("A2").Select UserForm1.TextBox4 = Cells(2, 1) UserForm1.TextBox5 = Cells(KolDATA, 1) End If ------------------- может это можно сделать по другому? |
Ответы | Всего ответов: 5 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #1 | Добавлено: 11.10.05 20:41 |
Если из файла екзля, то попробуй скопировать значение а не саму ячейку, т.е.
Range(A1).FomrulaR1C1
И перед етим надда поставить все ячейки в соответствующий формат, если поставить в формат даты к примеру то у тя выйдет не то шо в ячейке |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 1 Ответов: 2 |
Профиль | Цитата | #2 | Добавлено: 16.10.05 20:39 |
Вообще копировать нужно не 1 ячейку (значение в ячейке), а массив, причем количесвто строк заранее неизвестно. И формат ячеек вообще ничего не меняет (в моем случае).
Метод Selection.Copy парит. если руками копировть-> вставить все нормально, а прога глючит ![]() |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 16.10.05 23:57 |
Dim mass$()
ReDim mass$(0) do ... mass$(ind) = Cells(x,y) ind++ ReDim Preserve mass$(ind) ... loop ну типа редимить массив не стирая прошлых данных в нём. Ну а цикл сам придумешь, я в VBA не очень, на фонарь do..loop написал |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #4 | Добавлено: 16.10.05 23:59 |
ой ой... не "ind++" а "ind = ind + 1" ![]() ![]() а можно и без счётчика, чё то типа ReDim Preserve mass$(Ubound(mass$)+1) но так наверное медление будет... |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 1 Ответов: 2 |
Профиль | Цитата | #5 | Добавлено: 25.10.05 20:17 |
Пасиб всем кто ответил. HACKER - respect
вопрос оказался тривиальным ![]() |
Страница: 1 |
|