Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / dll-библиотеки, копии книг / 25 сообщений из 44, страница 1 из 2
04.10.2007, 19:20:08
    #34847914
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Sub TOMAT()
Sheets("Kyda").Activate
Range("A5:AA1000").ClearContents
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim ishFile As String
    
    ishFile = Range("B3").Value
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & ishFile & ";" & _
      "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    
    rst.Open "SELECT * FROM [ucx$A1:aa1000]", cnn
    
    Range("A6").CopyFromRecordset rst
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub

По этому алгоритму копирую данные с одной книги в другую.
Только вот в книгу =Kyda= переходят только значения с зелёными треугольниками в верхнем левом углу (но без форматирования).
Подскажите, пожалуйста, как скопировать сразу и значения, и цвета ячеек, и рамки ячеек в одной связке?

И как автоматически подключать библиотеки из =References= при открытии книги (см. рис.)?
...примерно так:
Код: plaintext
1.
2.
3.
Private Sub Worksheet_Activate()
Microsoft DAO  3 . 6  Object Library. Installed=True '  'как правильно?
Microsoft ActiveX Data Objects Library. Installed=True  'как правильно?
End Sub
...
Рейтинг: 0 / 0
04.10.2007, 19:24:10
    #34847920
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Вот файл =Kyda= (куда копирую данные)...
...
Рейтинг: 0 / 0
04.10.2007, 19:25:36
    #34847921
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
здесь таблица, откуда беру данные ...
...
Рейтинг: 0 / 0
05.10.2007, 10:09:58
    #34848641
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
По первому вопросу: С помощью технологий ADO или DAO копирование с форматами невозможно
надо так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub TOMAT2()
    Dim xlWb As Workbook
    Dim rng As Range
    Dim ishFile As String

    Range("A5:AA1000").ClearContents
    ishFile = ThisWorkbook.Path & Range("B3").Value
    Application.ScreenUpdating = False
    Set xlWb = Workbooks.Open(ishFile, , True)
    Set rng = xlWb.Worksheets("ucx").Range("A1:AA1000")
    
    rng.Copy Destination:=ThisWorkbook.Worksheets("Kyda").Range("A6")
    
    Set rng = Nothing
    xlWb.Close
    Set xlWb = Nothing
    Application.ScreenUpdating = True
End Sub
что касается ссылок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub mReferens()
    Dim ref As Object 'или  Reference но тогда нужно подключить "Microsoft Visual Basic for Applications Extensibility 5.3"
    Dim msg As String
    For Each ref In ActiveWorkbook.VBProject.References
        msg = msg & ref.Name & vbCrLf
        msg = msg & ref.Description & vbCrLf
        msg = msg & ref.fullpath & vbCrLf
    Next
    MsgBox msg
End Sub
...
Рейтинг: 0 / 0
05.10.2007, 10:16:44
    #34848668
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
вместо
Код: plaintext
Range("A5:AA1000").ClearContents
надо
Код: plaintext
Range("A5:AA1000").Clear
...
Рейтинг: 0 / 0
05.10.2007, 11:26:25
    #34848985
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodorвместо
Код: plaintext
Range("A5:AA1000").ClearContents
надо
Код: plaintext
Range("A5:AA1000").Clear


Большое спасибо!
Изучаю...
...
Рейтинг: 0 / 0
05.10.2007, 12:51:47
    #34849444
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Когда запускаю =TOMAT2=, появляется сообщение „Сохранить изменения в =ADO_10_TOMAT.xls=?“, т.е. в файле, откуда копируются данные.

Как сделать, чтобы не появлялось это сообщение?
И как удалять в листе =Kyda= все элементы управления (CheckBox, OptionBox и т.д.), кроме =CommandButton=? Т.е. кнопки оставляю, а всё остальное убираю.
...
Рейтинг: 0 / 0
05.10.2007, 12:55:08
    #34849466
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Когда запускаю =TOMAT2=, появляется сообщение „Сохранить изменения в =ADO_10_TOMAT.xls=?“, т.е. в файле, откуда копируются данные.

