VBA Excel

  • Привет всем,


    есть ли у нас на форуме специалисты по VBA? помощь нужна. Написал небольшую програмку и в одном месте немогу немного разобраться.

  • да особых секретов нет, кому может пригодится ешё.


    задача такая :
    я получаю от клиента таблицу в Excel. Они эти данные вытащили с SAP и передали мне. У меня нет доступа к этой системе SAP.


    вот примерно так она выглядит:

    Исходный код
    PLANTID   DIVISIONID   PARAMID                 VVALUE     DEFINITION
       1           2      AdminRoleID              22            AdminRole
       1            2    DefaultDateTo             31.12.9999   Auslaufzeitpunkt
       1            2    DefaultDivisionID         2             ID (Division)
       1            2    DefaultPlantID            1             ID (Plant)
       1            2    DefaultRoleID             1             Defaultrolle
       1            2    DimIdCarProject           9             DimID Carproject
       1            2    DimIdYear                 19            Id Dimension  year


    теперь мне надо эти данные занести в наш ДБ. Т.е. получается надо для каждой строки писать Insert - Statments . Таблица может иметь до 3000 записей и в ручную это прописывать - гемарно.
    Для этого я написал небольшой Макро. Который это делает автоматически. И выносит готовые " Inserts" в отдельный файл. Всё работает,
    за исключением что в этом файле каждя строка наченается и заканчевается с ковычками ( Hochkomma : " das ist mein ausgabe string " ) . немогу разобраться как эти ковычи убрать. ...


    вот прога:



    и 2: дополнительно хотел бы ещё теже Inserts" выдать в соседнем столбце . (т.е. в 6 - ом столбце (Spalte F) )
    для этого я делаю следущее:

    Цитата

    Sheets("Sheet1").Range("F4:F7").value = sqlString


    Тут получется что он прописывает этот столбец, но только последними данными. т.е. в столбе Ф у меня стоит:

    SQL
    INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' );
    INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' );
    INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' );
    INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' );
    INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' );


    есть какие либо идеи?


    спасибо за ранее.

  • вторую проблему решил.
    а вот с ковычками что-то не как. Есть одна мысль зделать подсчёт всех знаков во всём стринге и тупо вырезать первый и последний знак. Но как - то .. не нравится мне этот ход решения, плюс прога усложняется...
    должно что-то проще быть...

  • если офис после 2000, то есть гдет-то функция [replace], думаю она тебе поможет...


    обра3ец:
    String Replacement
    This example shows how to do string replacement in Visual Basic.



    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

    NULL

  • да спасибо , вечером вчера разобрался. как я и предпологал , всё еллемтарное - просто. Надо было при выдаче вместо "Write" - " Print" использовать. А за первый линк спасибо, можно кое что там другого посмотреть. Про десертик, надо вечером глянуть ... на работе заблокированно.