2014-11-28 3 views
-1

Я использую макрос, чтобы заполнить документ слова текстом из названных диапазонов в excel. В документе документа есть закладки, соответствующие указанным диапазонам excel. Я не написал код, а скопировал его из другого источника.Ошибка 1004 с кодом VBA с закладками

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

Я принимаю ошибку 1004 в строке, выделенной ниже. Я новичок, поэтому я даже не уверен, что я должен искать, чтобы исправить эту проблему. Любая помощь, которую вы могли бы предоставить, была бы оценена! Заранее спасибо!

P.S. В случае, если это имеет значение, я использую Word и Excel 2007

'PASTE TEXT STRINGS LOOP 
    n = 1 
    For Each temp In BkmTxt 
     p = p + 1 
     Prompt = "Please wait. Copying text. Carrying out operation " & p & " of " & pcount & "." 
     Application.StatusBar = Prompt 

    'If The Bkmtxt(n) is empty then go to the next one, once that has been found do next operation. 
    If BkmTxt(n) = Empty Then 
     n = n + 1 

    'should find match and work 
    Else 

     'You might want to use multiple copies of the same text string. 
     'In this case you need to call the bookmark as follows: "ARTextWhatever_01" 
     'You can use as many bookmarks as you want. 
     BkmTxtSplit = Split(BkmTxt(n), "_") 
     vValue = Range(BkmTxtSplit(0)).Text **<----- ERROR HERE** 

     Set wdRng = wdApp.ActiveDocument.Bookmarks(BkmTxt(n)).Range 
     If Len(sFormat) = 0 Then 
      'replace the bookmark text 
      wdRng.Text = vValue 
     Else 
      'replace the bookmark text with formatted text 
      wdRng.Text = Format(vValue, sFormat) 
     End If 

     'Re-add the Bookmark 
     wdRng.Bookmarks.Add BkmTxt(n), wdRng 
     n = n + 1 
    End If 
Next 
+0

Как я вижу, 'BkmTxt' представляет собой массив двойных закладок, каждый элемент массива содержит две фактические закладки, соединенные подчеркиванием. В качестве альтернативы, 'BkmTxt' может представлять собой диапазон ячеек, который содержит те же имена двойной закладки. Способы борьбы с ними варьируются. Не могли бы вы уточнить? – Jeeped

+0

Я не совсем уверен, понимаю ли я ваш вопрос, но для уточнения, BkmTxtSplit означает разделение закладки на подчеркивание, чтобы можно было повторить закладку в нескольких местах в документе слова. В этом случае, например, одна из закладок в документе слова непосредственно соответствует названной ячейке диапазона «ARTextName» в моем документе excel. В этом случае именованные ячейки диапазона в excel содержат заголовок моего отчета. Я хочу разместить заголовок отчета в нескольких местах в документе слова. Для этого я вставляю закладки с надписью ARTextName_01, ARTextName_02 и т. Д. Это помогает? – jazzy

ответ

0

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

Теперь, если я вас правильно понимаю, вы просто иметь лист Excel с именованными диапазонами, я предполагаю, что у них есть информация уже внутри них, и слово документ с закладками, которые точно соответствуют именованные диапазоны:

Шаг 2: Убедитесь, что у вас есть объект слово ссылка библиотека внутри первенствует

Здесь: (. не проверял, не волнует, если он работает Используйте его, чтобы узнать)

sub KeepItDoin() 
    dim xlRange as Excel.Range 
    dim wdApp as new Word.Application 
    dim wdDoc as Word.Document 
    dim wdBkm as Word.Bookmark 

    set wdDoc = wdApp.Documents.Open("Filepath") 'get filepath from where ever 

    for each wdBkm in wdDoc.Bookmarks 
     set xlRange = Application.Range(wdBkm.Name) 
     wdBkm.range.text = xlRange.Value 
    next wdBkm 
end sub 

это поможет вам закрыть вероятно. Идея состоит в том, что если закладки соответствуют диапазону, мы можем использовать их имена, чтобы найти диапазоны в excel, а затем передать excel для перемещения данных внутри него в диапазон закладок.

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

0

В случае, если кто-либо заинтересован, я понял. Произошла ошибка с закладками, которые я вставлял в документ Word. Этот макрос возвращает ошибку 1004, если документ слова содержит закладку, которая не соответствует диапазону в excel. Спасибо за помощь.

Смежные вопросы