> ## Documentation Index
> Fetch the complete documentation index at: https://support.taltech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Insert data into top row and move previous readings down

> Put each new reading at the top of your Excel sheet and push older readings down, with WinWedge using its more advanced DDE mode.

#### WinWedge DDE server settings

Remember to set WinWedge up in DDE Server Mode! See the [DDE Server Mode Setup Guide](https://support.taltech.com/winwedge/dde-server-mode-setup-guide.md).

DDE Application Name: **Excel**

DDE Topic: **System**

DDE Command: **\[RUN(“InsertDataOnTop”)]**

#### Excel instructions

Create or edit a macro module in Excel and enter the following code in the module: (To create a new module click on Insert > Module from the Menus in the Visual Basic Editor Window.)

This example is a variation of the first example (GetSingleField). It is modified to always insert the newest record at the top – thus shifting all previous records down a row.

```
 Sub InsertDataOnTop()
' Inserts data on the top of previous records starting at Row 3 (to allow for Column Labels). If
' you want to start on a different row, please adjust the R variable.

    Dim Chan As Long, vDat As Variant, sDat As String, R As Long

    R = 3 ' Change this value to log data to a different row.

    On Error Resume Next ' ignore errors

    ThisWorkbook.Sheets("Sheet1").Rows(R).Insert ' Insert a row above R

    Chan = DDEInitiate("WinWedge", "COM1") ' Connect to WinWedge on COM1

    vDat = DDERequest(Chan, "Field(1)") ' Get Field(1)
    sDat = vDat(1) ' convert to a string
    ThisWorkbook.Sheets(1).Cells(R, 1).Value = sDat 'Log to R

    DDETerminate Chan ' Terminate the DDE link

End Sub
```

The example above sets up WinWedge to issue a DDE command consisting of the Excel “RUN” command forcing Excel to run the subroutine “InsertDataOnTop()” after each data record is received from your serial device. The “InsertDataOnTop” subroutine performs a DDERequest to WinWedge that returns the contents of FIELD(1) to a variable named “vDat”. vDat is then converted to a string variable, sDat and then is inserted at the top of a column and moves all previous readings down in the sheet sort of like a strip chart recorder. The latest data is always in the specified with all previous readings below it scrolling down as each new reading is inputted. The example above assumes that the open workbook contains a worksheet named Sheet1.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.