powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
9 сообщений из 9, страница 1 из 1
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36199037
Фотография Shredder2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36199326
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему нельзя брать данные прямо из WEB - сделать книгу, где через Web Query тянутся данные, затем из них формировать отчёты?
...
Рейтинг: 0 / 0
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36200414
Фотография Shredder2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысль правильная, но... это OeBS, соответственно безопасность/роли/полномочия (работа через джаву, в т.ч. получение отчётов), и поэтому прямой ссылки на отчёт нет в нём.
ставить рядом другой веб-сервер - неправильно.
...
Рейтинг: 0 / 0
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36200534
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну попробуй поменять имя макросом (кусок моего кода запроса курсов валют):

Код: 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
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36200541
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, наверное можно получить кодом full filename текущего открытого файла и его вставить в обновление запроса, попробуй.
...
Рейтинг: 0 / 0
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36201604
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или ещё вариант - макрос в PERSONAL.XLS или в другой открытой книге сохраняет текущий открытый файл как надо тут <FileName>[Book1.xml]Sheet1</FileName>
...
Рейтинг: 0 / 0
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36230290
Фотография Shredder2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не получится использовать VBA, так как макросы не сохраняются в формате XML 2003
...
Рейтинг: 0 / 0
Excel, xml-worksheet, сводная таблица в нём жёстко привязывается к имени файла :(
    #36231242
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты:

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


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