Как сделать, чтобы не появлялось это сообщение?
И как удалять (с помощью VBA) в листе =Kyda= все элементы управления (CheckBox, OptionBox и т.д.), кроме =CommandButton=? Т.е. кнопки оставляю, а всё остальное убираю.
...вручную могу удалять, программно не знаю, как...
...
Рейтинг: 0 / 0
05.10.2007, 13:30:15
    #34849718
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
для того чтобы не задавал вопросы поставь
Код: plaintext
xlWb.Close False
для удаления
Код: plaintext
1.
2.
3.
    Dim oble As OLEObject
    For Each oble In Sheets("Kyda").OLEObjects
        If TypeName(oble.Object) <> "CommandButton" Then oble.Delete
    Next
...
Рейтинг: 0 / 0
05.10.2007, 13:36:51
    #34849747
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodorдля того чтобы не задавал вопросы поставь
Код: plaintext
xlWb.Close False
для удаления
Код: plaintext
1.
2.
3.
    Dim oble As OLEObject
    For Each oble In Sheets("Kyda").OLEObjects
        If TypeName(oble.Object) <> "CommandButton" Then oble.Delete
    Next


Спасибо! Работает
...
Рейтинг: 0 / 0
05.10.2007, 17:51:34
    #34850939
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
связал некоторые ячейки файла =ADO_10_TOMAT.xls=, откуда копирую, с ячейками другого файла при помощи функции ВПР.
Запускаю =Sub TOMAT2()=, в листе =Kyda= в некоторых ячейках появляется ошибка = #ССЫЛ!= (как раз в тех ячейках, в которых стоят формулы в листе =ucx=, а не значения), т.е. значения ВПР из =ucx= в =Kyda= не копируются, а переходят формулы.

Подскажите, пожалуйста, как скопировать значения без формул, но со всеми остальными форматами (рамки, цвет шрифта и ячеек).

Пытался так, не выходит:
Код: plaintext
1.
2.
    Set xlWb = Workbooks.Open(ishFile, , True)
    Set rng = xlWb.Worksheets("ucx").Range("A1:AA1000")    ' .SpecialCells(xlCellValue)
...
Рейтинг: 0 / 0
05.10.2007, 18:06:28
    #34850995
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Код: plaintext
1.
2.
3.
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("A6").PasteSpecial xlPasteValues
    ThisWorkbook.Worksheets("Kyda").Range("A6").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
...
Рейтинг: 0 / 0
05.10.2007, 18:18:13
    #34851044
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodor
Код: plaintext
1.
2.
    rng.Copy
   ...
    Application.CutCopyMode = False


Спасибо!
Получается...
...
Рейтинг: 0 / 0
05.10.2007, 18:28:46
    #34851077
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Перед копированием вылетает окно с запроcом:
"Нужно ли пересчитать цифры заново в файле =ADO_10_TOMAT.xls=?".
...ставлю постоянно "Нет".

Подскажите, пожалуйста, как подавлять этот запрос, т.е. копировать без запросов на обновление данных?
..примерно так же как с =Close= только для оператора =Copy=:
Код: plaintext
1.
2.
xlWb.Close False
' rng.Copy False
...
Рейтинг: 0 / 0
05.10.2007, 19:25:29
    #34851211
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
После копирования значения выходят, как-то странно (см. рис.).
...значение =D5= на листе показываются как иероглифы, а, где окно функция - символ какой-то буквой плюс понятный текст.
Как это форматировать (чтобы и символ и текст отображались правильно)?
...
Рейтинг: 0 / 0
08.10.2007, 09:23:04
    #34853034
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
nPUBETПеред копированием вылетает окно с запроcом:
"Нужно ли пересчитать цифры заново в файле =ADO_10_TOMAT.xls=?".
...ставлю постоянно "Нет".

