Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2011, 00:02   #1
shkipper
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 23
По умолчанию Ошибка при вставлении копированного текста в новый хлс фаил

Всем привет.

Название этого топика само о себе говорит.

Значит в цикле, когда я пытаюсь вставить копированный текст в другой фаил, я получаю ошибку.
Может кто нибудь увидит что именно я пропустил? Так как я уже и не знаю из за чего это может быть.

Код:
Sub auto_close()

Dim linkSrcFile As String
Dim targetSrcFile As String

Dim currentFilePath As String

Dim wkbLink As Workbook
Dim targetWkb As Workbook

Dim wksLinkWkb As Worksheet 'Link document
Dim wksCurrent As Worksheet 'Current
Dim targetWks As Worksheet 'Target = Results

'Dim currentWks As Worksheet
Dim docname As String
Dim user As String

'File names
Dim linkDoc As String
Dim resultDoc As String

linkDoc = "Link document.xls"
resultDoc = "Results.xls"

'On Error GoTo ErrorHandling

'Set Paths
linkSrcFile = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, linkDoc)
targetSrcFile = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, resultDoc)

'Get workbooks
Set wkbLink = GetObject(linkSrcFile)
Set targetWkb = GetObject(targetSrcFile)

'Get worksheets
Set wksLinkWkb = wkbLink.Worksheets("Sheet1")
Set wksCurrent = ThisWorkbook.Worksheets("Sheet1")
Set targetWks = targetWkb.Worksheets("Sheet1")

Dim nbColumns As Integer
Dim nbForUnhiddenColumn As Integer

'Determing the amount of columns
nbColumns = Range("1:1").Cells.SpecialCells(xlCellTypeConstants).Count

'Checking for unhidden column
For i = 1 To nbColumns
    If Columns(i).Hidden = False Then
        Debug.Print "Column is not hidden"
        nbForUnhiddenColumn = i
        Exit For
    End If
Next i

'First row
'wksCurrent.Range("A1", "P1").Copy
wksCurrent.Range(Cells(1, 1), Cells(1, 16)).Copy
targetWks.Range("A1", "P1").PasteSpecial (xlPasteAll)
targetWks.Range("Q1").Value = "User"

'Looping thru the records in Link xls file
For i = 2 To wksLinkWkb.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count

    docname = wksLinkWkb.Cells(i, 3).Value
    user = wksLinkWkb.Cells(i, 2).Value

        'Looping thru Report.xls records
        For j = 2 To wksCurrent.Range(nbForUnhiddenColumn & ":" & nbForUnhiddenColumn).Cells.SpecialCells(xlCellTypeConstants).Count
            If wksCurrent.Cells(j, "J").Value = docname Then
                Debug.Print "Match " & docname & " " & user
                wksCurrent.Range(Cells(j, 1), Cells(j, nbColumns)).Copy
                targetWks.Range(Cells(i, 1), Cells(i, nbColumns)).PasteSpecial (xlPasteAll)
                targetWks.Cells(i, nbColumns + 1).Value = user
                Exit For
            End If
        Next j
Next i

targetWkb.Save
targetWkb.Close
wkbLink.Close False
Debug.Print "Target workbook saved and closed"

Exit_thisSub:
    Exit Sub

ErrorHandling:
    Dim strMsg As String
    Select Case Err.Number
        Case 432
            strMsg = "Error occured: Make sure the names of the files are correct: " & linkDoc & " and " & resultDoc & " and they are in the same map, as this one (" & ThisWorkbook.Name & ")"
            MsgBox strMsg
            targetWkb.Close False
            wkbLink.Close False
        Case Else
            strMsg = "Error occured: " & Err.Number & " " & Err.Description
            MsgBox strMsg
            targetWkb.Close False
            wkbLink.Close False
    End Select
    Exit Sub

End Sub
shkipper вне форума Ответить с цитированием
Старый 24.10.2011, 00:27   #2
shkipper
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 23
По умолчанию

даже если я убераю эту ошибку, ну тоесть при помощи
targetWks.activate
wksCurrent.activate

тогда я не получаю ошибки НО тогда хлс фаил куда я копирую получается пустой, там даже пустых табов нет
не знаю в чем проблема
shkipper вне форума Ответить с цитированием
Старый 24.10.2011, 00:43   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
'Determing the amount of columns
nbColumns = Range("1:1").Cells.SpecialCells(xlCellTypeConstants).Count

