6i Forms Word 2003 Mail Merge

We have mail merge working from 6i forms with Word 97. We are going to Word 2003, but I am having trouble getting the mail merge to work. The example on Metalink, note 297410.1, seems to be directed at data files in row format. Our data file is in table format. Below is part of our current working code. When it is run in 2003, the merge is not performed. I do not receive any errors. Any suggestions or examples would be greatly appreciated. Thank you.
PROCEDURE create_AL01 IS
word_handle ole2.obj_type;
docs ole2.obj_type;
doc ole2.obj_type;
tables ole2.obj_type;
range ole2.obj_type;
sel ole2.obj_type;
NewMailMerge ole2.obj_type;
arglist ole2.list_type;
i number;
<cursor definition>
BEGIN
<count of letters for loop>
word_handle := ole2.create_obj('word.application');
ole2.set_property(word_handle,'Visible',1);
docs := ole2.Get_Obj_Property(word_handle,'Documents');
ole2.invoke(docs,'Add');
sel := ole2.get_obj_property(word_handle,'Selection');
range := ole2.get_obj_property(sel,'Range');
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
tables := ole2.get_obj_property(doc,'Tables');
arglist :=ole2.create_arglist;
ole2.add_arg_obj(arglist,range);
ole2.add_arg(arglist,i);
ole2.add_arg(arglist,7);
ole2.invoke(tables,'Add',arglist);
ole2.destroy_arglist(arglist);
FOR AL01_rec in AL01_cur LOOP
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.sys_date);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.name);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.mail_address);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.mail_cityst);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.salute);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.test_date);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
ole2.invoke(sel,'MoveRight');
ole2.invoke(sel,'MoveRight');
end loop;
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01SF.DOC');
ole2.invoke(doc, 'SaveAs', arglist);
ole2.destroy_arglist(arglist);
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01PRI.DOC');
ole2.invoke(docs, 'Open', arglist);
ole2.destroy_arglist(arglist);
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
arglist:=OLE2.CREATE_ARGLIST;
OLE2.INVOKE(doc, 'Activate', arglist);
OLE2.DESTROY_ARGLIST(arglist);
NewMailMerge :=OLE2.GET_OBJ_PROPERTY(doc, 'MailMerge');
arglist:=OLE2.CREATE_ARGLIST;
OLE2.INVOKE(NewMailMerge, 'Execute',arglist);
OLE2.DESTROY_ARGLIST(arglist);
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01MF.DOC');
ole2.invoke(doc, 'SaveAs', arglist);
ole2.destroy_arglist(arglist);
arglist := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(arglist,0);
OLE2.Invoke(doc, 'PrintOut', arglist);
OLE2.Destroy_Arglist(arglist);
OLE2.INVOKE(docs,'Close');
OLE2.INVOKE(word_handle,'QUIT');
END;

We have mail merge working from 6i forms with Word 97. We are going to Word 2003, but I am having trouble getting the mail merge to work. The example on Metalink, note 297410.1, seems to be directed at data files in row format. Our data file is in table format. Below is part of our current working code. When it is run in 2003, the merge is not performed. I do not receive any errors. Any suggestions or examples would be greatly appreciated. Thank you.
PROCEDURE create_AL01 IS
word_handle ole2.obj_type;
docs ole2.obj_type;
doc ole2.obj_type;
tables ole2.obj_type;
range ole2.obj_type;
sel ole2.obj_type;
NewMailMerge ole2.obj_type;
arglist ole2.list_type;
i number;
<cursor definition>
BEGIN
<count of letters for loop>
word_handle := ole2.create_obj('word.application');
ole2.set_property(word_handle,'Visible',1);
docs := ole2.Get_Obj_Property(word_handle,'Documents');
ole2.invoke(docs,'Add');
sel := ole2.get_obj_property(word_handle,'Selection');
range := ole2.get_obj_property(sel,'Range');
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
tables := ole2.get_obj_property(doc,'Tables');
arglist :=ole2.create_arglist;
ole2.add_arg_obj(arglist,range);
ole2.add_arg(arglist,i);
ole2.add_arg(arglist,7);
ole2.invoke(tables,'Add',arglist);
ole2.destroy_arglist(arglist);
FOR AL01_rec in AL01_cur LOOP
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.sys_date);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.name);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.mail_address);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.mail_cityst);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.salute);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
arglist :=ole2.create_arglist;
ole2.add_arg(arglist, AL01_rec.test_date);
ole2.invoke(sel, 'TypeText', arglist);
ole2.destroy_arglist(arglist);
ole2.invoke(sel,'MoveRight');
ole2.invoke(sel,'MoveRight');
ole2.invoke(sel,'MoveRight');
end loop;
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01SF.DOC');
ole2.invoke(doc, 'SaveAs', arglist);
ole2.destroy_arglist(arglist);
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01PRI.DOC');
ole2.invoke(docs, 'Open', arglist);
ole2.destroy_arglist(arglist);
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
arglist:=OLE2.CREATE_ARGLIST;
OLE2.INVOKE(doc, 'Activate', arglist);
OLE2.DESTROY_ARGLIST(arglist);
NewMailMerge :=OLE2.GET_OBJ_PROPERTY(doc, 'MailMerge');
arglist:=OLE2.CREATE_ARGLIST;
OLE2.INVOKE(NewMailMerge, 'Execute',arglist);
OLE2.DESTROY_ARGLIST(arglist);
doc := ole2.get_obj_property(word_handle,'ActiveDocument');
arglist := ole2.create_arglist;
ole2.add_arg(arglist, 'C:\PROGRAMS\AL01MF.DOC');
ole2.invoke(doc, 'SaveAs', arglist);
ole2.destroy_arglist(arglist);
arglist := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(arglist,0);
OLE2.Invoke(doc, 'PrintOut', arglist);
OLE2.Destroy_Arglist(arglist);
OLE2.INVOKE(docs,'Close');
OLE2.INVOKE(word_handle,'QUIT');
END;