Подскажите, пожалуйста, как подавлять этот запрос, т.е. копировать без запросов на обновление данных?
..примерно так же как с =Close= только для оператора =Copy=:
Код: plaintext
1.
2.
xlWb.Close False
' rng.Copy False

вот эта строка
Код: plaintext
Application.CutCopyMode = False
очищает буфер
поставь её перед копированием
...
Рейтинг: 0 / 0
08.10.2007, 09:45:10
    #34853065
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
nPUBETПосле копирования значения выходят, как-то странно (см. рис.).
...значение =D5= на листе показываются как иероглифы, а, где окно функция - символ какой-то буквой плюс понятный текст.
Как это форматировать (чтобы и символ и текст отображались правильно)?
Формат лучше всего текстовый.
1. Попробуй поменять шрифт.
2. Попробуй запускать макрос при русской раскладке на клавиатуре.
...
Рейтинг: 0 / 0
08.10.2007, 11:37:25
    #34853438
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodor...вот эта строка
Код: plaintext
Application.CutCopyMode = False
очищает буфер
поставь её перед копированием
Спасибо!
Поставил вот так.
Код: plaintext
1.
2.
Set rng = xlWb.Worksheets("ucx").UsedRange
Application.CutCopyMode = False
rng.Copy Destination:=ThisWorkbook.Worksheets("Kyda").Range("A1")
Всё равно вылетает окно:
- запускаю макрос;
- появляется окно запроса: "Файл содержит ссылки на другие файлы, обновить данные или нет, ставлю "Нет";
- появляется окно сохранения файла;
- выбираю "Отменить" сохранение;
- потом начинается копирование (у меня там Чекбох, так вот этот элемент управления начинает мигать примерно 10 раз).

Кстати, этот запрос на обновление данных появляется 1-й раз при открытии файла =Кyda=, во 2-ой раз при запуске макроса в файле =Kyda=.

