Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как cкопировать данные из другого файла Excel Добавлено: 11.10.05 12:07  

Автор вопроса:  IceD
 Необходимо скопировать данные из файла, который выбирается в диалоговом окне Открыть. Однако при копировании все запятые у рациональных чисел пропадают (например, 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
Автор ответа:
 -=Fenix=-



Вопросов: 33
Ответов: 81
 Профиль | | #1 Добавлено: 11.10.05 20:41
Если из файла екзля, то попробуй скопировать значение а не саму ячейку, т.е.
Range(A1).FomrulaR1C1

И перед етим надда поставить все ячейки в соответствующий формат, если поставить в формат даты к примеру то у тя выйдет не то шо в ячейке

Ответить

Номер ответа: 2
Автор ответа:
 IceD



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 16.10.05 20:39
Вообще копировать нужно не 1 ячейку (значение в ячейке), а массив, причем количесвто строк заранее неизвестно. И формат ячеек вообще ничего не меняет (в моем случае).
Метод Selection.Copy парит. если руками копировть-> вставить все нормально, а прога глючит :(

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик 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
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 16.10.05 23:59
ой ой... не "ind++" а "ind = ind + 1" :) ето ж вам не с :)
а можно и без счётчика, чё то типа
ReDim Preserve mass$(Ubound(mass$)+1) но так наверное медление будет...

Ответить

Номер ответа: 5
Автор ответа:
 IceD



Вопросов: 1
Ответов: 2
 Профиль | | #5 Добавлено: 25.10.05 20:17
Пасиб всем кто ответил. HACKER - respect
вопрос оказался тривиальным ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам