Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Excel -> Power Query -> Script M (может кто работал с этим)

Добрый день,
встала задача по изменению ссылок на разные файлы в excel:
их я нашел 4 варианта
1. ссылки в макросах
2. ссылки в Листах
3. внешние ссылки
4. технология power query  в скриптах script M.
Вот к последним ссылкам ни как не могу получить доступ и прочитать скрипты M, чтобы потом внутри смог бы изменить ссылки.
находяться они в файле vbaProject.bin ( там же где и обычные макросы, но не получается получить их) Есть ли у кого опыт в получении таких данных?

приведу пример чтения и замены ссылок в простых макросов

Спойлер

private void WorkMacro(Excel.Workbook xlBook, Dictionary<string,string> dicM)
{
int count = 0;

if (xlBook.HasVBProject)
{
VBProject project = xlBook.VBProject;

foreach (VBComponent component in project.VBComponents)
{
if (component.Type == vbext_ComponentType.vbext_ct_StdModule ||
component.Type == vbext_ComponentType.vbext_ct_ClassModule ||
component.Type == vbext_ComponentType.vbext_ct_MSForm)
{
CodeModule module = component.CodeModule;

string[] lines = module.get_Lines(1, module.CountOfLines).Split(
new string[] { "\r\n" }, StringSplitOptions.None);

for (int i = 0; i < lines.Length; i++)
{

foreach (var dM in dicM)
{
if (lines[i].Replace("\\", "/").Contains(dM.Key))
{
lines[i] = lines[i].Replace(dM.Key.Replace("/", "\\"), dM.Value.Replace("/", "\\"));
module.ReplaceLine(i + 1, lines[i]);
count++;
}
}
}
}
}
}
if (count > 0)
{

Invoke(new System.Action(() =>
{
textBox8.AppendText($"Произведено замен {count} строк" + Environment.NewLine);
}));
//textBox8.Text += $"Произведено замен {count} строк" + Environment.NewLine;
xlBook.Save();
}
}


P/S
Хочу поблагодарить Хачатура, за его работу по обучению. Спасибо.