User Manual & Job Aid | Version 1.0 | March 2026
The Template Filler Tool (TFT) is an Excel macro workbook that automates the process of filling Oracle ERP upload templates from a Master Raw Data file.
Without TFT, a user would open the raw export, copy columns into the template manually, apply transformations (remove dashes, add fixed values, decide CREATE vs UPDATE row by row), save the file with a dated name, and repeat for every template variant. This takes hours and introduces copy-paste errors.
With TFT, you configure the mapping once, save it, and from then on the whole process runs in a single click — including file naming, filtering, and email dispatch.
First time with a new template — takes about 5–10 minutes to set up. Every run after that takes seconds.
1 Open the TFT workbook. Go to the Run sheet.
2 Click Template Filler. The mapping form opens.
3 Select your template — either a sheet in this workbook, or browse to an external file. Click Scan Template.
4 Select your source file — the Master Raw Data file. Set the header row and data start row. Click Scan Source.
5 Map each template column — for every column in your template, choose a Type and a Source/Value. See Section 5 for all types explained.
6 Set your output folder and file name pattern. Set any filters if needed.
7 Click Save Config — give it a name. Your mapping is saved and can be reloaded next time.
8 Click Run. The output file is created, named, and saved to your folder.
9 Next time: open the form, Load Config, browse to the source file, Scan Source, Run. Done.
The Run sheet is the home screen of TFT. It contains four buttons and the email configuration area.
| Button | What it does |
|---|---|
| Template Filler | Opens the main mapping form (frmTFTMapper). Use this to create, edit, and run a single config. |
| Run Batch | Opens the Batch Run form. Select multiple saved configs and run them all in one click with one source file. |
| Send Email | Opens the file picker. Select output files to attach, preview the email, and send to Outlook Drafts for review. |
| Log Archive | Exports all Log rows to an Excel archive file, then clears the Log sheet. Asks for confirmation before clearing. |
Fill these in once. They are used every time you click Send Email.
| Cell | Field | Notes |
|---|---|---|
B16 | To: | Comma-separated recipient email addresses. Required — the email will not open if this is blank. |
B17 | CC: | Optional. Comma-separated CC addresses. |
B18 | Subject | Supports the {DATE} token. Example: Output Files Ready — {DATE} |
B19 | Body | Supports {DATE}, {FILES} (list of attached filenames), and {FOLDER} (output folder path). Use Alt+Enter for line breaks. |
The main form is divided into four sections: Template, Data Source, Output, and Column Mapping.
Choose where your template lives:
Header row — the row in the template that contains column names. Usually row 1. Use the arrow (◄ ►) buttons to change it. After changing, click Scan Template to refresh the column list.
Scan Template — reads the template headers and populates the Template Column column in the mapping grid. Always click this before mapping for the first time, or after changing the header row.
The dropdown lists all saved configs. Select one and click Load Config to restore all settings (template, mapping, output folder, filter, etc.) from a previous session.
After making changes, click Save Config. If the config name already exists it is overwritten. To create a new one, type a new name in the box first.
Source file — browse to your Master Raw Data file (.xlsx or .xls). The path is stored in the config but the file is never modified.
Hdr row — the row containing column headers in the source file. Usually 1.
Dat row — the first row of actual data. Usually header row + 1 = 2.
Scan Source — reads the source file headers and makes them available in the Source/Value dropdowns in the mapping grid. You must click this before the dropdowns will show your source columns.
| Setting | What it does |
|---|---|
| Folder | The folder where output files are saved. Use Browse… to pick it. |
| Excel 97-2003 (.xls) | Saves as the legacy .xls format. Required for most Oracle upload tools. |
| Tab-delimited (.txt) | Saves as a plain text file with tabs between columns. Use when the system requires a text upload. |
| File name pattern | The output filename template. Supports tokens (see below). |
| Token | Replaced with | Example result |
|---|---|---|
{DATE} | Today's date in DDMMMYYYY format | 18MAR2026 |
{TMPL} | The template sheet/file name (spaces replaced by underscores) | TEMP_ITM_UPD_CATG |
{GROUP} | The current group value (when "One file per group value" is selected) | 1234 |
Example pattern: {DATE}_DK_{TMPL}_{GROUP}_ABCD → produces 18MAR2026_DK_TEMP_ITM_UPD_CATG_1234_ABCD.xls
_V1, _V2, etc. rather than
overwriting. You will never lose a previous run's output.
The heart of the tool. Each row in the grid represents one column in the template. For each column you choose:
Every template column must be assigned a Type. The Type tells TFT where the value comes from.
| Type | Plain English | Source / Value field | Lookup Set field | Common use |
|---|---|---|---|---|
| COL | Copy a value from the source file, row by row | Pick the source column name | Leave blank | Item number, description, category name — any column that varies per row |
| STATIC | Write the same fixed value into every row | Type or pick the value (presets available) | Leave blank | Organization code (always 100), Process ID (always 4455), set name |
| SKIP | Leave this template column blank | — | — | Template has columns your upload doesn't need |
| COUNT | Auto-number each row: 1, 2, 3… | — | — | Line number or sequence column required by the system |
| LOOKUP | Look up the source value in a table and write the mapped result | Pick the source column to look up | Pick the lookup table name (from Lookup_Sets sheet) | Map a buyer ID to a buyer name; map a code to a description |
| COND | Conditional: if source column is blank → write value A; if filled → write value B | Pick the source column to check | Type blank_result|notblank_result e.g. CREATE|UPDATE |
TRANSACTION_TYPE: no old category → CREATE; old category present → UPDATE |
| SUM | Sum all values in a source column and write the total once | Pick the source column to sum | Leave blank | Total quantity or value lines at the bottom of an upload |
Use COL whenever the value comes from your raw data and differs from row to row. The Source/Value dropdown shows all column headers found in the source file after Scan Source.
Pair with Norm (Section 6) when the source data may contain dirty values (dashes as placeholders, leading spaces, invisible characters).
Use STATIC for any value that is always the same regardless of the data row. The Source/Value dropdown shows presets — common values stored in the Presets sheet (see Section 9). You can also type a value directly.
When you save a config with a STATIC value that is not yet in the Presets sheet, TFT automatically adds it so it is available next time.
COND checks whether the source column cell is blank for each row and writes one of two values accordingly.
Blank detection is smart: a cell containing only dashes (-),
equals signs (=), spaces, or other non-alphanumeric characters is treated as
blank. This prevents false UPDATE results when the source file uses -
as a "no value" placeholder.
Lookup Set format: type the two values separated by a pipe character with
no spaces: CREATE|UPDATE
The value before the pipe is used when the source cell is blank; the value after the pipe
is used when the source cell has content.
Lookup tables live on the Lookup_Sets sheet. Each named range is a two-column table: column A = the key to match, column B = the value to write.
The Lookup Set dropdown in the mapping form lists all named tables on the Lookup_Sets sheet. If a key is not found in the table, the cell is left blank.
The Norm checkbox appears at the end of each mapping row. When ticked, TFT cleans the resolved value before writing it to the template.
| Source value | After Norm | Why |
|---|---|---|
Item 123 | Item 123 | Leading/trailing spaces stripped; content kept |
C-SPARES | C-SPARES | Has letters — kept exactly |
Active NFS | Active NFS | Has letters — kept exactly |
4M5 | 4M5 | Has alphanumeric — kept exactly |
- | (blank) | No alphanumeric content — cleared |
--- | (blank) | No alphanumeric content — cleared |
@ | (blank) | No alphanumeric content — cleared |
Norm has no effect on STATIC, COUNT, COND, or LOOKUP types — those values are controlled by the mapping, not the source data. The Norm checkbox is automatically greyed out for those types.
Use this section to control which source rows appear in the output and whether to split the output into separate files.
Select a source column from the dropdown. This is the column whose values determine which rows belong together. Leave as (none) to include all rows in one file.
Click Load Values to populate the value list below with the unique values found in that column. Then select which values to include or exclude.
| Mode | What it does | When to use |
|---|---|---|
| Include selected | Only rows where the Group column matches one of your ticked values | You want specific groups only (e.g. only org codes 100 and 200) |
| Exclude selected | All rows EXCEPT those matching your ticked values | You want everything except a few known bad groups |
| Not blank | All rows where the Group column has any non-empty value | Best for recurring runs — automatically includes any new values added to the source in future |
| Mode | What it does |
|---|---|
| One file per group value | Creates a separate output file for each unique value in the Group column. Use {GROUP} in the file name pattern to include the value in the filename. |
| One combined file | All matching rows go into a single output file. |
A config stores everything you set in the form: template selection, header row, column mapping (type, source, lookup set, norm for every column), output folder, file format, file name pattern, filter mode, and group column.
Configs are stored on the Saved_Configs sheet. You can view them there but should not edit them manually.
The source file path is intentionally NOT saved. Each run you browse to the current month's source file. This prevents the config from accidentally pointing to last month's data.
The Presets sheet is a reference table of common STATIC values.
Column A = Template_Column (the template column name, e.g. ORGANIZATION_CODE).
Column B = Preset_Value (the value to fill, e.g. 100).
When you select STATIC type for a column in the mapping form, the Source/Value dropdown is pre-populated with all Preset_Value entries that match the template column name. This saves typing and prevents typos.
Auto-append: When you save a config with a STATIC value that is not already in the Presets sheet, TFT adds it automatically. Over time the Presets sheet builds up a complete library of known values.
The Batch Run form lets you run several saved configs sequentially with one source file and one click. This is ideal when you produce multiple template variants from the same Master Raw Data file.
Each config runs in sequence. Progress is shown in the status bar. Results are logged to the Log sheet when complete.
Every run is recorded on the Log sheet. The log is cumulative — rows are never removed automatically (use Log Archive to clear it periodically).
| Column | Contents |
|---|---|
| A — Timestamp | Date and time of the event |
| B — Event | INFO (starting a config), SAVED (file written), DONE (config complete), ERROR (something failed) |
| C — Detail | File path (clickable hyperlink for SAVED rows), or a descriptive message |
| D — Rows | Number of data rows written to the output file |
| E — Open Folder | Clickable hyperlink to the output folder in Windows Explorer |
| F — Hint | Additional context (e.g. config name, filter applied) |
The Send Email button opens a file picker that shows all output files recorded in the Log. The email is composed in Outlook and opened for your review — it is never sent automatically.
[file not found] and
are NOT pre-selected.The bottom of the picker shows a preview of the To:, Subject:, and file list that will appear in the email. If the To: field (cell B16 on the Run sheet) is blank, a warning is shown — you can still open the email and fill in the address manually in Outlook.
Outlook opens with the email ready to review. You can edit the recipients, subject, body, or add additional attachments before clicking Send in Outlook.
When the Log sheet grows large, use Log Archive to export it and clear it.
| Symptom | Likely cause | Fix |
|---|---|---|
| Template columns don't appear in the mapping grid | Scan Template was not clicked after selecting the template | Click Scan Template |
| Source column dropdowns are empty | Scan Source was not clicked after selecting the source file | Browse to the source file and click Scan Source |
| Output file has 0 rows | Filter is too restrictive — no rows matched the selected values | Check the Filter/Group section. Try "Not blank" or clear the filter |
| TRANSACTION_TYPE shows UPDATE for all rows including new items | COND source column check column may be wrong, or the source uses spaces/dashes as "no value" | Confirm the correct check column is selected. Norm handles dashes automatically — no extra action needed if Norm is ticked. |
| ITEM_NUMBER has dashes stripped from it | Norm is ticked on ITEM_NUMBER | Untick Norm for ITEM_NUMBER. Norm should only be used where dirty data is expected. |
| Email picker is empty (no files listed) | No SAVED rows in the Log — no runs have been completed yet | Run a config first, or use Add File… to manually add files to attach |
| Send Email shows no To: address in the preview | Cell B16 on the Run sheet is blank | Fill in B16. You can also add/edit the address in Outlook after the draft opens. |
| Batch Run uses the wrong output folder | Each config has its own saved folder; the override is empty | Browse to the desired folder in the Output Folder (overrides saved config) field in the Batch Run form |
| File already exists — old version was overwritten | This cannot happen — TFT auto-versions files | Check for _V1, _V2 suffixed files in the output folder |
| Log Archive confirmation appeared but I clicked No — nothing happened | No is the default on the confirmation dialog (intentional) | Click Log Archive again and click Yes this time |