Excel VBA Отримання даних із закритої робочої книги за допомогою іменованого діапазону


0

Я використовую знайдений код тут (скопійовано нижче) для вилучення даних із закритих книг.

Що я хотів би досягти - це використання a названий діапазон у цільовому джерелі, а не у жорсткому коді. Так на рядку 22, де він визначає Address = Cells(Row, Column).Address Я хочу мати можливість просто годувати його іменемRange (що існує в цілі) замість цього ... але це, здається, робить getData() функція більше не працює.

Option Explicit 

 'you can extract data from a closed file by using an
 'XLM macro. Credit for this technique goes to John
 'Walkenback > http://j-walk.com/ss/excel/tips/tip82.htm

Sub GetDataDemo() 

  Dim FilePath$, Row&, Column&, Address$ 

   'change constants & FilePath below to suit
   '***************************************
  Const FileName$ = "Book1.xls" 
  Const SheetName$ = "Sheet1" 
  Const NumRows& = 10 
  Const NumColumns& = 10 
  FilePath = ActiveWorkbook.Path & "\" 
   '***************************************

  DoEvents 
  Application.ScreenUpdating = False 
  If Dir(FilePath & FileName) = Empty Then 
      MsgBox "The file " & FileName & " was not found", , "File Doesn't Exist" 
      Exit Sub 
  End If 
  For Row = 1 To NumRows 
      For Column = 1 To NumColumns 
          Address = Cells(Row, Column).Address 
          Cells(Row, Column) = GetData(FilePath, FileName, SheetName, Address) 
          Columns.AutoFit 
      Next Column 
  Next Row 
  ActiveWindow.DisplayZeros = False 
End Sub 


Private Function GetData(Path, File, Sheet, Address) 
  Dim Data$ 
  Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _ 
  Range(Address).Range("A1").Address(, , xlR1C1) 
  GetData = ExecuteExcel4Macro(Data) 
End Function 

Відповіді:


1

ОК, так що я знайшов відповідь .... здається, я не досить добре Google, перш ніж розміщувати, так що вибачення.

У наведеному вище коді, в Private Function GetData(), замінити:

Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _ 
       Range(Address).Range("A1").Address(, , xlR1C1)

з:

Data = "'" & Path & File & "'!" & Address

де Address можна встановити за допомогою a іменемRange значення рядка ... і все добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.