По иероглифам: с текстовым форматом и изменением раскладки тоже не получется (файл приложил).
...
Рейтинг: 0 / 0
08.10.2007, 12:14:39
    #34853575
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Ааа!!! обновление.
если надо не обновлять то второй аргумент - False
Код: plaintext
Set xlWb = Workbooks.Open(ishFile, False, True)
...
Рейтинг: 0 / 0
08.10.2007, 12:21:55
    #34853605
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
nPUBETПосле копирования значения выходят, как-то странно (см. рис.).
...значение =D5= на листе показываются как иероглифы, а, где окно функция - символ какой-то буквой плюс понятный текст.
Как это форматировать (чтобы и символ и текст отображались правильно)?
Мне не удается воспроизвести такое поведение на своём компе (извини)
попробуй перед символом Ø поставить апостроф (')
...
Рейтинг: 0 / 0
08.10.2007, 12:40:01
    #34853713
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodor nPUBETПосле копирования значения выходят, как-то странно (см. рис.).
...значение =D5= на листе показываются как иероглифы, а, где окно функция - символ какой-то буквой плюс понятный текст.
Как это форматировать (чтобы и символ и текст отображались правильно)?
Мне не удается воспроизвести такое поведение на своём компе (извини)
попробуй перед символом Ø поставить апостроф (')
Запрос на обновление не появляется, вылетает только окно на сохранение (обновлённых данных). ...это окно сохранения пока не так важно, важны эти китайские иероглифы..
Поставил так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 
Set xlWb = Workbooks.Open(ishFile, False, True)

    Set rng = xlWb.Worksheets("ucx").Range("A1:AA1000")
    '********
          
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("A1").PasteSpecial xlPasteValues
    ThisWorkbook.Worksheets("Kyda").Range("A1").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    '********
        
    '********  Этот шаг не получается
    Dim rngB As Range
    Set rngB = xlWb.Worksheets("ucx").Range("C:C")
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("C1").PasteSpecial xlPasteAll
    Set rngB = Nothing
    '*****  Этот шаг не получается
    Set rng = Nothing
    xlWb.Close False
    Set xlWb = Nothing

Пока так:
- копирую по =xlPasteValues=, =xlPasteFormats=;
- вставляю;
- копирую 3-ий столбец в листе =ucx= с формулами (=xlPasteAll=);
- тут барьер:
*3-ий столбец в листе =Кyda= удаляется,
*в листе =Кyda= 3-ий столбец стоит пустым.


Пытаюсь обойти иероглифы следующим образом:


1. Копирую лист без формул =ucx= в лист =Kyda= (по xlPasteValues, xlPasteFormats) - здесь без проблем,

2. Копирую в листе =ucx= 3-ий столбец и ячейку =Т3= с формулами, т.е. со всеми форматами (формулы, значения - всё равно нужно скопировать текст), накладываю 3-ий столбец (плюс ячейка =Т3=) с формулами на 3-ий столбец (+ =T3=) без формул. Этот шаг не получается ,

3. В листе =Кyda= 3-ий столбец и ячейка =Т3= имеют все форматы из листа =ucx=, все остальные столбцы и ячейки в листе =Kyda= содержат только значения и рамки из листа =ucx=.
...
Рейтинг: 0 / 0
08.10.2007, 13:07:22
    #34853810
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        
    '********  Этот шаг не получается
    Dim rngB As Range
    Set rngB = xlWb.Worksheets("ucx").Range("C:C")
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("C1").PasteSpecial xlPasteAll
    Set rngB = Nothing
    '*****  Этот шаг не получается
Ты наверно хотел не rng.Copy а rngB.Copy
...
Рейтинг: 0 / 0
08.10.2007, 13:17:57
    #34853856
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
vkodor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        
    '********  Этот шаг не получается
    Dim rngB As Range
    Set rngB = xlWb.Worksheets("ucx").Range("C:C")
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("C1").PasteSpecial xlPasteAll
    Set rngB = Nothing
    '*****    Этот шаг не получается
Ты наверно хотел не rng.Copy а rngB.Copy

Да, rngB.Copy.
Т.е. в =rngB= помещаю 3-ий столбец из =ucx=. А где ошибка?
...
Рейтинг: 0 / 0
08.10.2007, 13:21:38
    #34853872
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        
    '********  Этот шаг теперь получается
    Dim rngB As Range
    Set rngB = xlWb.Worksheets("ucx").Range("C:C")

    rngB.Copy  ' <==

    ThisWorkbook.Worksheets("Kyda").Range("C1").PasteSpecial xlPasteAll
    Set rngB = Nothing
    '*****  Этот шаг теперь получается
...
Рейтинг: 0 / 0
08.10.2007, 13:41:39
    #34853948
nPUBET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll-библиотеки, копии книг
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
     
    rng.Copy
    ThisWorkbook.Worksheets("Kyda").Range("A1").PasteSpecial xlPasteValues
    ThisWorkbook.Worksheets("Kyda").Range("A1").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    '********
    Dim rngB As Range
    Set rngB = xlWb.Worksheets("ucx").Range("C:C")
    rngB.Copy
    ThisWorkbook.Worksheets("Kyda").Range("C1").PasteSpecial xlPasteAll
    Set rngB = Nothing
    '********

    Set rng = Nothing
    xlWb.Close False
    Set xlWb = Nothing
    Range("A1").Select  ' т.к. после выполнения макроса вся таблица остается выделенной
    Application.ScreenUpdating = True
    mReferens
End Sub

Хотя стоят =Nothing=, перед запуском алгоритма появляется сообщение:
"У Вас в буфере куча информации. Хотите вставить эти данные где-нибудь?"

Как сделать, чтобы это сообщение не появлялось?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / dll-библиотеки, копии книг / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]