# Paste from Clipboard into Excel - Harder than it looks?

## 14 posts in this topic

Hi All

I have used my script to paste a string ($TestCSVGenerator) onto the clipboard - it has text seperated by tabs and at certain intervals there are CRLF. I am certain that this is a valid string because after I run my script (and it fails to do what I need) I can then manually 'Paste' the string into Excel using CTRL v and Excel puts the text in rows separated by the tab position and starts a new row of cells after a CRLF. (I make sure that the clipboard was empty before running my program). All I need is a command that pastes the string into a certain cell and in theory the above should happen but it doesn't! First I tried the following: _Excel_RangeWrite ($oWorkbook, 1, $TestCSVGenerator, "C18", False, True) This pastes, but everything goes in one cell! I've tried all the combinations of True/false Next I tried: _Excel_RangeCopyPaste($oWorkbook.ActiveSheet, Default, "C18")

This pastes nothing at all (gives @error =4 ), if I define a range of cells Excel does highlight them.

Any ideas or alternative methods? I guess I could paste the text painfully cell by cell but Excel seems to understand what I have on the clipboard if I paste it manually - it's the automation that is flooring me!

Cheers

James

##### Share on other sites

Hi Again

After typing 'manually pasting' a couple of times in my question, and getting a cup of tea, I have just realised that I had forgotten the whole reason for using Autoit in the first place!! I wanted to play back key presses! So...

Send ("{CTRLDOWN}")
Send ("v")
Send ("{CTRLUP}")

Solves my problem! (Just hope that there is a 'move cursor to cell x,y' instruction)

Anyway I'm still interetsted as to why the other two methods didn't work.

James

##### Share on other sites

Arrgh

Can't find a quick way of putting the Excel cursor to a particular cell! Kinda back to square one! I could just use this:

_Excel_RangeCopyPaste($oWorkbook.ActiveSheet, Default, "B16") That moves the cursor to B16! James #### Share this post ##### Link to post ##### Share on other sites _Excel_RangeWrite does not work this way. You provide a string and tell _Excel_RangeWrite to write it into a single-celled Range. _Excel_RangeWrite exactly does what it is being told to do Will come up with a solution how to insert data without automating the GUI! My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts Excel - Example Scripts - Wiki Word - Wiki PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support Tutorials: ADO - Wiki #### Share this post ##### Link to post ##### Share on other sites #5 · Posted (edited) Use this code to create an array out of the string and then use _Excel_RangeWrite. #include <Array.au3> Global$sString = "Row 1 Col 1" & @TAB & "Row 1 Col 2" & @CRLF & "Row 2 Col 1" & @TAB & "Row 2 Col 2"
Global $aTarget = _StringSplit2D($sString, @TAB)
_ArrayDisplay($aTarget) ; #FUNCTION# ====================================================================================== ; Name ................: _StringSplit2D($str, $delimiter) ; Description .........: Create 2D array from delimited string ; Syntax ..............: _DBG_StringSplit2D($str, $delimiter) ; Parameters ..........:$str       - EOL (@CR, @LF or @CRLF) delimited string to split
;                           $delimiter - Delimter for columns ; Return values .......: 2D array ; Author ..............: kylomas ; ================================================================================================= Func _StringSplit2D($str, $delimiter) Local$a1 = StringRegExp($str, '[^\r\n]+', 3) Local$rows = UBound($a1),$cols = 0
; determine max number of columns
For $i = 0 To UBound($a1) - 1
StringReplace($a1[$i], $delimiter, '')$cols = (@extended > $cols ? @extended :$cols)
Next
; define and populate array
Local $aRET[$rows][$cols + 1] For$i = 0 To UBound($a1) - 1$a2 = StringSplit($a1[$i], $delimiter, 3) For$j = 0 To UBound($a2) - 1$aRET[$i][$j] = $a2[$j]
Next
Next
Return $aRET EndFunc ;==>_StringSplit2D Edited by water Code was missing My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts Excel - Example Scripts - Wiki Word - Wiki PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support Tutorials: ADO - Wiki #### Share this post ##### Link to post ##### Share on other sites Hi Water I couldn't see any code attached? I actually had an array before I converted it to a string, I've been through all the same pain with the Array but I'm looking forward to seeing your suggestion! James #### Share this post ##### Link to post ##### Share on other sites Added script above. If you already have an array then there shouldn't be a problem with _Excel_RangeWrite. Which problems did you have? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts Excel - Example Scripts - Wiki Word - Wiki PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support Tutorials: ADO - Wiki #### Share this post ##### Link to post ##### Share on other sites I dont know if i got it right, but something like this maybe? #include <Excel.au3> Local$sWorkbook = "?" ;put the file name here ***************************

