[ID CC2024] Прикрепление определенных ячеек Excel к текстовому фрейму

  • Автор темы Автор темы KegP
  • Дата начала Дата начала

Не по теме:

Твмать... :))
Код:
Sub saveAsCSVUnicode()
    If fName = "" Then
    Dim AW As Window
    Set AW = ActiveWindow
    Dim wb
    Set wb = ActiveWorkbook
    fName = wb.Path & "\" & getNameFile(wb.Name)
    End If
    ActiveWorkbook.SaveAs fName & ".csv", FileFormat:=xlUnicodeText, _
    CreateBackup:=False, local:=True
    'ActiveWorkbook.Close False
End Sub

 

Не по теме:

Твмать... :))
Код:
Sub saveAsCSVUnicode()
    If fName = "" Then
    Dim AW As Window
    Set AW = ActiveWindow
    Dim wb
    Set wb = ActiveWorkbook
    fName = wb.Path & "\" & getNameFile(wb.Name)
    End If
    ActiveWorkbook.SaveAs fName & ".csv", FileFormat:=xlUnicodeText, _
    CreateBackup:=False, local:=True
    'ActiveWorkbook.Close False
End Sub

Я тупенький...
Это макрос для Exel'я, что бы сохранённую csv'шку кушал Indesign?
 
Впрочем выдрал из другого кода, чутка лишнего прихватил
Код:
Sub saveAsCSVUnicode()
    Dim wb
    Set wb = ActiveWorkbook
    fName = wb.Path & "\" & getNameFile(wb.Name)
    ActiveWorkbook.SaveAs fName & ".csv", FileFormat:=xlUnicodeText, _
    CreateBackup:=False, local:=True
    'ActiveWorkbook.Close False
End Sub
Убрал хвосты
 
Такс, всем спасибо.
Вариант реализации я понял и он будет использоваться, если не найдён будет другой.
Очень странно, что ещё никто не задавался таким же вопросом, как и я.
А через скрипт для Indesign можно реализовать подобное?
В идеале, например, в первой колонке базы для каждого продукта будет стоять уникальный id, который будет привязан к конкретному документу Indesign.
 
Впрочем выдрал из другого кода, чутка лишнего прихватил
Код:
Sub saveAsCSVUnicode()
    Dim wb
    Set wb = ActiveWorkbook
    fName = wb.Path & "\" & getNameFile(wb.Name)
    ActiveWorkbook.SaveAs fName & ".csv", FileFormat:=xlUnicodeText, _
    CreateBackup:=False, local:=True
    'ActiveWorkbook.Close False
End Sub
Убрал хвосты
Спасибо ещё раз...
 
А через скрипт для Indesign можно реализовать подобное?
Думаю да :) Но хотелка странная на самом деле... Ну дату можно менять все время... что еще можно менять каждый раз? Состав? :)) Нет понимания, нет и простого решения... :)
 
Думаю да :) Но хотелка странная на самом деле... Ну дату можно менять все время... что еще можно менять каждый раз? Состав? :)) Нет понимания, нет и простого решения... :)
Совершенно верно: состав, корректировка описания, используемые активы и т.п. Заказчик стабильно раз-два в год вносит изменения во всей продукции. Это касается, в частности, косметической продукции. Самое главное - доступ заказчика ко всем описаниям товара. И что бы не в нескольких местах эти правки вносить, а в одном.
 
через скрипт для Indesign
JavaScript:
#target indesign
var doc = app.activeDocument;
var pathFile = doc.extractLabel("pathFile");
var file = File(pathFile).openDlg("Select a table with data in .csv format", "*.csv");

if (file) {
    doc.insertLabel ("pathFile", file);
    file.open("r");
    var row = file.read().split('\n');
    file.close;
};

if (row) {
    app.generalPreferences.pageNumbering = PageNumberingOptions.SECTION;
    app.doScript(main, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, 'InsertDataTable');
};

