Можете ли вы создать динамические формулы запроса мощности в VBA?

Я использовал средство записи макросов в Excel, чтобы импортировать таблицу из PDF в редактор Power Query, а затем экспортировать преобразованную таблицу в Excel.

Я хочу повторно использовать этот код для других подобных таблиц PDF, которые идентичны по структуре.

Проблема в том, что столбец «Сальдо стоимости» будет иметь другую дату в каждой таблице PDF. Я хотел бы использовать динамическую переменную для обработки обновленной даты. Конкатенация, которую я использовал с переменной «RefDate» в приведенном ниже коде, не работает:

Подмакрос1()

RefDate = "05-05-22"

ActiveWorkbook.Queries.Add Name: = "Table001 (Page 1)", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    Source = Pdf.Tables(File.Contents(""C:\Users\MyPDF.pdf""), [Implementation = ""1.3""])," & Chr(13) & "" & Chr(10) & "    Table001 = Source{[Id = ""Table001""]}[Data]," & Chr(13) & "" & Chr(10) & "    #""Promoted Headers"" = Table.PromoteHeaders(Table001, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""Ac" & _
    "count Code"", type text}, {""Ccy"", type text}, {""Book Balance"", type number}, {""Value Balance#(lf)"" & RefDate, type number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""

Конец сабвуфера

Как я могу создать динамическую строку в этом типе вложенного кода?

Спасибо!

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете видеть в своем посте, что имя переменной зеленое. Это визуальный индикатор того, что он находится внутри строки. Вы должны разбить строку и объединить переменную. Сравните следующие примеры:

MyString = "The value is MyVar."

MyString = "The value is " & MyVar & "."

Возможно, вам потребуется преобразовать файл PDF в текстовый файл, а затем импортировать данные из текстового файла, и тогда... у вас будет гораздо больше контроля над процессом импорта данных. Заинтересованы ли вы в таком решении?

ASH 06.05.2022 03:56

Строка в коде, который я представил, немного сложнее, чем я знаю, как бы вы разбили эту конкретную строку?

Adam 06.05.2022 22:51

@ Адам, я не совсем уверен, как выглядит твой стол, но тебе нужно изменить {""Value Balance#(lf)"" & RefDate, type number}, чтобы он больше походил на {""" & Something & RefDate & """, type number}. Тройные кавычки, чтобы строка была закрыта, но также добавляла фактическую метку «. Вы также можете обернуть RefDate внутри функции Format, чтобы вы могли контролировать, как она преобразуется в строку. Например, Format(RefDate, "yyyy-MM-dd"), чтобы убедиться, что она представлена ​​​​в этой форме.

Toddleson 06.05.2022 23:55

@Toddleson, немного поигравшись с компилятором codechef.com, я смог определить начало и конец родительской строки. Вы были правы, используя тройные кавычки, так как двойные кавычки в фигурных скобках должны были появиться в родительской строке: " = Table.TransformColumnTypes(#""Promoted Headers"",{{""Account Code"", type text}, {""Ccy"", type text}, {""Book Balance"", type number}, {" & """Value Balance#(lf)" & RefDate & """, type number}})"

Adam 09.05.2022 18:11

Итак, для окончательного решения мне пришлось сделать одинарную кавычку сразу после фигурной скобки, чтобы разбить родительскую строку, а затем объединить строку, начинающуюся с двойных кавычек, затем переменную, а затем еще одну пару двойных кавычек: " PARENT STRING {" & """Value Balance#(lf)" & RefDate & """, type number}})" Или : "PARENT STRING" & """Nested String" & Variable & """ PARENT STRING"

Adam 09.05.2022 18:14

Другие вопросы по теме