$oWorkbook = _Excel_BookAttach($sWorkbook, "filename")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 2", "Error attaching to '" &$sWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

$sString = "A1" & @CRLF & "A2" & @TAB & "B2" & @TAB & "C2" & @TAB & @CRLF & "A3" & @TAB & "B3" & @TAB & @CRLF & "A4" ClipPut($sString)
$oWorkbook.Activesheet.Paste($oWorkbook.Activesheet.Range("A1"))
Exit

You need to open manually and attach or change the method to"_Excel_BookOpen".

##### Share on other sites

Hi Water

The same problem with pasting an array using  _Excel_RangeWrite in that it puts all the text into one cell. Seems odd to call it 'RangeWrite' if it only goes into a single cell - better name might be CellWrite?

When it does put all the text in one cell I can 'copy' the text in that cell (from the edit line at the top of the Excel window) and then 'paste' it into another cell on the sheet and hey presto it puts all the text into seperate cells! I was wondering if any 'copy special' stuff was the issue? As you say it looks as if _Excel_RangeWrite goes to a lot of effort to put everything into a single cell.

Cheers

James

##### Share on other sites
1 hour ago, jamesinnewcastle said:

Seems odd to call it 'RangeWrite' if it only goes into a single cell - better name might be CellWrite?

Did you try the example scripts that come with the help file for _Excel_RangeWrite? I know that the function can handle strings, 1D and 2D arrays.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:

##### Share on other sites

Please post an example script (a stripped down reproducer of your problm) where you use an array.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:

##### Share on other sites

Sorry - been out of the office - will try to post a reply tomorrow - might take a while to strip down the code.

The example scripts didn't quite do what I needed.

many thanks

James

##### Share on other sites

#13 ·  Posted (edited)

Hi Water

Hi MichaelHB - sorry I missed your post.

Attached is my program - it all runs in one directory - you can see the path name, you may need to change it I guess. There are two ancilliary files that need to be there. The program reads in a file and tries to put it into the execl sheet on a one item per cell basis.

You should see that it does take notice of the CRLF in that the strings get put into cells one below each other but the TABs are ig nored. If you highlight a cell and copy the text from the Excel edit box at the top of the page and then paste that into another cell - then Excel does take note of the Tabs and put each part of the string into a different cell.

What I need is to have each chunk of text in its own cell. You can see what I want to do by looking at the Excell file - basically this program interrogates a database and pastes the results into Excel.

I've attached a file - hope it works - ther was an interesting 'autoit.zip' function when I zipped the files so I used that.

Cheers

JamesAuto It.zip

Edited by jamesinnewcastle

##### Share on other sites

Hmmmm

It eems that I have never understood csv and Excel!

It is completely correct that Excel 'pastes' csv files into single cells for each string up to a CRLF. So neither Autoit or Excel are doing anything wrong - looks like its just me again!! There is a command applied manually that will seperate the string apparently but I think it will be easier for me to do the paste cell by cell!

Thansk all

## Create an account

Register a new account

• ### Similar Content

