VBA PowerQuery - создание внутри редактора PQ папок с запросами и помещение в нужную определенный запрос, С помощью VBA в PowerQuery создание внутри редактора PQ папок с запросами и помещение в нужную создаваемые запросы
Часто приходится различные запросы при создании помещать внутри редактора PowerQuery в папки запросов "Источник", "Обработка", "Результат". Запрос из папки "Обработка" ссылается на запрос из папки "Источник", а из папки "Результат" на запрос из папки "Обработка". Папки приходится создавать вручную, а создание запросов создаю вот таким макросом:
Скрытый текст
Код
Sub Add_Connecotion_Current_Table()
Dim wb As Workbook
Dim ws As Worksheet
Dim io As ListObject
Dim tName As String
Dim sName As String
Dim sFormula As String
Dim wq As WorkbookQuery
Dim bExists As VbMsgBoxResult
Dim vbAnswer As VbMsgBoxResult
Dim i As Long
Dim dStart As Double
Dim dTime As Double
'Display message box to prompt user to run the macro
vbAnswer = MsgBox("Run Macro?", vbYesNo, "PowerQuery Connect Current Table")
If vbAnswer = vbYes Then
dStart = Timer
tName = ActiveCell.ListObject.Name
Set wb = ActiveWorkbook
Set io = wb.ActiveSheet.ListObjects(tName)
sName = io.Name
'_____________________________First Query - Источник
sFormula = "Excel.CurrentWorkbook(){[Name=""" & sName & """]}[Content]"
'Check if query exists
bExists = False
For Each wq In wb.Queries
If InStr(1, wq.Formula, sFormula) > 0 Then
bExists = True
MsgBox "Current Name of Query already exists", _
vbOKOnly, "Exit Process"
Exit Sub
End If
Next wq
'Add query if it does not exist
If bExists = False Then
'Add query
wb.Queries.Add Name:=sName & "ИСТ", _
Formula:="let" & Chr(13) & "" & Chr(10) & _
" Source = Excel.CurrentWorkbook(){[Name=""" & sName & """]}[Content]" _
& Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Source"
End If
'_____________________________Second Query - Обработка
sFormula = sName & "ИСТ"
'Check if query exists
bExists = False
For Each wq In wb.Queries
If InStr(1, wq.Formula, sFormula) > 0 Then
bExists = True
MsgBox "Current Name of Query already exists", _
vbOKOnly, "Exit Process"
Exit Sub
End If
Next wq
'Add query if it does not exist
If bExists = False Then
'Add query
wb.Queries.Add Name:=sName & "ОБР", _
Formula:="let" & Chr(13) & "" & Chr(10) & _
" Source = " & sName & "ИСТ" _
& Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Source"
End If
'_____________________________Third Query - Результат
sFormula = sName & "ОБР"
'Check if query exists
bExists = False
For Each wq In wb.Queries
If InStr(1, wq.Formula, sFormula) > 0 Then
bExists = True
MsgBox "Current Name of Query already exists", _
vbOKOnly, "Exit Process"
Exit Sub
End If
Next wq
'Add query if it does not exist
If bExists = False Then
'Add query
wb.Queries.Add Name:=sName & "РЕЗ", _
Formula:="let" & Chr(13) & "" & Chr(10) & _
" Source = " & sName & "ОБР" _
& Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Source"
End If
'Calc run time
dTime = Timer - dStart
MsgBox "Connection have been created in " & Format(dTime, "0,0") & " seconds.", _
vbOKOnly, "Process Complete"
End If
End Sub
Хочется дополнить код, чтобы макрос создавал папки и помещал туда запросы определенным образом. Пытался найти в поиске этого форума и в интернете - не нашел. Как хочу видеть конечный результат - в приложенной картинке.
VBA. Userform.ListBox - ошибка вылета Excel и "Out of memory", Урок курса VBA, в котором автор через Userform удаляет записи из умной таблицы, что приводит к вылету всего Excel
Сразу технические характеристики системы: i7, SSD, 24 Гб ОЗУ, WIN 10 x64, Office 365 x64, Excel версия 2204 Сборка 16.0.15128.20210.
Обучаюсь курсу VBA, где автор создает через Userform "FmInputMaster" добавление записи в умную таблицу на листе Masterdata, и затем удаление выбранной записи удалением строки из умной таблицы с того же листа через Userform "FmViewMaster" commandbutton "Delete Record".
Уже во время просмотра видео сам автор делает указание, что в конечной версии файла он отказался от этой кнопки и её кода "Delete Record" из-за возникающей ошибки.
И действительно в какой момент вроде всё работает: запись добавляется, удаляется и на какой-то раз удаления (порой уже на 3-4й), возникает ошибка:
Создал для себя инструмент планирования остатков и маршрутов в зависимости от наличия остатков на складе на дату, прихода/расхода на дату, с учетом проставления дат по маршрутам по разным товарам по разным заказам. Всё это на основе 3-х таблиц. Но не могу сделать, чтобы я мог проставить на одну дату несколько маршрутов и при этом в таблице учета остатков эти маршруты правильно отображались и суммировали расход на дату. Конечно бы хотелось через стандартные функции это можно было сделать, но если предложите макрос - думаю разберусь.
Только обрадовался функции VLOOKUP2, что может подхватить значения, где больше 255 символов, как тут же мне выдал ошибку если в тексте есть открывающаяся квадратная скобка "[". Файл прикрепил.
Выручайте! =) Очень нужна эта функция. Удалить кругом скобки не могу, т.к. работаю с разными отчетами и периодически они обновляются.