Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вытащить вложенные в ворд таблицы эксель, Есть кус кода. Вылетает на 8 и 21 табл  (Прочитано 9740 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
ivan33
Гость
« : 13-07-2006 13:55 » 

Код:
Private lngI As Long

Public Sub FromWordToExcel()
    Dim sh As Word.InlineShape
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    Dim xlWbNew As Excel.Workbook
    Dim xlWs As Excel.Worksheet
    Dim strCaption As String

    Set xlApp = New Excel.Application
    xlApp.Visible = True
   
    Set xlWbNew = xlApp.Workbooks.Add

    For Each sh In ActiveDocument.InlineShapes
        If sh.OLEFormat.ProgID = "Excel.Sheet.8" Then
            sh.OLEFormat.ActivateAs ClassType:="Excel.Sheet.8"
            sh.OLEFormat.Activate
           
            Set xlWb = sh.OLEFormat.Object
           
            strCaption = fnFindField(lngI)
           
            Set xlWs = xlWbNew.Worksheets.Add
           
            xlWs.Name = strCaption
            xlWb.Worksheets(1).UsedRange.Copy xlWs.Range("A1")
           
            lngI = lngI + 1
        End If
    Next sh
End Sub

Public Function fnFindField(lngI As Long) As String
    Dim intPos As Integer
    Dim fld As Word.Field
   
    Do
        lngI = lngI + 1
        intPos = InStr(ActiveDocument.Fields(lngI).Code, "SEQ")
    Loop Until intPos > 0
   
    Set fld = ActiveDocument.Fields(lngI)
   
    fnFindField = Mid(Trim(fld.Code), 4, _
      Len(Trim(fld.Code)) - InStr(Trim(fld.Code), "\") - 4) & " " & fld.Result
End Function
 


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

вылетает на 8 и 21 таблице (на 8 вылетает на слабом компе, 21 - помощнее)

Пишет для этой строки:


Код:
 If sh.OLEFormat.ProgID = "Excel.Sheet.8" Then

 
 

 - ProgID для данного объекта отсутствует

Для этой строки:



Код:
 xlWb.Worksheets(1).UsedRange.Copy xlWs.Range("A1") 


 
 

 -- метод Copy из класса Range завершен неверно

может кто помогчи?

кроме того, забыл сказать, в документе есть еще и диаграммы визио, их надо игнорировать
Записан
ymhuk
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 13-07-2006 17:22 » new

Что-то меня заинтересовало. Устанвлю пожалуй basic и посмотрю
Записан

Знаешь мало - поучись, знаешь много - поделись.
ivan33
Гость
« Ответ #2 : 14-07-2006 05:39 » 

Что-то меня заинтересовало. Устанвлю пожалуй basic и посмотрю
а собственно бэйсик устанавливать не надо это вба. встроенный язык в офис.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines