Copy and paste inside a macro



  • I need to create a macro, what I thought would be very simple… So far I have not figured it out yet. Here is what the macro needs to do on each line (and there are 100’s of them)

    1. edit a bunch of text
    2. Copy what is left of the line to clipboard (this is what I am having issues with)
    3. type some text
    4. paste content of clipboard (from step 2) (also having issues with this)
    5. type some more text
    6. paste content of clipboard (from step 2) (also having issues with this)
    7. type some more text
    8. go to the beginning of next line.

    It is the copy and paste part I can not figure out for the life of me. Any one have an idea what keystrokes/commands I need to use?



  • @Gregory-West
    My recollection is that macros do not support copy and paste. I don’t think you can do what you want using macros.



  • @Jim-Dailey

    Hi Jim, looks like it isn’t the case anymore or I didn’t understand the question correctly.

        <Macro name="copy_paste_macro" Ctrl="no" Alt="no" Shift="no" Key="0">
            <Action type="0" message="2454" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2178" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2451" wParam="0" lParam="0" sParam="" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="a" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="d" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="d" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="e" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="d" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="_" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="t" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="e" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="x" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="t" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
            <Action type="0" message="2179" wParam="0" lParam="0" sParam="" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="a" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="n" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="o" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="t" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="h" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="e" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="r" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="_" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="t" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="e" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="x" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam="t" />
            <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
            <Action type="0" message="2179" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2300" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2453" wParam="0" lParam="0" sParam="" />
        </Macro>
    

    let’s assume I have the text

    1234
    5678
    

    I place the cursor directly after the number 4 and execute the macro, it will result in

    1234 added_text 1234 another_text 1234
    5678
    

    and cursor is in front of number 5.

    @Gregory-West
    if this is what you are looking for, then the following steps I did are

    1. place the cursor to the position you want to have
    2. press SHIFT+POS1 (to select everything in the line left to the cursor)
    3. press CTRL+C (copy)
    4. press END (to move curosr to the end position of the line)
    5. add your additional text
    6. press CTRL+V (paste)
    7. repeat step 5 and 6 as often as you want
    8. press DOWN_ARROW (to jump into the next line)
    9. press POS1 (to jump to the first position of that line)

    save it - done.

    Cheers
    Claudia



  • @Claudia-Frank Thanks for setting me straight. I have not tried this for a long, long time; it is nice to see it is being handled now.



  • Hello, @gregory-west,

    No doubt, @claudia-Frank, that your macro does the job, correctly !!

    But, I’m thinking about an easier method !

    • First, select any range of characters that is to be repeated, several times, with additional text

    ( In our example it would be all the characters, located to the left of a specific column ! )

    • Secondly, opens the Replace dialog ( Ctrl + H )

    => The selection is, automatically, filled up, in the Search what: box

    • In the Replace with: box, simply type $0 added text $0 another text $0

    • Select the Regular expression search mode ( IMPORTANT )

    • Click on the Replace button, several times or just once time the Replace All button

    Et voilà !

    Notes :

    • The $0 syntax represents ALL the search contents !

    • To insert a new string, just do any other selection and update the Replace dialog, hitting the Ctrl + H shortcut !

    • You may, as well, change the additional replacement text. For example : $0 This is $0 the text $0 to insert, among the "$0" strings

    Remark :

    Gregory, if your selection contains one, or more, of these 13 characters . [ { } ( ) \ * + ? ^ $ |, you’ll must escape each of them, with a backslash ( \ ), as there are special regex characters !

    Best Regards,

    guy038


Log in to reply