I am new to UltraEdit. I think I am missing something simple. I am trying to select a specified range (start on Line 1, Column 21-24) on every line in a file, regardless of text, and Copy it to another place in the file. I can't find the command to go to the end of the file without losing the selection. Here is my macro section.
InsertMode
ColumnModeOn
HexOff
UnixReOn
GotoLine 1 21
Key SHIFT
Key RIGHT ARROW
Key RIGHT ARROW
Key RIGHT ARROW
Any help would be great as this is the last piece I need to complete a larger macro. Thanks.
When working with selections in column mode it is normally better to temporarily delete all blanks lines at bottom of the file, so the last line of the file has no line termination and Bottom or SelectToBottom moves the cursor to end of content of last line with content.
However, in your case it is better to select from last line of the file column 25 to first line of the file column 21.
Please note: The first versions of UE/UES supporting GotoLine with a column number have a bug. If the file is an ASCII file and not a Unicode file, and GotoLine or GotoLineSelect is used with line number 1 or at line 1, the cursor is always positioned to specified column number + 1 (BOM of Unicode files also taken into consideration for ASCII/ANSI files).
To solve this problem I always insert at top of the file an empty line and delete it when I don't need it anymore when I'm using the GotoLine or GotoLineSelect with a column number at first line. The following macro contains the same workaround. So delete the inserted blank line at top of the file, if you don't need it anymore and no selection is active with command DeleteLine.
This bug was fixed with UE v13.00+2 and UES v6.20+2 and so the workaround is not necessary anmore if you use this version or any higher.
GotoLine and GotoLineSelect with line number 0 to move the cursor to the specified column in the current line is supported since UE v12.20a+2 and UES v6.10a+2. So this macro works only with this version of UE/UES or any higher version.
InsertMode
ColumnModeOn
HexOff
UnixReOn
Top
"
"
Bottom
Loop
IfColNum 1
Key UP ARROW
Key END
Else
ExitLoop
EndIf
EndLoop
GotoLine 0 25
GotoLineSelect 2 21
Best regards from an UC/UE/UES for Windows user from Austria
Thanks so much. I actually had to tweak a few items. The below script worked. I also added in the rest of what I needed copy/paste, delete the extra row.
Do you know if there is a way to Convert Columns Character to Delimited file in a macro? I see how to do it manually, but would like to automate this to if possible. Am trying to take the file, and make it loadable to an ERP system which requires each field to be at a designated column.
I'm quite sure Key SHIFT is useless in the macro and maybe command StartSelect is better.
And command "Convert to Fixed Column" is not available in the macro environment. I think because of the user interactions necessary or large number of parameters.
I have once written for myself a small 'C' program which does the same as "Convert to Fixed Column" with appropriate settings (is not a full equivalent) which could be run by a user tool. But this program was written for Filemon/Regmon/Portmon logs and so is not for general usage. My prog supports up to 16 columns with a max. line length of 512 bytes (without \r\n\0) and the separator character must be a tab char. The prog first analyzes the file to get width of every column (Scan button in UE dialog) and then writes the new file with spaces for alignment and 3 spaces instead of the tab. However, if you would need my program to make a "convert to fixed column width" via a user tool which can be used from within a macro, tell me what you need (number of columns, max line length after convert, separator character, file format ...) and I will adapt my prog for your need on weekend. Should be no problem because it is really simple.
Best regards from an UC/UE/UES for Windows user from Austria
The "ReviseA" macro causing the issue is below. I can modify any macro and run with no issues. I can also email the file to the other person, open the macro file and run any macro as is there too. The problem is ONLY if I try to modify "ReviseA" in any way on his PC. After that, pressing "Shift+1" only copies the macro text into the file starting at 1 1. Modifications to ReviseB or Split2 does not cause this issue.
Specifically, I tried changing 1 39 to 1 38 and Replace FY07 with 2008 instead of 2007. Both resulted in the problem. Could you try it on your machine (Version 13.00+4) and see if it also happens to you? Thanks.
InsertMode
HexOff
UnixReOn
ColumnModeOn
GotoLine 1 1
Key HOME
Find """
Replace All ""
Find ",TJU_Employee_Total,"
Replace All ","
Find ",Final,"
Replace All ","
Find "PROD_NONE"
Replace All " "
Find "PROD_"
Replace All ""
Find "FY07"
Replace All "2007"
Find "Jul"
Replace All "001"
Find "Aug"
Replace All "002"
Find "Sep"
Replace All "003"
Find "Oct"
Replace All "004"
Find "Nov"
Replace All "005"
Find "Dec"
Replace All "006"
Find "Jan"
Replace All "007"
Find "Feb"
Replace All "008"
Find "Mar"
Replace All "009"
Find "Apr"
Replace All "010"
Find "May"
Replace All "011"
Find "Jun"
Replace All "012"
GotoLine 1 1
Key HOME
ColumnInsert "B,Budget,"
GotoLine 1 38
ColumnInsert "USD,"
Top
"
"
Bottom
Loop
IfColNum 1
Key UP ARROW
Key END
Else
ExitLoop
EndIf
EndLoop
GotoLine 0 22
GotoLineSelect 2 25
Key SHIFT
Key LEFT ARROW
Key LEFT ARROW
Key LEFT ARROW
Copy
GotoLine 2 2
Paste
GotoLine 1 1
DeleteLine
Key HOME
EndSelect
Top
"
"
Bottom
Loop
IfColNum 1
Key UP ARROW
Key END
Else
ExitLoop
EndIf
EndLoop
GotoLine 0 25
GotoLineSelect 2 29
Key SHIFT
Key LEFT ARROW
Key LEFT ARROW
Key LEFT ARROW
Key LEFT ARROW
Key DEL
GotoLine 1 1
DeleteLine
Key HOME
Okay, I found the horrible bug of the edit macro dialog of UE v13.00+? and UES v6.20+? which is causing all the problems you see. A string with an odd number of double quotes inside is not compiled anymore correct when closing the macro in the edit macro dialog.
The code part
Find """
Replace All ""
is correct recorded with the macro recorder. But if a user modifies the macro later in the editor, the compiler will interprete this as follows for your macro:
Find """
Replace All ""
...
...
GotoLine 1 38
ColumnInsert "USD,"
Top
"
And the rest of the code of your macro is interpreted as simple text. If you look on the re-opened macro after editing you will find an additional double quote at end of the macro indicating that the macro code is interpreted as text.
That is really a horrible bug. I run several tests and I have seen that this bug also exists with UE v13.00+5, UE v13.00+2 (I don't have anymore v13.00+1 and v13.00), but not with UE v12.20b+1 or any other v12.20.
I will report this horrible bug also to IDM.
And I will report also that GotoLineSelect with column number does not select the correct range from current cursor position to the specified line/column in column mode when selecting in reverse direction. I have seen that as I looked on your code:
GotoLine 0 22
GotoLineSelect 2 25
Key SHIFT
Key LEFT ARROW
Key LEFT ARROW
Key LEFT ARROW
A selection with GotoLineSelect from line 2 column 22 to last line column 25 would work, but the line number of the last line is normally not known and so a fixed line number cannot be used.
As I workaround for all the problems I have modified the macro now to this one which hopefully does the same as your one. The red highlighted part is the workaround for the double quote character problem inside a string. As you can see I insert at top of the file 2 double quote characters (only 1 is not possible because of the bug), delete the second one directly, select the first one and replace all double quote characters with nothing which deletes also the inserted double quote character.
InsertMode
HexOff
UnixReOn
ColumnModeOff
Top """"
Key BACKSPACE
StartSelect
Key LEFT ARROW
Find "^s"
Replace All ""
EndSelect
Find ",TJU_Employee_Total,"
Replace All ","
Find ",Final,"
Replace All ","
Find "PROD_NONE"
Replace All " "
Find "PROD_"
Replace All ""
Find "FY07"
Replace All "2007"
Find "Jul"
Replace All "001"
Find "Aug"
Replace All "002"
Find "Sep"
Replace All "003"
Find "Oct"
Replace All "004"
Find "Nov"
Replace All "005"
Find "Dec"
Replace All "006"
Find "Jan"
Replace All "007"
Find "Feb"
Replace All "008"
Find "Mar"
Replace All "009"
Find "Apr"
Replace All "010"
Find "May"
Replace All "011"
Find "Jun"
Replace All "012"
ColumnModeOn
ColumnInsert "B,Budget,"
Top
"
"
GotoLine 2 38
ColumnInsert "USD,"
GotoLine 2 22
ColumnCut 3
GotoLine 2 2
Paste
GotoLine 2 25
ColumnDelete 1
Top
DeleteLine
IDM has fixed the problem with odd numbers of double quote characters in a string on the same day as I have reported it. Update to hotfix 7 of UE v13.00 where this problem does not occour anymore and so the red highlighted workaround is not necessary anymore and you can enter again
Find """
Replace All ""
instead in the edit macro dialog. I have also modified my macro because there is a ColumnCut command which makes it not necessary to select the 3 columns 22-24 which should be cut and inserted at column 2. Now the macro is really simple.
Mofi wrote:And I will report also that GotoLineSelect with column number does not select the correct range from current cursor position to the specified line/column in column mode when selecting in reverse direction.
That problem was fixed with UltraEdit v13.10+1 and UEStudio v6.30+1. Selecting a rectangular block in column mode in reverse direction (i.e. from higher line number to lower line number) now works in any case, independent if done from lower column number to higher column number or vice versa. So now it is possbible to select a rectangular block
from left upper corner to right lower corner, 2/8 to 5/11
from right upper corner to left lower corner, 2/11 to 5/8
from left lower corner to right upper corner, 5/8 to 2/11
from right lower corner to left upper corner, 5/11 to 2/8