Sunday, September 3, 2023

Automating Data Entry in Tally with PowerShell and Windows Forms

Automating Data Entry in Tally with PowerShell and Windows Forms

Automation can significantly enhance productivity by eliminating repetitive tasks, and PowerShell, combined with Windows Forms, is a powerful tool for such purposes. In this blog post, we'll explore a PowerShell script designed to automate data entry into a form, using data from a CSV file. This script leverages the System.Windows.Forms namespace to simulate keystrokes for data input.

Overview of the Script

The script reads data from a CSV file and simulates keyboard input to enter the data into a form. It follows these steps:

  • Loads the necessary Windows Forms assembly.
  • Reads data from the CSV file.
  • Uses SendKeys to simulate keystrokes for each record in the CSV.

The Script

[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
Start-Sleep -Seconds 5
Import-Csv C:\Users\ersan\OneDrive\Documents\Data.csv | foreach {
    $_.Date
    [System.Windows.Forms.SendKeys]::SendWait("{F2}")
    [System.Windows.Forms.SendKeys]::SendWait($_.Date)
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    Start-Sleep -Seconds 1
    [System.Windows.Forms.SendKeys]::SendWait($_.VoucherType)
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    Start-Sleep -Seconds 1
    [System.Windows.Forms.SendKeys]::SendWait($_.CashType)
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    Start-Sleep -Seconds 1
    [System.Windows.Forms.SendKeys]::SendWait($_.Amount)
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    Start-Sleep -Seconds 1
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
    Start-Sleep -Seconds 1
}

Step-by-Step Explanation

Loading Windows Forms Assembly

[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')

This line loads the System.Windows.Forms assembly, which is required to use the SendKeys class for simulating keyboard input.

Initial Delay

Start-Sleep -Seconds 5

A 5-second delay allows you to switch to the target application where data entry will occur.

Importing the CSV File

Import-Csv C:\Users\ersan\OneDrive\Documents\Data.csv | foreach {
    ...
}

This line imports the CSV file located at the specified path. Each row in the CSV file is processed in the foreach loop.

Simulating Keystrokes

[System.Windows.Forms.SendKeys]::SendWait("{F2}")
[System.Windows.Forms.SendKeys]::SendWait($_.Date)
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Seconds 1
  • SendWait("{F2}"): Simulates pressing the F2 key.
  • SendWait($_.Date): Simulates typing the date from the CSV file.
  • SendWait("{ENTER}"): Simulates pressing the Enter key.
  • Start-Sleep -Seconds 1: Adds a delay to ensure the application processes the input.

The same pattern is repeated for VoucherType, CashType, and Amount fields.

Final Enter Key Presses

[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Seconds 1

Additional Enter key presses may be required to complete the form submission or move to the next field.

Customizing the Script

Here are some ways you can customize the script:

  • CSV File Path: Update the path to your CSV file in the Import-Csv cmdlet.
  • Field Names: Ensure that the field names in the script (Date, VoucherType, CashType, Amount) match the column headers in your CSV file.
  • Delays: Adjust Start-Sleep durations based on the responsiveness of your target application.

Conclusion

This PowerShell script provides a simple yet effective way to automate data entry tasks. By leveraging the System.Windows.Forms namespace, you can simulate keystrokes and streamline repetitive data entry processes. Customizing the script to suit your specific needs can save time and reduce errors in data entry.

Feel free to adapt this script to your requirements, and happy automating!

Featured Post

Construction Result Summary Jun-2019