function main(){
    app.findGrepPreferences = NothingEnum.nothing; 
    app.changeGrepPreferences = NothingEnum.nothing;   
    app.findGrepPreferences.findWhat = "<<\\d+:\\d+>>";
    var findResults = doc.findGrep();
    if (findResults.length > 0) {
        var idTextArr = [];
        for ( var i = 0; i < findResults.length; i++ ) {
            idTextArr.push(findResults[i].contents);
        };
        idTextArr = arrayCompress(idTextArr);
        for ( var i = 0; i < idTextArr.length; i++ ) {
            var id = idTextArr[i].replace(/<</g, "").replace(/>>/g, "");
            var r = --id.split(":")[1];
            var c = --id.split(":")[0];
            app.findGrepPreferences.findWhat = idTextArr[i];
            app.changeGrepPreferences.changeTo = row[r].split('\t')[c];
            doc.changeGrep();
        };
    } else { alert ("The replaced sections of text in the format\n<<ColumnNumber:RowNumber>> not found")};
};
    
function arrayCompress(array){
 var str = array.sort().join('\r')+'\r';
 str = str.replace(/([^\r]+\r)(\1)+/g,'$1');
 str = str.replace(/\r$/,'');
 return str.split('\r');
};
 

Вложения

Спасибо ещё раз...
Такое сообщение вылезает при запуске макроса в Exel'е..
123.png
 
JavaScript:
#target indesign
var doc = app.activeDocument;
var pathFile = doc.extractLabel("pathFile");
var file = File(pathFile).openDlg("Select a table with data in .csv format", "*.csv");

if (file) {
    doc.insertLabel ("pathFile", file);
    file.open("r");
    var row = file.read().split('\n');
    file.close;
};

if (row) {
    app.generalPreferences.pageNumbering = PageNumberingOptions.SECTION;
    app.doScript(main, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, 'InsertDataTable');
};

function main(){
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;  
    app.findGrepPreferences.findWhat = "<<\\d+:\\d+>>";
    var findResults = doc.findGrep();
    if (findResults.length > 0) {
        var idTextArr = [];
        for ( var i = 0; i < findResults.length; i++ ) {
            idTextArr.push(findResults[i].contents);
        };
        idTextArr = arrayCompress(idTextArr);
        for ( var i = 0; i < idTextArr.length; i++ ) {
            var id = idTextArr[i].replace(/<</g, "").replace(/>>/g, "");
            var r = --id.split(":")[1];
            var c = --id.split(":")[0];
            app.findGrepPreferences.findWhat = idTextArr[i];
            app.changeGrepPreferences.changeTo = row[r].split('\t')[c];
            doc.changeGrep();
        };
    } else { alert ("The replaced sections of text in the format\n<<ColumnNumber:RowNumber>> not found")};
};
   
function arrayCompress(array){
 var str = array.sort().join('\r')+'\r';
 str = str.replace(/([^\r]+\r)(\1)+/g,'$1');
 str = str.replace(/\r$/,'');
 return str.split('\r');
};
Ухты ж, мне уже нравится!.. :)
Уже спасибо, если я правильно понял что это.
При открытии файла indesign вылезает такая ошибка.
Не находит моего старого файла - descritpion_text-unicode.txt
Что именно подсунуть Data Merge? Или вообще удалить привязку?
 

Вложения

  • 1.png
    1.png
    6.4 КБ · Просм.: 13
  • 2.png
    2.png
    3.6 КБ · Просм.: 11
Такое сообщение вылезает при запуске макроса в Exel'е..
Посмотреть вложение 170199
Это еще добавьте :) Я уж и забыл как все организовано... У меня в PERSONAL.XLSB еще куча функций висит...
Код:
Function getNameFile(nf As String) As String
    If InStr(nf, ".") > 0 Then
        nf = Left(nf, InStr(nf, ".") - 1)
    End If
    getNameFile = nf
End Function
 
Это еще добавьте :) Я уж и забыл как все организовано... У меня в PERSONAL.XLSB еще куча функций висит...
Код:
Function getNameFile(nf As String) As String
    If InStr(nf, ".") > 0 Then
        nf = Left(nf, InStr(nf, ".") - 1)
    End If
    getNameFile = nf
End Function
Вс ок, с этим добавлением работает. Спасибо!
 
Нет, просто запустите скрипт, там все просто, как 2 копейки.
Запустил, подсунул .csv.
Сразу подставились данные из второй строчки.
А как мне подсунуть данные, скажем, из 3-ей строчки Exel'я?
 
Последнее редактирование: