Resolving TIA Portal PLC Tag XLSX Import: Missing TIA_Version ID

David Krause15 min read
SiemensTIA PortalTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

Importing a PLC tag table from a Microsoft Excel workbook into SIMATIC TIA Portal is the recommended workflow when you maintain large tag databases externally, generate them from a tool, or hand them off between projects. The expected deliverable is a single .xlsx file that contains one worksheet named PLC Tags with a defined set of column headers, plus a custom document property called TIA_Version set to 1.0. When any of those constraints are violated, TIA Portal aborts the import and surfaces the generic "Import failed" message in the import dialog together with up to two journal entries: a warning reading Missing version ID in the properties of the XLSX file and a fault reading Worksheet "PLC Tags" does not have the required format.

Both journal entries are produced by the same root cause: the workbook is not in the canonical TIA Portal export format. Re-saving the file from Excel without the proper structure (or opening a CSV that was simply renamed to .xlsx) is the most common trigger in the field. Re-save in the XLSX format, not CSV or .xlsm, before re-attempting the import.

The fix is described in the Siemens Industry Online Support entry 109815056, which is the official reference for the export/import cycle of PLC tag tables in TIA Portal. This article expands that reference with the diagnostic steps, schema details, version compatibility, and field-proven checks that are not in the original support note.

Prerequisites

  • TIA Portal V14 SP1 or later (V15, V15.1, V16, V17, V18, V19, V20). The XLSX schema is consistent across versions, but V14 SP1 was the first release to enforce the TIA_Version custom property; imports written for V17 import cleanly into V16 and later but not into V13 SP2 or earlier.
  • Microsoft Excel 2010 or later (32- or 64-bit) to author or inspect the XLSX. LibreOffice 7.x can generate valid XLSX, but the custom-properties part is not always emitted; verify the property after a round-trip if you must use LibreOffice.
  • An open TIA Portal project with a configured PLC (S7-1200, S7-1500, ET 200SP CPU, S7-300/400 via the appropriate firmware package) and write access to the project directory.
  • User right Edit PLC tags in the project, which by default is granted to members of the Engineering group and to the Project editor role in TIA Portal Multiuser.
  • The TIA Portal component STEP 7 Professional (or STEP 7 Basic for S7-1200-only projects) must be installed; the PLC tag importer is part of the STEP 7 optional package and is not shipped with WinCC Unified or PLCSIM alone.

Identifying the Exact Failure

Open the Information system within TIA Portal (F1 while focused on the import dialog) and navigate to Editing PLC tags → Importing and exporting PLC tags → Importing tags from a TIA Portal export file. The journal entries for the failed import are also written to the project log at ...\<ProjectName>\Logs\SystemLogs\PLCTagImport.log on the engineering station; that file is plain-text and can be opened with Notepad for batched diagnosis of multi-PLC projects.

The two journal lines that appear when the import fails are produced by the PLCTagImporter framework class. Their meaning is summarized below.

Journal entry Severity Root cause
Missing version ID in the properties of the XLSX file Warning The XLSX custom-properties part (docProps/custom.xml) does not contain a TIA_Version named property, or its value is empty.
Worksheet "PLC Tags" does not have the required format Fault Either the worksheet name is not exactly PLC Tags, the header row is missing one of the mandatory columns, an extra column is present, or the cell types do not match the schema (for example, a numeric Address cell where a string is required).

Both failures are caught before any tag is created, so the destination PLC's tag table remains untouched. This is intentional: a partial import of a large tag file is harder to reconcile than a clean abort. To prove the import is non-destructive, open the destination tag table before retrying; the row count and the existing tags must be unchanged.

Required XLSX File Structure

The worksheet must be named PLC Tags (capitalization preserved, including the space). The first row is the header; every column listed below is mandatory in the order shown. The exact column list is documented in the TIA Portal Information System and reinforced in Siemens support entry 109815056.

Column Header Cell type Required Notes
A Name String Yes Must be a valid IEC 61131-3 identifier (letters, digits, underscore; cannot start with a digit; max 125 characters). Reserved keywords such as L, N, T, U, Z are rejected.
B Path String No Hierarchical path of the tag, e.g. Data\Recipe\Step1. Use \ as separator. Empty when no hierarchy is desired.
C Data Type String Yes IEC type (BOOL, INT, REAL, STRING, ARRAY, UDT) or a user-defined type from the project, qualified with its namespace.
D Address String Yes For S7-1200/1500, the absolute address including percent sign and any DB prefix, e.g. %DB100.DBX0.0. For bit memory: %M0.0; for inputs: %I0.0; for outputs: %Q0.0.
E Comment String No Free text up to 256 characters. Embedded semicolons must be escaped because the XLSX importer internally converts them to field separators during export.
F HMI Visible Boolean No TRUE / FALSE. Default TRUE if the cell is empty.
G HMI Accessible Boolean No TRUE / FALSE. Default TRUE if the cell is empty.
H HMI Write-Protected Boolean No TRUE / FALSE. Default FALSE if the cell is empty.
I OPC UA Visible Boolean No Available from TIA V16 on; controls exposure via the OPC UA server of the CPU.
J OPC UA Read-Only Boolean No Available from TIA V16 on.
K Connection String No HMI connection name. Empty uses the default connection of the HMI device.
L PLC String No (Yes for multi-PLC projects) Target PLC name within the project. Required if the project contains more than one PLC; ignored otherwise.
Hidden columns are not tolerated. If you insert a column that is not in the schema above, the importer will report the format fault and reject the sheet. Hide rows instead of columns when you need to exclude tags temporarily; the importer skips empty rows past row 1 but still counts hidden rows, so a hidden row with data is still imported.

A minimal, valid data row looks like this in the XLSX file:

Name          | Path          | DataType | Address             | Comment        | HMI Visible | HMI Accessible | HMI Write-Protected
--------------|---------------|----------|---------------------|----------------|-------------|----------------|--------------------
Motor_Run     | Plant\Boiler  | BOOL     | %Q0.0               | Run feedback   | TRUE        | TRUE           | FALSE

Setting the TIA_Version Custom Property

The single most common reason a workbook that looks correct in Excel is rejected by TIA Portal is the absence of the TIA_Version custom property. The XLSX format stores custom document properties in the Open Packaging Convention (OPC) part docProps/custom.xml; TIA Portal reads this part on import and aborts with the warning above if the property is missing or empty.

The TIA Portal Information System contains a NOTE that explicitly says: "When you see the message 'Missing version ID in the properties of the XLSX file' during import, the internal export format of the file is invalid. In this case open the 'Customize' tab in the extended document properties of the XLSX file. Set the value 'TIA_Version' to '1.0'." The procedure below is the exact implementation of that note.

Procedure in Microsoft Excel 2016 and later

  1. Open the workbook in Excel.
  2. Choose File → Info → Properties → Advanced Properties.
  3. Switch to the Custom tab (this is the "Customize" tab referenced in the TIA Portal help).
  4. Click in the Name field and type exactly: TIA_Version
  5. Click in Type and select Text.
  6. Click in Value and type exactly: 1.0
  7. Click Add, then Apply and OK.
  8. Save the file as Excel Workbook (*.xlsx). Do not re-save as .xlsm (macro-enabled) or .xlsb (binary); the macro-enabled formats can strip custom properties on a round-trip and TIA Portal will not import them.

To verify the property persists, reopen the file and re-open Advanced Properties → Custom; the entry must remain listed. If the property disappears after a Save As, the file was written by an editor that does not preserve docProps/custom.xml; switch editors and recreate the file.

You can also inspect the package directly by renaming the file to .zip, opening it, and reading docProps/custom.xml. A valid file contains a node similar to:

<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE} pid="2" name="TIA_Version">
  <vt:lpwstr>1.0</vt:lpwstr>
</property>

The lpwstr (long pointer wide string) type is critical: if Excel writes the property as a numeric i4 or a date filetime, the importer rejects the value even though the name and content appear correct. The fault line The custom property 'TIA_Version' is not of type Text appears in the journal in that case.

Step-by-Step Import Procedure

  1. In the TIA Portal project tree, expand the target PLC and double-click PLC tags → Default tag table (or any user-defined tag table).
  2. Right-click the tag table and choose Import → Import tags from TIA Portal export file.
  3. Browse to the prepared .xlsx file and confirm. The dialog shows a progress bar and writes a status line.
  4. If the import succeeds, a green check appears and the log line reads Tags successfully imported from file. If it fails, click Show log to see the warning/fault pair described above.
  5. After a successful import, compile the PLC with Ctrl+B (or right-click the device → Compile → Software (rebuild all blocks)) so the tag table is rebuilt for the offline view.
  6. For an online CPU, download the rebuilt tag table with Online → Download to device; the download is incremental and preserves the rest of the user program.
  7. Open the online view of the tag table; the Status column must show the current process value for all tags mapped to I/O. Tags assigned only to the load image (no address) show --, which is expected.

The same import dialog supports Import tags from a generic CSV file, which is the alternate path covered in the next section.

Alternative Import Methods

When the XLSX path keeps failing, two officially supported alternatives are available without leaving TIA Portal.

  • CSV import: Save the same worksheet as CSV UTF-8 (Comma delimited) and import via Right-click tag table → Import → Import tags from a generic CSV file. The CSV variant bypasses the TIA_Version check because CSV has no custom-properties part, but it still enforces the column schema. CSV is preferred for CI/CD pipelines because it diffs cleanly in Git and does not require a desktop Excel install to author.
  • TIA Portal Openness API: Use the C# or Python automation interface (Siemens.Engineering.dll) with the PlcTagTable and PlcTag classes to add tags programmatically. The minimum C# snippet below adds a single BOOL tag to a tag table; compile against the TIA Portal version-specific Siemens.Engineering.dll available in the installation directory C:\Program Files\Siemens\Automation\Portal V<xx>\PublicAPI\<version>\.
using Siemens.Engineering;
using Siemens.Engineering.SW.Tags;

public static void AddTag(PlcTagTable table, string name, string address, string dataType)
{
    PlcTag tag = table.Tags.Create(name);
    tag.DataTypeName = dataType;       // e.g. "Bool"
    tag.LogicalAddress = address;      // e.g. "%Q0.0"
    tag.Comment = new System.Globalization.CultureInfo("en-US");
    tag.Comment.TextItems.Add(new Siemens.Engineering.SW.Tags.PlcTextItem("en-US", "Created via Openness"));
}
Third-party tools that promise "one-click import" of legacy STEP 7 V5.5 symbol tables or Allen-Bradley RSLogix 5000 exports into TIA Portal are not part of the Siemens catalog. Their internal mapping of data types (for example TIMER → IEC_TIMER) is not officially supported and the resulting address layout must be verified tag by tag against the source project.

Troubleshooting Matrix

Symptom Most likely cause Resolution
"Missing version ID in the properties of the XLSX file" TIA_Version custom property missing or empty Add the property in File → Info → Advanced Properties → Custom, value 1.0, type Text.
"Worksheet 'PLC Tags' does not have the required format" Worksheet renamed, missing header column, or extra column inserted Confirm sheet name is exactly PLC Tags; recreate header row using the column list above; remove any extra columns.
Import succeeds but no tags appear Filter on the tag table hides new rows; or wrong target PLC selected Clear all filters; confirm the PLC column in the XLSX matches an existing PLC name (case-sensitive).
"Address 'I0.0' is invalid for data type BOOL" Address format is not the symbolic one (missing %I prefix) Use %I0.0 for inputs, %Q0.0 for outputs, %M0.0 for bit memory, %DB100.DBX0.0 for data-block bits.
"Name contains invalid characters" Spaces, hyphens, or reserved keywords (L, N, T, U, Z) Rename the tag to use only letters, digits, and underscore; do not start with a digit.
"File is in use by another process" Excel still holds the file open in protected view Close Excel completely or save as a new file before retrying.
"The custom property 'TIA_Version' is not of type Text" Property was created as Number or Date Delete the entry, recreate it with Type = Text, set value 1.0.
"The number of tags in the import file exceeds the CPU limit" CPU firmware caps the number of PLC tags (e.g. S7-1214C = 1 000, S7-1516 = 8 000) Split the workbook into multiple tag tables or upgrade the CPU firmware to a higher-capacity variant.
Tags imported but HMI cannot see them HMI Visible / HMI Accessible columns set to FALSE Set the columns to TRUE, or leave them empty; default is TRUE.

Verification

After a successful import, perform the following checks before commissioning.

  1. In the PLC tag table, sort by Address and confirm that no two tags point to the same absolute address. Duplicate addresses cause the CPU to report a diagnostic error on the next download and can corrupt process data.
  2. Compile the device; the Compile output window must finish with No errors, no warnings. Any warning that begins with Tag table: indicates that the import inserted a tag whose address conflicts with a system-side reserved area; resolve before download.
  3. Download the project to the CPU and watch the online view. The Status column must show the current process value for all tags that are mapped to I/O or a process image. Tags in the load image but not assigned to an address show -- in the value column; this is normal.
  4. For HMI exposure, verify that the HMI device is configured with the same PLC and that the connection list contains a HMI connection pointing to the target PLC. Tags with HMI Visible = FALSE are filtered out of the HMI tag picker automatically.
  5. For OPC UA exposure (TIA V16+), open the CPU's OPC UA server properties and confirm the imported tags appear under the configured namespace; tags with OPC UA Visible = FALSE are not exposed.

Field-Proven Tips

  • Author the workbook in Excel first and then export it from a TIA Portal project that has at least one valid tag. The export step writes a canonical PLC Tags worksheet with the correct headers and the TIA_Version property already set. Use that exported file as the template and overwrite the rows — this is the only way to guarantee a 1:1 format match.
  • Do not let OneDrive, SharePoint, or Google Drive auto-save the file while the TIA Portal importer has it open. The OPC part stream can be locked by the cloud sync client and the import will silently fail with the generic Import failed line.
  • For multilingual projects, set the Excel cell locale to English (United States) before populating TRUE/FALSE values. German Excel writes WAHR/FALSCH, which TIA Portal does not parse; the boolean columns are treated as invalid type and the row is rejected.
  • Keep the import file under 25 MB. TIA Portal parses the entire workbook in memory; files above 30 MB can crash the importer on 32-bit installations of TIA Portal V15.1.
  • When the project uses Multiuser, only one user may hold the tag table in exclusive write mode for the import to succeed. Configure the multiuser server to grant the editor user the Owner role on the relevant server object before the import.

Version Compatibility Matrix

TIA Portal version XLSX schema accepted Minimum firmware (S7-1500) Notes
V14 SP1 TIA_Version 1.0 V1.7 First release to enforce TIA_Version.
V15 / V15.1 TIA_Version 1.0 V1.8 / V2.0 Adds OPC UA column support in V15.1 only when CPU firmware is V2.0+.
V16 TIA_Version 1.0 V2.6 OPC UA Visible / Read-Only columns recognized.
V17 TIA_Version 1.0 V2.9 Improves multi-PLC routing via the PLC column.
V18 TIA_Version 1.0 V3.0 Adds STRING length validation.
V19 / V20 TIA_Version 1.0 V3.1 / V4.0 Schema unchanged; performance improvements for files > 10 000 rows.

Why does TIA Portal still reject my file after I add the TIA_Version property?

Open the file in Excel and re-open File → Info → Advanced Properties → Custom. If the entry has disappeared, the file was saved in a non-XLSX format (CSV, XLS, XLSB, XLSM) that drops custom properties. Save explicitly as Excel Workbook (*.xlsx) and verify the property persists.

Can I import tags from a CSV instead of an XLSX?

Yes. Save the same worksheet as CSV UTF-8 (Comma delimited) and use the import dialog. The CSV variant bypasses the TIA_Version check but still requires the same column headers and the same row format. CSV is preferred for automated CI workflows because it diffs cleanly in Git.

My project contains more than one PLC. How do I route tags to a specific CPU?

Add a PLC column to the worksheet and enter the exact PLC name as it appears in the project tree (case-sensitive). If the column is empty, TIA Portal imports the tags into the PLC that owns the currently selected tag table, which is rarely what you want in a multi-PLC project.

What TIA Portal version introduced the TIA_Version property?

The property is mandatory starting with TIA Portal V14 SP1 and is the same value 1.0 for every later version. An export from a V17 project imports cleanly into V16, V18, and V19 as long as the receiving project uses compatible firmware; downgrades to V13 SP2 or earlier are not supported.

How do I bulk-add more than 10 000 tags without crashing the importer?

Split the workbook into chunks of 5 000 rows and run separate imports into different tag tables (for example Tags_Process, Tags_Recipe, Tags_Diagnostics). For very large or dynamic tag sets, switch to the TIA Portal Openness API and create tags with the PlcTagComposition.Add method, which does not load the XLSX into memory.

Can I open the XLSX in LibreOffice or Google Sheets and still get a valid import?

LibreOffice 7.x can open and re-save the file, but the TIA_Version custom property is not always preserved on round-trip. Google Sheets does not support custom document properties at all. After editing in either tool, open the file in Excel, re-add the TIA_Version property, and re-save as XLSX before importing.

Back to blog