• By fenhanxue
i want to copy a picture file to clipboard, so that i can paste the picture through ctrl+V
this is my code ,but it dosen't work :
#AutoIt3Wrapper_UseX64 = n #Include <Clipboard.au3> #include <GDIPlus.au3> _GDIPlus_Startup() $hClipboard_Bitmap = _GDIPlus_BitmapCreateFromFile('C:\1.jpg') _ClipBoard_Open(0) _ClipBoard_SetDataEx($hClipboard_Bitmap,$CF_BITMAP) _ClipBoard_Close() _GDIPlus_Shutdown() can you help me • By anusha Hi I have jus started using auto-it . Please correct me if I'm wrong. I need to read data from an input in text box and search in excel file and return value in next column of matched cell on GUI. I have written below code but i cannot use variable which has data stored. it works only when search string is hard coded. Please help out. Example() Func Example() Local$GuiMain = GUICreate("EXCEL TEST", 399, 180) ;creates main GUI
;~ Local $idOK = GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
Local $iWidthCell = 70 Local$idLabel = GUICtrlCreateLabel("PART NUMBER", 10, 30, $iWidthCell,50) Local$RUN_1 = GUICtrlCreateButton("OK", 70, 70, 85, 25)
Local $Input_1 = GUICtrlCreateInput("PART NUMBER", 100, 20, 120, 20) Local$sMenutext = GUICtrlRead($Input_1, 1) GUISetState(@SW_SHOW,$GuiMain)

While 1
$MSG = GUIGetMsg() Select Case$MSG = $GUI_EVENT_CLOSE Exit Case$MSG = $RUN_1 Local$oAppl = _Excel_Open()

Local $sFilePath1 = "D:\Anu_WorkFolder\Components.xlsx" Local$oWorkbook = _Excel_BookOpen($oAppl,$sFilePath1, Default, Default, True)
Local $aResult = _Excel_RangeFind($oWorkbook, $sMenutext , Default, Default,$xlWhole)
• By Nareshm
How to Activate Opened Excel Windows Using Class not Tittle, Because Some time opened defferent excel that have different name.
I Tried with
Winactivate ("[CLASS:XLMAIN]") but not working
• By willichan
Here is another one from my archives that filled a specific need.

Here is the back story if you are interested.