'Checking for unhidden column
For i = 1 To nbColumns
    If Columns(i).Hidden = False Then
Какая книга в этот момент активна, после GetObject'ов?

Поставьте точку останова на первом исполняемом операторе да пройдите по шагам (F8). Наблюдайте за значениями переменных в окне Locals или наводя курсор на переменную.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 24.10.2011, 01:07   #4
shkipper
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 23
По умолчанию

Хмм но ведь это не проблема.
Это просто мне дает номер не спрятанной колонки и все.

Тоесть в моем примере это будет 1, вот и все.

Дело в том что после выполнения этого скрипта, фаил куда все эти значения пишутся пустой, там даже нет табов, ничего пустой фаил даже добавить туда ничего не могу, вот что странно

Последний раз редактировалось shkipper; 24.10.2011 в 01:10.
shkipper вне форума Ответить с цитированием
Старый 24.10.2011, 01:35   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

У вас четко не определены листы,поэтому работа идет на активном в этот момент листе

nbColumns = Worksheets("Неизвестный").Range("1: 1").Cells.SpecialCells(xlCellTypeCo nstants).Count

'Checking for unhidden column
For i = 1 To nbColumns
If Worksheets("Неизвестный2").Columns( i).Hidden = False Then
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.10.2011, 01:41   #6
shkipper
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 23
По умолчанию

Верно

Я это изменил, спасибо!

Но все та же проблема у меня не получается копировать.
И очень странно если я просто запускаю макро все нормально проходит если я пошагово иду то он выдает ошибку в цикле мол не получается селекцию сделать для того что бы потом туда вставить.

Ужс, запарился уже 2 дня сижу и не в еду ... что же не так.
shkipper вне форума Ответить с цитированием
Старый 24.10.2011, 02:09   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А если так копировать

Код:
 wksCurrent.Range(Cells(1, 1), Cells(1, 16)).Copy  argetWks.Range("A1", "P1")
targetWks.Range("Q1").Value = "User"

Код:
For i = 2 To wksLinkWkb.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count

    docname = wksLinkWkb.Cells(i, 3).Value
    user = wksLinkWkb.Cells(i, 2).Value

        'Looping thru Report.xls records
        For j = 2 To wksCurrent.Range(nbForUnhiddenColumn & ":" & nbForUnhiddenColumn).Cells.SpecialCells(xlCellTypeConstants).Count
            If wksCurrent.Cells(j, "J").Value = docname Then
                Debug.Print "Match " & docname & " " & user
                wksCurrent.Range(Cells(j, 1), Cells(j, nbColumns)).Copy targetWks.Range(Cells(i, 1), Cells(i, nbColumns))
                targetWks.Cells(i, nbColumns + 1).Value = user
                Exit For
            End If
        Next j
Next i
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.10.2011, 09:05   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Могли бы за полдня сделать для форума пример в файле, и за вторые полдня получили бы рабочий код.
День бы сэкономили
А то и два уже...

Может быть всё копируется правильно, но копируются пустые ячейки? И такое бывало...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.10.2011 в 09:07.
Hugo121 вне форума Ответить с цитированием
Старый 24.10.2011, 10:18   #9
shkipper
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 23
По умолчанию

Возможно вы и правы

Но у меня есть эти файлы

щас попытаюс их как то загрузить

Вот вложил, в архиве 3 файла, в одном есть макро, другой просто линк, а в резулт идет результат

Благодарю за помощь, особенно те кто найдет похему скрипт не работает
Вложения
Тип файла: zip files.zip (49.3 Кб, 8 просмотров)

Последний раз редактировалось shkipper; 24.10.2011 в 10:21.
shkipper вне форума Ответить с цитированием
Старый 24.10.2011, 14:10   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

файл какой то дерганый.
проверяйте
Вложения
Тип файла: rar Return.rar (41.4 Кб, 7 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами. Замена предыдущего текста на новый. Ibanez Wizard Win Api 1 07.04.2011 00:30
Не удаётся открыть Xml фаил (синтаксическая ошибка) Smile_Flow Помощь студентам 1 23.02.2011 13:19
ошибка при поиске текста в файле с настройками _Mickey_ Помощь студентам 0 29.12.2009 22:11
Ошибка при сохранении текста перед выходом Shouldercannon Общие вопросы Delphi 1 17.12.2008 14:42
вставка текста в графический фаил А.Брей Общие вопросы Delphi 2 04.11.2006 02:21