Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :( / 9 сообщений из 9, страница 1 из 1
16.09.2009, 13:37
    #36199037
Shredder2003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
Excel 2003 (важно, не 2007!)
если создать лист с данными, создать сводную таблицу, настроить вывод как нужно из листа с данными.
затем сохранить в формате xml.
переименовать файл средствами ОС, и заново открыть.
дать команду обновить сводную таблицу - в ответ ругнётся: "файл <первоначальное имя файла> не найден!"
т.е. в источниках данных для сводной таблицы в файле xml указывается имя файла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  <PivotTable xmlns="urn:schemas-microsoft-com:office:excel">
..................................
<PTSource>
..................................
    <ConsolidationReference>
     <FileName>[Book1.xml]Sheet1</FileName>
     <Reference>R1C1:R11C5</Reference>
    </ConsolidationReference>
   </PTSource>
  </PivotTable>

вот это: [Book1.xml]Sheet1 = ссылка на вкладку с данными. В неё входит имя файла.
Кто-нибудь знает, как можно сделать так, чтобы ссылка всегда была на текущий открытый файл, а не на имя файла?

P.S. очень нужная вещь это была бы, если бы получилось сделать так.
Ибо юзерам нужны отчёты в различных группировках (5-6 видов) по одним и тем же данным.
думали программно формировать книгу, в один лист ложить тупо все данные, а в других просто настроить сводные таблицы в разных разрезах.
Отчёт выдается через web, те. IE сохраняет его во временную папку с неизвестным заранее именем, поэтому в момент формирования отчёта я никак не могу знать имя файла...
...
Рейтинг: 0 / 0
16.09.2009, 15:15
    #36199326
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
А почему нельзя брать данные прямо из WEB - сделать книгу, где через Web Query тянутся данные, затем из них формировать отчёты?
...
Рейтинг: 0 / 0
17.09.2009, 09:00
    #36200414
Shredder2003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
мысль правильная, но... это OeBS, соответственно безопасность/роли/полномочия (работа через джаву, в т.ч. получение отчётов), и поэтому прямой ссылки на отчёт нет в нём.
ставить рядом другой веб-сервер - неправильно.
...
Рейтинг: 0 / 0
17.09.2009, 09:56
    #36200534
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
Ну попробуй поменять имя макросом (кусок моего кода запроса курсов валют):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
yr = InputBox("Input YYYYMMDD", "DATE", "",  3500 ,  2000 )
If yr <> “” Then
    With Selection.QueryTable
        .Connection = _
        "URL;http://www.bank.lv/excel/valkurlv.php?vdate=" & yr
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    End If
Т.е. запрос обновляешь кнопкой, меняешь адрес (я меняю дату на введённую yr) в ранее созданном query после нажатия кнопки/срабатывания кода.
...
Рейтинг: 0 / 0
17.09.2009, 10:00
    #36200541
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
Да, наверное можно получить кодом full filename текущего открытого файла и его вставить в обновление запроса, попробуй.
...
Рейтинг: 0 / 0
17.09.2009, 14:50
    #36201604
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
Или ещё вариант - макрос в PERSONAL.XLS или в другой открытой книге сохраняет текущий открытый файл как надо тут <FileName>[Book1.xml]Sheet1</FileName>
...
Рейтинг: 0 / 0
02.10.2009, 18:42
    #36230290
Shredder2003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
не получится использовать VBA, так как макросы не сохраняются в формате XML 2003
...
Рейтинг: 0 / 0
04.10.2009, 06:23
    #36231242
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
Варианты:

1. Вручную.
После загрузки XML стать на любую ячейку сводной таблицы.

На панели Сводная таблица выбрать Мастер сводных таблиц .

Нажать кнопку Назад

В поле Диапазон отредактировать имя книги или удалить его вместе с квадратными скобками и путём к текущему каталогу.

2. Автоматически.

Записать приведенный ниже код в модуль ЭтаКнига книги PERSONAL.XLS или в аналогичный модуль новой книги с сохранением её как XLA-надстройки

Передать клиентам, лучше с каким-нибудь инсталлятором.
Код: 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.
26.
27.
28.
29.
30.
31.
32.
' Code of ThisWorkbook (ЭтаКнига) module
' Save as XLA Add-In or put the code into PERSONAL.XLS
Private WithEvents App As Application

' Init App
Private Sub Workbook_Open()
  Set App = Application
End Sub

' Play at each workbook opening
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
  If InStr( 1 , Wb.Name, ".xml",  1 ) >  0  Then FixSourceData Wb
End Sub

' Code to remove wrong xml-workbook reference of the pivot table SourceData
Sub FixSourceData(Wb As Workbook)
  On Error GoTo exit_
  Dim Sh As Worksheet, Pvt As PivotTable, PvtSourceData$, WbName$, i&, j&
  WbName = "[" & ActiveWorkbook.Name & "]"
  For Each Sh In Wb.Worksheets
    For Each Pvt In Sh.PivotTables
      PvtSourceData = Pvt.SourceData
      i = InStr(PvtSourceData, "]")
      If i >  0  Then
        If InStr( 1 , PvtSourceData, WbName,  1 ) =  0  Then
          Pvt.SourceData = IIf(Mid(PvtSourceData,  1 ,  1 ) = "'", "'", "") & Mid(PvtSourceData, i +  1 )
        End If
      End If
    Next
  Next
exit_:
End Sub


На всякий случай надстройка приложена.
...
Рейтинг: 0 / 0
04.10.2009, 06:36
    #36231244
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
По непонятным причинам приложения не прикрепляются.
Выложил надстройку здесь: FixPvtSourceData.zip
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :( / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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