Keep in mind that I wrote this script over 3 years ago, so it may not compile or run directly without some minor tweaks.  It also requires the use of GraphViz to build the graph.
#cs ---------------------------------------------------------------------------- Project Name: ExcelLinksMapper Description: Analyse an Excel file's links and map them out. Creation Date: 9/26/2014 AutoIt Version: Author: willichan Requires: Graphviz (http://graphviz.org/) #ce ---------------------------------------------------------------------------- Opt("MustDeclareVars", 1) ;0=no, 1=require pre-declare Opt("TrayAutoPause", 0) ;0=no pause, 1=Pause Opt("TrayMenuMode", 0) ;0=append, 1=no default menu, 2=no automatic check, 4=menuitemID not return Opt("TrayIconHide", 0) ;0=show, 1=hide tray icon Global Const $MyName=StringLeft(@ScriptName, StringInStr(@ScriptName,".", 0, -1)-1) ;get just the name portion of the script/exe name Global Const$MyMutex=$MyName & "-82243BEBC30533A3" ;name the mutex for this app Global$SQLloaded = False Global $sDbName = @ScriptDir & "\db2gv.db" ConsoleWrite($sDbName & @crlf) If _MutexExists($MyMutex) Then Exit #include <SQLite.au3> #include <SQLite.dll.au3> #include <file.au3> #include <array.au3> #include <excel.au3> _ConfigInitialize() _Main() Func _ConfigInitialize() OnAutoItExitRegister("_ConfigDestroy") ;initializers here Global$sSQliteDll = _SQLite_Startup() If @error Then MsgBox(0, "SQLite Error", "could not load the DLL") Global $sSQLiteDB = _SQLite_Open($sDbName) If $sSQLiteDB = 0 Then MsgBox(0, "SQLite Error", "could not open the database")$SQLloaded =True __CreateTables() EndFunc ;==>_ConfigInitialize Func _ConfigDestroy() ;destructors here If $SQLloaded Then _SQLite_Close() _SQLite_Shutdown() EndIf EndFunc ;==>_ConfigDestroy Func _MutexExists($sOccurenceName) Local $ERROR_ALREADY_EXISTS = 183,$handle, $lastError$sOccurenceName = StringReplace($sOccurenceName, "\", "")$handle = DllCall("kernel32.dll", "int", "CreateMutex", "int", 0, "long", 1, "str", $sOccurenceName)$lastError = DllCall("kernel32.dll", "int", "GetLastError") Return $lastError[0] =$ERROR_ALREADY_EXISTS EndFunc ;==>_MutexExists Func __CreateTables() _SQLite_Exec($sSQLiteDB, "DROP TABLE IF EXISTS nodes;") _SQLite_Exec($sSQLiteDB, "CREATE TABLE IF NOT EXISTS nodes( name TEXT PRIMARY KEY, fileexists INTEGER);") _SQLite_Exec($sSQLiteDB, "DROP TABLE IF EXISTS links;") _SQLite_Exec($sSQLiteDB, "CREATE TABLE IF NOT EXISTS links( id INTEGER PRIMARY KEY, name1 TEXT, name2 TEXT, weight INTEGER);") EndFunc Func _Main() Local $sInfile,$vResult, $iErrLoop$sInfile = FileOpenDialog("Source File", @WorkingDir, "Excel files (*.xl*)", 1 + 2) If Not FileExists($sInfile) Then MsgBox(0, "Excel Links Mapper Error", "Unable to locate source file") Exit EndIf$vResult = $SQLITE_IOERR$iErrLoop = 5 While $vResult =$SQLITE_IOERR $vResult = _SQLite_Exec($sSQLiteDB, "INSERT OR IGNORE INTO nodes ('name', 'fileexists') VALUES (" & _SQLite_FastEscape($sInfile) & ", 1);") If Not$vResult = $SQLITE_OK Then Sleep(100)$iErrLoop -= 1 If $iErrLoop = 0 Then ConsoleWrite($iErrLoop & " tries" & @CRLF & $sInfile & @CRLF)$vResult = $SQLITE_OK EndIf WEnd _GetExcelLinks($sInfile) Global $hOutfile = FileOpen(@ScriptDir & "\" &$MyName & ".gv", 2) If $hOutfile = -1 Then MsgBox(0,$MyName & " ERROR", "Unable to upen file for output") Exit EndIf _WriteHeader() _WriteNodes() _WriteLinks() _WriteFooter() FileClose($hOutfile) _GenerateGraph() ShellExecute(@ScriptDir & '\ExcelLinksMapper.png') EndFunc ;==>_Main Func _GetExcelLinks($strFileName) Local $hQuery,$aCount, $iErrLoop,$vResult ConsoleWrite($strFileName & @CRLF) Local$iLoop, $iExists Local$aLinks Local Const $xlExcelLinks = 1 Local$oExcel = _Excel_Open() Local $ret = _Excel_BookOpen_NoUpdate($oExcel, $strFileName, True, True) Local$err = @error If $err Then If Not IsObj($oExcel) Then ConsoleWrite($ret & " - " &$err & @CRLF) Exit EndIf EndIf $aLinks =$oExcel.ActiveWorkbook.LinkSources($xlExcelLinks) _Excel_BookClose($oExcel, False) _Excel_Close($oExcel, False, True) If IsArray($aLinks) Then If UBound($aLinks) > 0 Then For$iLoop = 0 To UBound($aLinks) - 1 If$aLinks[$iLoop] <>$strFileName Then $iExists = FileExists($aLinks[$iLoop]) ConsoleWrite("DEBUG - Calling WriteNode()") __WriteNode($aLinks[$iLoop],$iExists) ConsoleWrite("DEBUG - Calling WriteLink()") __WriteLink($strFileName,$aLinks[$iLoop]) If$iExists And ($aLinks[$iLoop] <> $strFileName) Then _GetExcelLinks($aLinks[$iLoop]) EndIf Next EndIf EndIf EndFunc ;==>_GetExcelLinks Func __WriteNode($sName, $iExists) Local$iErrLoop = 5 ;Number of attempts to make Local $vResult Do ConsoleWrite("DEBUG - WriteNode()" & @CRLF & " _SQLite_Exec(INSERT OR IGNORE INTO nodes ('name', 'fileexists') VALUES (" & _SQLite_FastEscape($sName) & ", " & $iExists & ");) - create node entry" & @CRLF)$vResult = _SQLite_Exec($sSQLiteDB, "INSERT OR IGNORE INTO nodes ('name', 'fileexists') VALUES (" & _SQLite_FastEscape($sName) & ", " & $iExists & ");") If Not$vResult = $SQLITE_OK Then Sleep(100)$iErrLoop -= 1 If $iErrLoop = 0 Then$vResult = $SQLITE_OK ;Used up all our attempts, so simulate a success Until$vResult = $SQLITE_OK EndFunc ;==>__WriteNode Func __WriteLink($sName1, $sName2) Local$iErrLoop = 5 ;Number of attempts to make Local $vResult,$hQuery, $vCount ConsoleWrite("DEBUG - WriteNode()" & @CRLF & " _SQLite_Query(SELECT weight FROM links WHERE 'name1'=" & _SQLite_FastEscape($sName1) & " AND 'name2'=" & _SQLite_FastEscape($sName2) & ";) - lookup link entry" & @CRLF) _SQLite_Query($sSQLiteDB, "SELECT weight FROM links WHERE 'name1'=" & _SQLite_FastEscape($sName1) & " AND 'name2'=" & _SQLite_FastEscape($sName2) & ";", $hQuery) ConsoleWrite("DEBUG - _SQLite_FetchData()" & @CRLF) _SQLite_FetchData($hQuery, $vCount) If UBound($vCount) > 1 Then _ArrayDisplay($vCount) If$SQLITE_OK And UBound($vCount) > 1 Then$vCount = $vCount[1] + 1 Else$vCount = 1 EndIf Do If $vCount = 1 Then ConsoleWrite("DEBUG - _SQLite_Exec() - create link entry" & @CRLF)$vResult = _SQLite_Exec($sSQLiteDB, "INSERT INTO links ('name1', 'name2', 'weight') VALUES (" & _SQLite_FastEscape($sName1) & ", " & _SQLite_FastEscape($sName2) & ", " &$vCount & ");") Else ConsoleWrite("DEBUG - _SQLite_Exec() - update link entry" & @CRLF) $vResult = _SQLite_Exec($sSQLiteDB, "UPDATE links SET 'weight'=" & $vCount & " WHERE 'name1'=" & _SQLite_FastEscape($sName1) & " AND 'name2=" & _SQLite_FastEscape($sName2) & ";") EndIf If Not$vResult = $SQLITE_OK Then Sleep(100)$iErrLoop -= 1 If $iErrLoop = 0 Then$vResult = $SQLITE_OK ;Used up all our attempts, so simulate a success Until$vResult = $SQLITE_OK EndFunc ;==>__WriteLink ; #FUNCTION# ==================================================================================================================== ; Author ........: SEO <locodarwin at yahoo dot com> ; Modified.......: litlmike, water, GMK, willichan ; =============================================================================================================================== Func _Excel_BookOpen_NoUpdate($oExcel, $sFilePath,$bReadOnly = Default, $bVisible = Default,$sPassword = Default, $sWritePassword = Default) If Not IsObj($oExcel) Or ObjName($oExcel, 1) <> "_Application" Then Return SetError(1, @error, 0) If Not FileExists($sFilePath) Then Return SetError(2, 0, 0) If $bReadOnly = Default Then$bReadOnly = False If $bVisible = Default Then$bVisible = True ;; changing the second parameter on the following line to a 0 tells Excel not to update any links. Local $oWorkbook =$oExcel.Workbooks.Open($sFilePath, 0,$bReadOnly, Default, $sPassword,$sWritePassword) If @error Then Return SetError(3, @error, 0) $oExcel.Windows($oWorkbook.Name).Visible = $bVisible ; If a read-write workbook was opened read-only then return an error If$bReadOnly = False And $oWorkbook.Readonly = True Then Return SetError(4, 0,$oWorkbook) Return $oWorkbook EndFunc ;==>_Excel_BookOpen_NoUpdate Func _GenerateGraph() RunWait(@ScriptDir & '\GraphViz238\bin\dot.exe -Tpng "' & @ScriptDir & '\' &$MyName & '.gv" -o "' & @ScriptDir & '\ExcelLinksMapper.png"') EndFunc ;==>_GenerateGraph Func _WriteHeader() __OutLine(0, "digraph main {") EndFunc ;==>_WriteHeader Func _WriteNodes() Local $aResult,$iRows, $iColumns,$iRval Local $iLoop,$sStyle __OutLine(1, "// Nodes") $iRval = _SQLite_GetTable($sSQLiteDB, "SELECT name, fileexists FROM nodes;", $aResult,$iRows, $iColumns) If @error Then ConsoleWrite("_WriteNodes()" & @CRLF & "_SQLite_GetTable") If$iRval = $SQLITE_OK Then For$iLoop = 1 To $iRows If$aResult[($iLoop * 2) + 2] > 0 Then$sStyle = "normal" Else $sStyle = "missing" EndIf __OutNode($aResult[1 + (2 * $iLoop)],$sStyle) ;; Next Else MsgBox($MB_SYSTEMMODAL, "SQLite Error: " &$iRval, _SQLite_ErrMsg() & @CRLF & "in _WriteNotes() calling _SQLite_GetTable()") Exit EndIf EndFunc ;==>_WriteNodes Func __OutNode($sName,$sStyle = Default) If $sStyle = Default Then$sStyle = "Normal" Switch StringLower($sStyle) Case "missing" __OutLine(1, __MakeName($sName) & ' [label="' & StringReplace($sName, "\", "\\") & '",color=red,fontcolor=red,shape=octagon];') Case Else ;"normal", Default __OutLine(1, __MakeName($sName) & ' [label="' & StringReplace($sName, "\", "\\") & '",color=black,fontcolor=black,shape=box];') EndSwitch EndFunc ;==>__OutNode Func _WriteLinks() Local$aResult, $iRows,$iColumns, $iRval Local$iLoop, $sStyle,$aCount __OutLine(1, "// Links") $iRval = _SQLite_GetTable($sSQLiteDB, "SELECT name1, name2 FROM links ORDER BY name1 ASC, name2 ASC;", $aResult,$iRows, $iColumns) If$iRval = $SQLITE_OK Then For$iLoop = 1 To $iRows __OutLink($aResult[1 + (2 * $iLoop)],$aResult[2 + (2 * $iLoop)]) Next Else MsgBox($MB_SYSTEMMODAL, "SQLite Error: " & $iRval, _SQLite_ErrMsg()) Exit EndIf EndFunc ;==>_WriteLinks Func __OutLink($sName1, $sName2,$iWeight = 1) __OutLine(1, __MakeName($sName1) & ' -> ' & __MakeName($sName2) & ';') EndFunc ;==>__OutLink Func _WriteFooter() __OutLine(0, "}") EndFunc ;==>_WriteFooter Func __OutLine($iTabs,$sText) Local $iLoop If$iTabs > 0 Then For $iLoop = 1 To$iTabs FileWrite($hOutfile, " ") ;ConsoleWrite(" ") Next EndIf FileWriteLine($hOutfile, $sText) EndFunc ;==>__OutLine Func __MakeName($sText) Local $sNewName = StringReplace($sText, "\", " ") $sNewName = StringReplace($sNewName, "/", " ") $sNewName = StringReplace($sNewName, "'", " ") $sNewName = StringReplace($sNewName, '"', " ") $sNewName = StringReplace($sNewName, ':', " ") $sNewName = StringReplace($sNewName, '.', " ") $sNewName = StringReplace($sNewName, '-', " ") $sNewName = StringReplace($sNewName, '$', " ")$sNewName = StringStripWS($sNewName, 8) Return StringLower($sNewName) EndFunc ;==>__MakeName
• By Dimmae
Hello,
at first: i'm new here, so please forgive me my mistakes, and show them to me, just that i can learn to do better in the future.
Now to my Problem: i have an excel sheet, where i just need some columns for further actions, but i have no idea how to add single columns to a new array.
I found the following code(the one i just added as a file) from 'water' in this forum, but i wont get how i could add multiple columns into a new array.
The biggest problem in my situation is that i dont know the count of the rows i need for the array, i just got a fix number of rows, which is 4.

Hope you can help me, and sry again for this 'unlucky illustration'.

btw: how can i add code shown as code here, instead of posting it as a attached file?.

autoit-select-column.au3
defects.xlsx