Similar Messages

  • OLE2 from Forms 10g to Microsoft Word 2007 Mail Merge

    We have an Oracle Form that allows the user to print off information on the Form to a Microsoft Word document via OLE2 and mail merging; Forms version is 10.1.2.0.2 as it the version of OAS (from Linux Redhat AS4). This currently works fine if the user has Microsoft Word 2000, but since a recent upgrade to Office 2003 and now in some cases 2007, this functionality doesn't work. The JInitiator Console displays the following error messages:
    Oracle JInitiator: Version 1.3.1.22
    Using JRE version 1.3.1.22-internal Java HotSpot(TM) Client VM
    User home directory = C:\Documents and Settings\jovinc
    Proxy Configuration: Manual Configuration
    Proxy: stpproxy:80
    Proxy Overrides: 172.27*,172.28*,10*,10.*,intranet.fnfis.com*,ljtcapd05.fnfis.com,ukbiprodlx01,ukbiprodlx01.certegy.com,ukbiprodlx02*,ukbiprodlx02.certegy.com*
    JAR cache enabled
    Location: C:\Documents and Settings\jovinc\Oracle Jar Cache
    Maximum size: 50 MB
    Compression level: 0
    c: clear console window
    f: finalize objects on finalization queue
    g: garbage collect
    h: display this help message
    l: dump classloader list
    m: print memory usage
    q: hide console
    s: dump system properties
    t: dump thread list
    x: clear classloader cache
    0-5: set trace level to <n>
    Loading http://ukbiprodlx01.certegy.com:7778/forms/java/frmall_jinit.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/java/frmrwinteg.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/java/frmwebutil.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/java/jacob.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/CTYCommonLive/CommonImages.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/CTYLogonLive/LogonImages.jar from JAR cache
    Loading http://ukbiprodlx01.certegy.com:7778/forms/CTYXplorerLive/XplorerImages.jar from JAR cache
    proxyHost=null
    proxyPort=0
    connectMode=HTTP, native.
    Forms Applet version is : 10.1.2.0
    2009-Aug-19 11:30:43.785 ERROR>WUO-714 [OleFunctions.setExceptionValues()] Unable to get the last OLE Error details; Exception
    null
    2009-Aug-19 11:30:43.785 ERROR>WUO-707 [OleFunctions.invoke_obj()] Unable to invoke Method: TypeText; Exception
    com.jacob.com.ComFailException: A COM exception has been encountered:
    At Invoke of: TypeText
    Description: Type mismatch.
    2009-Aug-19 11:30:44.848 ERROR>WUO-707 [OleFunctions.invoke_obj()] Unable to invoke Method: Execute; Exception
    com.jacob.com.ComFailException: Invoke of: Execute
    Source: Microsoft Word
    Description: This method or property is not available because the document is not a mail merge main document.
    The below code is used within the Form when they invoke the 'Print' function:
    PROCEDURE PR_print_invoice
    IS
    l_t_application CLIENT_OLE2.OBJ_TYPE;
    l_t_documents CLIENT_OLE2.OBJ_TYPE;
    l_t_source_doc CLIENT_OLE2.OBJ_TYPE;
    l_t_letter_doc CLIENT_OLE2.OBJ_TYPE;
    l_t_merge_doc CLIENT_OLE2.OBJ_TYPE;
    l_t_mail_merge CLIENT_OLE2.OBJ_TYPE;
    l_t_selection CLIENT_OLE2.OBJ_TYPE;
    l_t_args CLIENT_OLE2.LIST_TYPE;
    l_t_args_move_right CLIENT_OLE2.LIST_TYPE;
    l_v_sourcefile VARCHAR2(2000);
    l_v_letter VARCHAR2(2000);
    l_v_mergefile VARCHAR2(2000);      
    l_v_destination_directory VARCHAR2(2000);
    l_v_source_directory VARCHAR2(2000);
    l_n_ok NUMBER;
    l_n_tax NUMBER;
    l_n_total_value NUMBER;
    l_n_total_tax NUMBER;
    l_v_country VARCHAR2(3);     
    l_t_bca_client_address_line1 bill_client_address.bca_client_address_line1%TYPE;
    l_t_bca_client_address_line2 bill_client_address.bca_client_address_line2%TYPE;
    l_t_bca_client_address_line3 bill_client_address.bca_client_address_line3%TYPE;
    l_t_bca_client_address_line4 bill_client_address.bca_client_address_line4%TYPE;
    l_t_bca_client_address_line5 bill_client_address.bca_client_address_line5%TYPE;
    l_t_bca_client_address_line6 bill_client_address.bca_client_address_line6%TYPE;
    l_t_bcl_client_name bill_client.bcl_client_name%TYPE;
    l_t_bcl_client_id bill_client.bcl_client_id%TYPE;
    l_t_trt_rate tax_rate.trt_rate%TYPE;     
    l_t_rli_description_1 reference_list.rli_description_1%TYPE;
    l_n_item_count NUMBER := 0;
    l_b_debug BOOLEAN;
    l_b_ok BOOLEAN;
    l_n_bookmark NUMBER := 0;
    l_n_counter PLS_INTEGER;
    CURSOR l_cur_client( p_ti_bcl_seq_num IN bill_client.bcl_seq_num%TYPE )
    IS
    SELECT bcl_client_id
    , bcl_client_name
    FROM bill_client
    WHERE bcl_seq_num = p_ti_bcl_seq_num
    CURSOR l_cur_client_address( p_ti_bcl_seq_num IN bill_client.bcl_seq_num%TYPE )
    IS
    SELECT bca_client_address_line1
    , bca_client_address_line2
    , bca_client_address_line3
    , bca_client_address_line4
    , bca_client_address_line5
    , bca_client_address_line6
    FROM bill_client_address bca
    , role
    WHERE bca_bcl_seq_num = p_ti_bcl_seq_num
    AND rol_ref_type = 'INVPOINT'
    AND rol_bcl_seq_num = p_ti_bcl_seq_num
    AND rol_bca_seq_num = bca_seq_num
    CURSOR l_cur_items( p_ti_mih_seq_num IN manual_invoice_header.mih_seq_num%TYPE )
    IS
    SELECT mil_tco_seq_num
    , mil_value
    , mil_description
    , mil_quantity
    , rownum
    FROM manual_invoice_line mil
    WHERE mil_mih_seq_num = p_ti_mih_seq_num
    CURSOR l_cur_count_items( p_ti_mih_seq_num IN manual_invoice_header.mih_seq_num%TYPE )
    IS
    SELECT count(*)
    FROM manual_invoice_line
    WHERE mil_mih_seq_num = p_ti_mih_seq_num
    CURSOR l_cur_tax_rate( p_ti_tco_seq_num IN tax_rate.trt_tco_seq_num%TYPE
    , p_ti_mih_invoice_date manual_invoice_header.mih_invoice_date%TYPE )
    IS
    SELECT trt_rate
    FROM tax_rate
    WHERE trt_tco_seq_num = p_ti_tco_seq_num
    AND p_ti_mih_invoice_date BETWEEN trt_effective_date AND NVL( trt_effective_end_date, p_ti_mih_invoice_date )
    CURSOR l_cur_ref_list( p_ti_rli_code reference_list.rli_code%TYPE )
    IS
    SELECT rli_description_1
    FROM reference_list
    WHERE rli_rty_code = 'INTYP'
    AND rli_bcy_seq_num = NVL( :GLOBAL.bcy_seq_num, 1 )
    AND rli_code = p_ti_rli_code
    CURSOR l_cur_country( p_ti_bcy_seq_num bill_country.bcy_seq_num%TYPE )
    IS
    SELECT bcy_short_name
    FROM bill_country
    WHERE bcy_seq_num = p_ti_bcy_seq_num
    PROCEDURE PR_Insert_Cell( p_vi_text IN VARCHAR2 )
    IS
    l_n_bookmark NUMBER := 0;
    BEGIN
    l_n_bookmark := 1;
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.ADD_ARG( l_t_args, p_vi_text );
    CLIENT_OLE2.INVOKE( l_t_selection, 'TypeText', l_t_args);
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    EXCEPTION
    WHEN FORM_TRIGGER_FAILURE
    THEN
    RAISE;
    WHEN OTHERS
    THEN
    PA_lib_msg.PR_others_exception( 'PA_hci_misc.PR_print_invoice.PR_insert_cell', l_n_bookmark );
    END;
    BEGIN
    l_n_bookmark := 1;
    SYNCHRONIZE;
    l_n_bookmark := 2;
    OPEN l_cur_country( :GLOBAL.bcy_seq_num );
    FETCH l_cur_country INTO l_v_country;
    CLOSE l_cur_country;
    -- Determine invoice names and locations and fetch them from the server
    l_n_bookmark := 3;
    l_v_sourcefile := pa_lib_security.fn_fetch_environment( 'ManualInvoiceSourceFile' );
    l_v_letter := pa_lib_security.fn_fetch_environment( l_v_country || 'ManualInvoiceMergeFile' );
    l_v_source_directory := pa_lib_security.fn_fetch_environment( 'SourceManualInvoiceDirectory' );
    l_v_destination_directory := pa_lib_security.fn_fetch_environment( 'DestinationManualInvoiceDir' );
    l_b_debug := ( pa_lib_security.fn_fetch_environment( 'ManualInvoiceDebug' ) = 'Y' );
    l_b_ok := webutil_file_transfer.as_to_client( l_v_destination_directory||l_v_sourcefile, l_v_source_directory||l_v_sourcefile );
    l_b_ok := webutil_file_transfer.as_to_client( l_v_destination_directory||l_v_letter, l_v_source_directory||l_v_letter );
    l_n_bookmark := 4;
    IF ( :SYSTEM.FORM_STATUS = 'CHANGED' )
    THEN
    l_n_bookmark := 5;
    DO_KEY('commit_form');
    END IF;
    l_n_bookmark := 6;
    OPEN l_cur_count_items( :blk_manual_inv_header.mih_seq_num );
    FETCH l_cur_count_items INTO l_n_item_count;
    CLOSE l_cur_count_items;
    IF ( l_n_item_count = 0 )
    THEN
    pa_lib_msg.pr_message_alert( 'STB', -119 );
    RETURN;
    END IF;
    l_n_bookmark := 7;
    SET_APPLICATION_PROPERTY( CURSOR_STYLE, 'BUSY' );
    -- Start Word
    l_n_bookmark := 8;
    l_t_application := CLIENT_OLE2.CREATE_OBJ( 'Word.Application' );
    l_t_documents := CLIENT_OLE2.GET_OBJ_PROPERTY( l_t_application, 'Documents' );
    IF ( l_b_debug )
    THEN
    CLIENT_OLE2.SET_PROPERTY( l_t_application, 'Visible', 1 );
    END IF;
    -- Open source file
    l_n_bookmark := 9;
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.ADD_ARG( l_t_args, l_v_destination_directory||l_v_sourcefile );
    l_t_source_doc := CLIENT_OLE2.INVOKE_OBJ( l_t_documents, 'Open', l_t_args );
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    -- Populate source file with invoice items
    l_n_bookmark := 10;
    OPEN l_cur_client( :parameter.p_bcl_seq_num );
    FETCH l_cur_client INTO l_t_bcl_client_id, l_t_bcl_client_name;
    IF ( l_cur_client%NOTFOUND )
    THEN
    CLOSE l_cur_client;
    pa_lib_msg.pr_message_alert( 'STB', -121 );
    END IF;
    CLOSE l_cur_client;
    l_n_bookmark := 11;
    OPEN l_cur_client_address( :parameter.p_bcl_seq_num );
    FETCH l_cur_client_address INTO l_t_bca_client_address_line1
    , l_t_bca_client_address_line2
    , l_t_bca_client_address_line3
    , l_t_bca_client_address_line4
    , l_t_bca_client_address_line5
    , l_t_bca_client_address_line6;
    IF ( l_cur_client_address%NOTFOUND )
    THEN
    CLOSE l_cur_client_address;
    pa_lib_msg.pr_message_alert( 'STB', -122 );
    END IF;
    CLOSE l_cur_client_address;
    l_n_bookmark := 12;
    OPEN l_cur_ref_list( :blk_manual_inv_header.mih_invoice_type );
    FETCH l_cur_ref_list INTO l_t_rli_description_1;
    IF ( l_cur_ref_list%NOTFOUND )
    THEN
    CLOSE l_cur_ref_list;
    pa_lib_msg.pr_message_alert( 'STB', -123 );
    END IF;
    CLOSE l_cur_ref_list;
    -- Move to first data column
    l_n_bookmark := 13;
    l_t_selection := CLIENT_OLE2.GET_OBJ_PROPERTY( l_t_application, 'Selection' );
    l_t_args_move_right := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.ADD_ARG( l_t_args_move_right, 12 );
    CLIENT_OLE2.ADD_ARG( l_t_args_move_right, 1 );
    CLIENT_OLE2.ADD_ARG( l_t_args_move_right, 0 );
    FOR l_n_counter IN 1 .. 19
    LOOP
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    END LOOP;
    l_n_bookmark := 14;
    l_n_total_value := 0;
    l_n_total_tax := 0;
    FOR l_r_items IN l_cur_items( :blk_manual_inv_header.mih_seq_num )
    LOOP
    l_n_bookmark := 15;
    OPEN l_cur_tax_rate( l_r_items.mil_tco_seq_num, :blk_manual_inv_header.mih_invoice_date );
    FETCH l_cur_tax_rate INTO l_t_trt_rate;
    IF ( l_cur_tax_rate%NOTFOUND )
    THEN
    CLOSE l_cur_tax_rate;
    pa_lib_msg.pr_message_alert( 'STB', -124 );
    END IF;
    CLOSE l_cur_tax_rate;
    l_n_tax := ROUND( l_r_items.mil_value * ( l_t_trt_rate / 100 ), 2 );
    l_n_total_tax := l_n_total_tax + l_n_tax;
    l_n_total_value := l_n_total_value + l_r_items.mil_value;
    END LOOP;
    l_n_bookmark := 16;
    FOR l_r_items IN l_cur_items( :blk_manual_inv_header.mih_seq_num )
    LOOP
    l_n_bookmark := 17;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_r_items.mil_description );
    l_n_bookmark := 18;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( TO_CHAR( l_r_items.mil_quantity ) );
    l_n_bookmark := 19;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( TO_CHAR( l_r_items.mil_value, '99999999.90' ) );
    l_n_bookmark := 20;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    OPEN l_cur_tax_rate( l_r_items.mil_tco_seq_num, :blk_manual_inv_header.mih_invoice_date );
    FETCH l_cur_tax_rate INTO l_t_trt_rate;
    IF ( l_cur_tax_rate%NOTFOUND )
    THEN
    CLOSE l_cur_tax_rate;
    pa_lib_msg.pr_message_alert( 'STB', -124 );
    END IF;
    CLOSE l_cur_tax_rate;
    PR_insert_cell( TO_CHAR( l_t_trt_rate ) || '%' );
    l_n_bookmark := 21;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    l_n_tax := ROUND( l_r_items.mil_value * ( l_t_trt_rate / 100 ), 2 );
    PR_insert_cell( TO_CHAR( l_n_tax, '99999999.90' ) );
    l_n_bookmark := 22;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( TO_CHAR( l_r_items.rownum ) );
    l_n_bookmark := 23;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( UPPER( l_t_rli_description_1 ) );
    l_n_bookmark := 24;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bcl_client_name );
    l_n_bookmark := 25;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line1 );
    l_n_bookmark := 26;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line2 );
    l_n_bookmark := 27;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line3 );
    l_n_bookmark := 28;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line4 );
    l_n_bookmark := 29;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line5 );
    l_n_bookmark := 30;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bca_client_address_line6 );
    l_n_bookmark := 31;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( TO_CHAR( :blk_manual_inv_header.mih_invoice_date, 'DD/MM/YYYY' ) );
    l_n_bookmark := 32;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    PR_insert_cell( l_t_bcl_client_id );
    l_n_bookmark := 33;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    IF ( :blk_manual_inv_header.mih_invoice_prefix IS NULL )
    THEN
    PR_insert_cell( TO_CHAR( :blk_manual_inv_header.mih_invoice_number, '0000000009' ) || '/' ||
    TO_CHAR( :blk_manual_inv_header.mih_issue_number, '09') );
    ELSE
    IF ( NVL( LENGTH( :blk_manual_inv_header.mih_invoice_prefix), 0 ) = 1 )
    THEN
    PR_insert_cell( :blk_manual_inv_header.mih_invoice_prefix ||
    TO_CHAR( :blk_manual_inv_header.mih_invoice_number, '000000009' ) || '/' ||
    TO_CHAR( :blk_manual_inv_header.mih_issue_number, '09' ) );
    ELSE
    PR_insert_cell( :blk_manual_inv_header.mih_invoice_prefix ||
    TO_CHAR( :blk_manual_inv_header.mih_invoice_number, '00000009' ) || '/' ||
    TO_CHAR( :blk_manual_inv_header.mih_issue_number, '09' ) );
    END IF;
    END IF;
    l_n_bookmark := 34;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    IF ( l_r_items.rownum = 1 )
    THEN
    PR_insert_cell( TO_CHAR( l_n_total_value, '99999999.90') );
    END IF;
    l_n_bookmark := 35;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    IF ( l_r_items.rownum = 1 )
    THEN
    PR_insert_cell( TO_CHAR( l_n_total_tax, '99999999.90' ) );
    END IF;
    l_n_bookmark := 36;
    CLIENT_OLE2.INVOKE( l_t_selection, 'MoveRight', l_t_args_move_right );
    IF ( l_r_items.rownum = 1 )
    THEN
    PR_insert_cell( TO_CHAR( l_n_total_value + l_n_total_tax, '99999999.90' ) );
    END IF;
    END LOOP;
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args_move_right );
    -- Open merge file
    l_n_bookmark := 37;
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.ADD_ARG( l_t_args, l_v_destination_directory||l_v_letter );
    l_t_letter_doc := CLIENT_OLE2.INVOKE_OBJ( l_t_documents, 'Open', l_t_args );
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    -- Do mail merge
    l_n_bookmark := 38;
    l_t_mail_merge := CLIENT_OLE2.GET_OBJ_PROPERTY( l_t_letter_doc, 'MailMerge');
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.INVOKE( l_t_mail_merge, 'Execute', l_t_args );
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    -- Print
    l_n_bookmark := 39;
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    l_t_merge_doc := CLIENT_OLE2.GET_OBJ_PROPERTY( l_t_application, 'ActiveDocument' );
    CLIENT_OLE2.ADD_ARG( l_t_args, 0 );
    CLIENT_OLE2.INVOKE( l_t_merge_doc, 'PrintOut', l_t_args );
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    -- Cleanup
    l_n_bookmark := 40;
    IF ( NOT( l_b_debug ) )
    THEN
    l_t_args := CLIENT_OLE2.CREATE_ARGLIST;
    CLIENT_OLE2.ADD_ARG( l_t_args, 0 );
    CLIENT_OLE2.INVOKE( l_t_documents, 'Close', l_t_args );
    CLIENT_OLE2.DESTROY_ARGLIST( l_t_args );
    CLIENT_OLE2.INVOKE( l_t_application, 'QUIT' );
    END IF;
    CLIENT_OLE2.RELEASE_OBJ( l_t_selection );
    CLIENT_OLE2.RELEASE_OBJ( l_t_mail_merge );
    CLIENT_OLE2.RELEASE_OBJ( l_t_source_doc );
    CLIENT_OLE2.RELEASE_OBJ( l_t_letter_doc );
    CLIENT_OLE2.RELEASE_OBJ( l_t_merge_doc );
    CLIENT_OLE2.RELEASE_OBJ( l_t_documents );
    CLIENT_OLE2.RELEASE_OBJ( l_t_application );
    l_n_bookmark := 41;
    SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
    EXCEPTION
    WHEN FORM_TRIGGER_FAILURE
    THEN
    SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
    RAISE;
    WHEN OTHERS
    THEN
    PA_lib_msg.PR_others_exception('PA_hci_misc.PR_print_invoice',l_n_bookmark);
    END;
    ---------------------------------

    Some questions:
    Which version of office were you using before? 2003?
    Are the data files on a network, or on your local machine? If they are on a network, can you make a copy of one of them on your local machine and try again?
    Can you open the files directly in Excel? What extension do they have (.xls, or something else?) I am wondering whether access to other file types has been left blocked on your machine but is allowed on your colleague's machine.
    Are you just opening the mail merge main document and seeing this message? If so, do you see the same thing if you start with a new document and try to connect to one of these data sources?
    Can you confirm that the message is about Access even though you are trying to connect to an Excel file?
    (Also, office 2007 has some new stuff - that let's you specify that certain folders are "trusted" . I don't think that ever affected MailMerge but it may be as well to make sure that your documents and data sources are in trusted locations).
    Also worth trying to start Word in "Safe mode" - see, e.g. http://office.microsoft.com/en-gb/word-help/work-with-office-safe-modes-HP010140792.aspx
    Peter Jamieson

  • Word 2007 mail merge : problem with mixed portrait and landscape orientations

    Hi there,
    I have a 3 pages document Word 2007 file
    This is a mail merge I want to export in PDF using Adobe Acrobat Printer,
    then send "big" PDF to printing.
    page 1 is PORTRAIT
    page 2 is PORTRAIT
    page 3 is LANDSCAPE
    In PDF pages 1 and 2 are perfectly fine, inside an A4 format (width=210 height=297mm or something)
    but for page 3, system changed to a "double" sized page (A3 width=297 height=420) and printed my stuff at the 1st top middle of big page.
    So I have a big "double" sheet, oriented PORTRAIT, with my stuff in 1st half, and a blank in 2nd half.
    It seems that system did not rotate the page... and just put the stuff into a bigger sheet to "solve" at best.
    I would like the same size of paper (A4) but in landscape : width=297 height=210
    I have already seen many PDF with mixed portrait and landscape orientations, so what's the thing ?
    With my advanced thanks,
    And greetings from Paris, France !
    Vince

    Some questions:
    Which version of office were you using before? 2003?
    Are the data files on a network, or on your local machine? If they are on a network, can you make a copy of one of them on your local machine and try again?
    Can you open the files directly in Excel? What extension do they have (.xls, or something else?) I am wondering whether access to other file types has been left blocked on your machine but is allowed on your colleague's machine.
    Are you just opening the mail merge main document and seeing this message? If so, do you see the same thing if you start with a new document and try to connect to one of these data sources?
    Can you confirm that the message is about Access even though you are trying to connect to an Excel file?
    (Also, office 2007 has some new stuff - that let's you specify that certain folders are "trusted" . I don't think that ever affected MailMerge but it may be as well to make sure that your documents and data sources are in trusted locations).
    Also worth trying to start Word in "Safe mode" - see, e.g. http://office.microsoft.com/en-gb/word-help/work-with-office-safe-modes-HP010140792.aspx
    Peter Jamieson

  • Word document/mail merge with values from Reports

    Hi All gurus
    Using apex 4.1.1 , linux , 11gr2
    Basically I have requirement to generate a Word doc (letter to a Word mail merge) from a button/navigation link pressed on Apex page which will gather data from the report and fill in values in appropriate place in Word doc.
    Is this even possible with Apex with/o BI Publisher
    I have Fop installed and tested , PDF works great but excel and RTF is not reading the encoding on attachment download.
    Any help gratefully appreciated as always !
    PS I am aware of new PDF feature in 4.2.2 but upgrade is just not the scope right now.
    Thanks

    Hi, Tony:
    I am working with Hunk09 on this problem. I checked the demos of this PL/SQL lib, it looks powerful, yet we need a short time solution considering our schedule, as our request is just to insert some values into a static RTF document so user can print letters in batch by clicking link and downloading RTF file. I noticed our legacy system is using owa_util.mime_header following with htp.p to produce file, does APEx support this still? Also you have any hint about providing download link in APEX?
    Thanks.
    Sam
    Edited by: lxiscas on May 8, 2013 2:59 PM

  • Default file destination in Microsoft Word 2010 Mail Merge to PDF

    I'm using windows 2010, and Adobe Acrobat X Standard. 
    I have a mail merge template that I created in Microsoft Word 2010 that I use to send out multiple price quotes to customers who are bidding jobs.  When I merge to Adobe PDF everything works properly (everyone receives their unique PDF, etc.), but every time I do this Adobe requires that I select a destination folder for it to send the PDF's it generates that get attatched to the emails. 
    When I save a Word Doc as a PDF it automatically saves it in the same folder at the word document it was created from.  Is there a way I can set up my 'Merge to Adobe PDF' feature to do the same thing when it generates the merged PDF files?  It's just a hastle to map the entire file path of the desination folder every time I send out a quote.
    Thanks for your help!

    I'm using windows 2010, and Adobe Acrobat X Standard. 
    I have a mail merge template that I created in Microsoft Word 2010 that I use to send out multiple price quotes to customers who are bidding jobs.  When I merge to Adobe PDF everything works properly (everyone receives their unique PDF, etc.), but every time I do this Adobe requires that I select a destination folder for it to send the PDF's it generates that get attatched to the emails. 
    When I save a Word Doc as a PDF it automatically saves it in the same folder at the word document it was created from.  Is there a way I can set up my 'Merge to Adobe PDF' feature to do the same thing when it generates the merged PDF files?  It's just a hastle to map the entire file path of the desination folder every time I send out a quote.
    Thanks for your help!

  • MS Word 2007 Mail Merge Doc save as changes content of other documents everytime I save as a new document

    Have a mail merge initiated in Access that creates a Merge document. When I save the document as newXXX.doc..........., doc is saved but internal contents of oldXXX.doc are also changed to match last saved document. Help please.

    That suggests you are saving a copy of the mailmerge main document instead of executing the merge to create an output document - which is the one you should be saving. Consequently, with your current process, the saved document remains linked to the data
    source.
    Cheers
    Paul Edstein
    [MS MVP - Word]

  • Word 2010 Mail Merge Missing Data

    I have a large Excel data file:
    1725 records, 31 columns, 1.74MB total size.
    Other data:
    Windows 7 (64 bit)
    Word/Excel 2010 Version: 14.0.7116.5000 (32-bit)
    I am running a standard mail merge on a filtered subset of the data (112 records). At least one of the merge fields is RANDOMLY missing from the merge document. This is clearly evident because this is a field that is populated for EVERY record. I don't believe
    that I have every seen this behavior before.
    Can someone please direct me to the cause of this or a work-around?

    There are numerous possible reasons. The most likely is that the column concerned has missed data types (e.g. numbers plus text and/or dates). Some explanation:
    By default, Word (2002 & later) uses the OLE DB provider to get merge data from an Excel workbook. The basic problem with using the OLE DB provider is that it's designed to return data in a way that is compatible with Access and other relational database
    packages. Access requires a specific data type for each field, and every value in that field must have only that data type. In Excel, however, cells in a column (field) can have different data types. When the OLE DB provider gets data from an Excel column
    with mixed data types, it has to determine the data type for each column. The first 8 records are used for that (the 8 can be changed in the Windows Registry, but it’s not advisable to do so). Records that don’t conform to the determined data type are liable
    to not be handled correctly. To complicate matters, for historical reasons, there are two text data types: "text" (up to 255 characters) and "memo" (can be longer than that).
    Some common mailmerge issues arising out of this include:
    • Numbers but not text or dates being output for some records; and
    • Text data being truncated at 255 characters.
    Ideally, one would ensure each field has only one data type. That way, the problem wouldn't arise.
    Workarounds include:
    • Inserting a dummy first record containing data in the format that is not being output correctly; or
    • Reordering the data so the first record has content in the format that is not otherwise being output correctly.
    Thus, if numbers appear but text and/or dates don’t, ensure the first record for that field has text or a date. Similarly, if text over 255 characters is being truncated, ensure the first record for that field contains more than 255 characters.
    Cheers
    Paul Edstein
    [MS MVP - Word]

  • OfficeJet 4110 Using Microsoft Word 2003

    The printer is attached to computer with USB; trying to print sheets of labels using Microsoft Word 2003 mailing merge.
    It will only print 1 address on 1 label at a time.
    How do I set the printer to print a sheet of labels with different addresses on each label?
    Thank you!

    As I stated in my previous post, I reverted back to Adobe 7 on the computer
    I use every day, but I apologize for not mentioning another alternative. I
    still needed the ability to read Adobe 9 files that I could not open with
    Adobe 7 and I still needed the ability to complete fillable PDFs that would
    not fill with Adobe 7, so instead of requesting a refund (which you already
    know is a pain in the behind), I installed Adobe 9 on a newer computer at my
    office that is running Windows 7. For some reason, the problems with MS Word
    2003 do not occur when running Adobe 9 in Windows 7 environment. So, when I
    have an Adobe file I cannot read or fill, I have the person who uses that
    computer, read or fill that Adobe file for me. I did not upgrade to Windows
    7 on the computer I use every day because "Act! for Advisors" which I use
    for my work is not very compatible with Windows 7 unless I upgraded that
    program, too. I don't know about you, but I avoid upgrading my operating
    system until I absolutely have to because the transition has always been
    very time consuming and quite an ordeal for me.

  • How to create mail merge(feature in word) in adobe pdf and programmatically find and replace these t

    I am very new to adobe.I am required to do the following and am very confused.The scenario is as follows:
    I am required to create a letter template (using adobe designer) where name and few other details will be tags(which needs to be replaced by actual values according to the particular customer later on).We can create such a feature in word using mail merge feature available there.How do we do the same in pdf??Can it be done using adobe designer 7.0???If so,how?
    After I create this template,I am required to write a javascript or a VB program to access this pdf template and find and replace these tags with the actual values and generate a pdf document.Somebody told me that this is to be done using adobe document server(ADS). Can this be done??If so,how?If not what is the alternative product in adobe?
    There are so many adobe products that i am totally at sea and not able to figure out which to use and how.
    Please help me at the very earliest.
    Thanks in advance.
    regards,
    Sowmya

    Let me thank u for a prompt reply but I guess I still need ur help before I accomplish what I set out to do.
    As per your reply I used Forms API in my vb program and it is accessing the fields but I am not able to change the property of the fields.
    I created the pdf form using adobe designer 7.0 and have created a floating field which I want to populate using my code.This is invisible in the pdf template but I when I set the value for it using vb code I need to change its property to visible.
    But when I try to change the "NoViewFlag" property, I get an error as follows:
    Runtime error'-2147220988(80040204)
    Document's Security Settings prohibit the operation being performed
    Please give your suggestions.
    2.Another question is how do I differentiate floating text field and ordinary text field in vb code because the type of both is displayed as text ??
    Thanks again.
    regards,
    Sowmya
    I am putting my code below for ur viewing.

  • MS-Word mail merge funcionality

    I would like to have an editor with functionalities similar to MS-Word's mail merge. My website should be able to publish templates with dynamic data, from an external database. Can I have it with Muse or any other Adobe product ?

    I have the same requirement...ms-word mail merge thru Java(before uploading to server..well that is what I think of doing).
    1)Any success with this?
    2)How did you do that in ASP? Any links you could suggest?
    3)What did you use with the ASP setup to fax out(meaning the fax server)
    Is it possible to create a word document with dynamic
    contents (thru a template) using jsp or java.
    Actually, I want to use mail merge facility to create
    a Word Document to fax in jsp.
    I know it is possible in asp/vb. But no idea,,, How
    can it done in jsp???????

  • Import data from SQL Server into MS Word document for Mail Merge purpose ?

    Hi,
    Is it possible to import contacts from SQL Server into MS Word for mail merge purpose or if retrieving data from MS Excel can we update the data in MS Excel sheet without opening it ?
    Note: Remember when you open a word document already set up for mail merge, asks you to run the query to return all records from the excel sheet it is connected to.
    Khurram

    Word and the current data source dialog do not really give you any help with that.
    You either have to be able to create a View in SQL Server that performs the query you need, then connect to that, or you have to be able to create the correct query manually (or perhaps using some other query tool that can help you), then use VBA to connect
    using that query. 
    For example, if you have been through the connection process once (connecting to a single table) then you will have a .odc (Office Data Connection file) which has the info. needed to connect to the correct server and database. It's a text file with some
    HTML and XML inside. You can copy/rename it. Let's say it is called "c:\a\myodc.odc" Then in VBA you can use something like
    ActiveDocument.OpenDataSource Name:="c:\a\myodc.odc, _
    SQLStatement:="put your SQL statement in here, and if it is long,...", _
    SQLStatement1:="put the second part in here"
    You get a maximum of either 255 or around 511 characters in the SQL statement, and Word tends to impose some syntax requirements that Transact-SQL does not, so e.g. you may need to quote all your table names.
    You can also se an empty .odc file and provide connection info. in the COnnection:= parameter in OpenDataSource.
    As background, until Word 2000, by default you would use MS Query to create your SQL query, and MS Query does have facilities that can help you build your query (a bit like the ones in MS Access). That may still be possible (it is a bit harder to find the MS
    Query option now, and I am not sure it works with the latest versions of Word). MS Query only works for ODBC queries, and they do not always work correctly when you actually issue the query using ODBC from Word, because of a Word problem to do with Unicode
    fields in SQL Server. But you could probably still use MS Query to help you construct your SQL. (It's probably easier to do that in Excel, though).
    Peter Jamieson

  • Word 2007 mail link error

    In Word 2007 Mail Merge ToolsOptionsSave method returns ole2_object class error and terminate the process does not allow
    Does anyone know what can be?

    Some questions:
    Which version of office were you using before? 2003?
    Are the data files on a network, or on your local machine? If they are on a network, can you make a copy of one of them on your local machine and try again?
    Can you open the files directly in Excel? What extension do they have (.xls, or something else?) I am wondering whether access to other file types has been left blocked on your machine but is allowed on your colleague's machine.
    Are you just opening the mail merge main document and seeing this message? If so, do you see the same thing if you start with a new document and try to connect to one of these data sources?
    Can you confirm that the message is about Access even though you are trying to connect to an Excel file?
    (Also, office 2007 has some new stuff - that let's you specify that certain folders are "trusted" . I don't think that ever affected MailMerge but it may be as well to make sure that your documents and data sources are in trusted locations).
    Also worth trying to start Word in "Safe mode" - see, e.g. http://office.microsoft.com/en-gb/word-help/work-with-office-safe-modes-HP010140792.aspx
    Peter Jamieson

  • Mail Merge From Within Professional 8

    Hi,
      Is there any function in Professional 8 similar to Word's Mail Merge?  I work for a company that has a need to "stamp" unique copy numbers on certain documents.  Here's what we presently do:
    We have a Word file of a testing procedure (we have a number of different testing procedures), and we receive a request for x number of controlled copies so that the analysts in the labs can conduct testing. An example of the number for the first controlled copy for this year would be: TD125-09-0001 (TD=Testing Document, 125=the main document number (which never changes, we have about 130 of these documents), 09=the year, and 0001=unique controlled copy number.  So we would issue TD125-09-0001, TD125-09-0002, TD125-09-0003, TD125-09-0004 and so on depending on a given request.
    Now the problem:  We are going to be switching to an Electronic Document Management System (EDMS) in which the documents, when printed from within the EDMS system will print with the EDMS Headers and Footers, and therefore cannot be brought outside of the system.
    My workaround was to print out the Testing Document from within EDMS, therefore it will print with all the appropriate Headers and Footers that the system generates upon printing...then scan the document as a PDF to use as a template, and apply the controlled copy numbers to the PDF version.  The only problem is that Acrobat doesn't seem to have functionality similar to Word's Mail Merge....the beauty of which is you choose which "recipients" you would like to merge, and regardless of the length of the document, it will imprint the same number on every page, print another copy with the next sequential number, etc.  I've looked around in the Professional 8 application and the closest I've come is forms, but then you have no functionality to generate sequential copy numbers except to do each one manually.
    Does anyone know of a plug-in or scripting that will mimic the functionality of Mail Merge but from within Adobe?
    Much Appreciation In Advance!,
    Paul

    Hi Rick
    To explain in brief, the main master table (OCRD) is replicated in fields in the audit trail table (ACRD). A few additional fields are available in the ACRD such as Instance which is a numeric incremental number for each update to a master. Instance 1 is of course the Add action when it is created. Therefore you can pull the information of the BP straight from the ACRD table without having to join and using the MAX number of Instance to get the latest "snapshot" of the master. Then there are fields such as update date and time which can be used to determine if any records have been updated in say the last 5 minutes for example.
    Another suggestion would be to add an activity to the BP rather for each letter that must be created, as this will give you history of each letter that was sent. What can work quite nicely will be to change the layout of the activity to be some letter format and then possibly save this to PDF or print to a Document generator printer as a TIFF file and then attach these back to the activity. From the activity you could also fax, email or print the letter.
    The above scenarios are just a suggestion, and I guess a way of trying to impress on you that SAP Business One is still a good choice, despite a few shortcomings. The important thing to remember with SAP Business One is it's flexibility in terms of User Defined Fields, Formatted Searches, SDK, UDO's, DI API, etc. which can in many cases overcome functional gaps. The best advise is to consider how big the gap is and what it will cost to fill it in terms of project time line and cost.
    Hope this helps
    Kind regards
    Peter Juby

  • Mail Merge Customization

    I am trying to create a mail merge with different companies list and under the name of the company the list of all employees each on individual pages that are in the excel spreadsheet that I am pulling from. I don't know what specific rules to use to create
    this specific list to make sure the company name isn't listed twice and employees show up under the right heading.
    Company:
    «Company»
    Name: «Contact_Name»
    Title: «Title»
    Address I:
    «Address_1»                              
    Address II: «Address_2»
    City: «City»                                                   
    State: «State»             Zip:
    «Zip»
    Email: «Email»                     
    Website: «Web_Address»
    Phone:           
    «Phone»                    
    Fax:
    «Fax»
    Alternate Phone:
    «Alternate_Phone»        Cell:
    «Cell_Phone»
    «Skip Record If...»«Next Record If»«Next Record»
    Name: «Contact_Name»
    Title: «Title»
    Address I:
    «Address_1»                              
    Address II: «Address_2»
    City: «City»                                                   
    State: «State»             Zip:
    «Zip»
    Email: «Email»                     
    Website: «Web_Address»
    Phone:           
    «Phone»                    
    Fax:
    «Fax»
    Alternate Phone:
    «Alternate_Phone»        Cell:
    «Cell_Phone»

    Hi,
    If we need to create the mail merge with different companies list, we'd better to recreate the Excel sheet as the database.
    Please refer to the following links and check if they are helpful:
    http://office.microsoft.com/en-us/word-help/mail-merge-using-an-excel-spreadsheet-HA102809678.aspx
    https://www.youtube.com/watch?v=jNEyvGHvlpk
    Please Note: Since the web site is not hosted by Microsoft, the link may change without notice. Microsoft does not guarantee the accuracy of this information.
    Regards,
    George Zhao
    TechNet Community Support

  • Access 2013 crashes after mail merge in Word 2013

    We have several Word templates that query an Access database to populate themselves. After the mail merge is complete, when we close Word then Access immediately crashes every time. This started after upgrading from Office 2003 to 2013. We tried updating
    the Word Doc to 2013 but then it would not connect to the data source at all. Last, we also tried to Compact and Repair the database with no luck.
    We searched for an Access Hot Fix but could not find anything that matches our issue. Any assistance would be greatly appreciated.

    Use a table or query as the data source
    Open the source database, and in the Navigation Pane, select the table or query that you want use as the mail merge data source.
    On the External Data tab, in the Export group, click
    More , and then click Merge it with Microsoft Office Word .
    The Microsoft Word Mail Merge Wizard starts.
    Select whether you want to create the link in an existing document or in a new document, and then click
    OK.
    If you chose to link to an existing document, in the Select Microsoft Word Document dialog box, locate and select the file, and then click
    Open.
    Word starts. Depending on your choice, Word opens either the document you specified or a new document.
    In the Mail Merge pane, under Select document type, click
    Letters and then click Next: Starting document to continue to step 2.
    In step 2, click Next: Select recipients.
    In step 3, you create the link between the data source in Access and the Word document. Because you started the wizard from Access, this link is created automatically. Under
    Select recipients, note that Use an existing list is selected, and the name of your data source is displayed under
    Use an existing list.
    Click Edit recipient list if you want to customize the contents of the table or query.
    You can filter, sort, and validate the data. Click OK to continue.
    Click Next: Write your letter to continue. Follow the remaining instructions in the
    Mail Merge pane, and in step 5, click Next: Complete the merge.
    Other ways to use a table or query as the data source
    You can specify a table or query as a data source in additional ways. For example, you can export the table or query from Access to an ODBC database, a Microsoft Office Excel 2013 file, a text file, or any other file format that is compatible with Word,
    and then link to the resulting file by using the Word Mail Merge Wizard.
    If you have not already exported the table or query , do so. In Access, in the Navigation Pane, select the table or query that you want to use, and on the
    External Data tab, in the Export group, click the format you want to export to, and then follow the instructions.
    In Word, if the Mail Merge pane is not displayed, on the
    Mailings tab, in the Start Mail Merge group, click the arrow under
    Start Mail Merge, and then click Step by Step Mail Merge Wizard. The
    Mail Merge pane appears.
    In step 3 of the Mail Merge pane, under Use an existing list, click
    Browse or Edit recipient list.
    In the Select Data Source dialog box, specify the data file that you created in Access, and then click
    Open.
    Follow the instructions in any dialog boxes that follow. In the Mail Merge Recipients dialog box, review and customize the contents of the file. You can filter, sort, and validate the contents before you continue.
    Click OK, and then click Next: Write your letter in the
    Mail Merge pane. For more instructions on customizing your mail merge, see Word Help.

Maybe you are looking for

  • Execute Unix command on login

    Hello, is it possible to execute a unix command on user login? I want that every time a user login on a mac at my company, a unix command be executed. Is this case, this is the command: defaults write com.apple.mail NSPreferredMailCharset "UTF-8" thk

  • How do you browse transparenly with Firefox?

    We have an issue where some die hard Firefox users are having trouble getting to certain internet sites, or heck certain e-mails cause these same popups by just trying to read the message. Problem is that these individuals will get a pop up box askin

  • ColdFusion 10 install fails on Red Hat Enterprise Linux 5.8

    I'm trying to install ColdFusion 10 on a Red Hat Enterprise Linux 5.8 server with Apache 2.2.3. The install appears to complete with no errors. After some searching the web, I found I had to change the adobe connector shell script to use my directori

  • Load external flv as background video and loop

    Hi, I want to have a subtle background video playing behind a slideshow. What's the code to attach a video and have it loop endlessly? Actionscript 3/AS3 only. Thanks,

  • Camera Raw won't launch.

    My hard drive failed and I had to re-install CS5.  Evidentally, I did something wrong because when I try to open a raw file Photoshop cannot read the file and Camera Raw will not launch.  Any suggestions, please?