tac Posted March 4, 2013 Share Posted March 4, 2013 (edited) Having some trouble using _FileListToArray function. I have read the help file and I confirmed the first element [0] in the array is the number of files/folders in the array. In my case that would be 3 files. If I manually enter "3" in the "For $i = 2 to 3" then it works, however if I use "For $i = 2 to $aDocs[0]" or "For $i = 2 to $aDocs[0]-1" I can not get it to work. I'm sure I am missing something simple. I would just like to reference the number of items in the array list in my For statement. This works... Local $aDocs = _FileListToArray($sPath) For $i = 2 to 3 With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & $aDocs[$i]) EndWith Next but this doesn't... Local $aDocs = _FileListToArray($sPath) For $i = 2 to $aDocs[0] With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & $aDocs[$i]) EndWith Next Edited March 4, 2013 by tac Link to comment Share on other sites More sharing options...
Nessie Posted March 4, 2013 Share Posted March 4, 2013 Try this: Local $aDocs = _FileListToArray($sPath) For $i = 2 to Ubound($aDocs) - 1 ;I have added Ubound function With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & $aDocs[$i]) EndWith Next Hi! My UDF: NetInfo UDF Play with your network, check your download/upload speed and much more! YTAPI Easy to use YouTube API, now you can easy retrive all needed info from a video. NavInfo Check if a specific browser is installed and retrive other usefull information. YWeather Easy to use Yahoo Weather API, now you can easily retrive details about the weather in a specific region. No-IP UDF Easily update your no-ip hostname(s). My Script: Wallpaper Changer Change you wallpaper dinamically, you can also download your wallpaper from your website and share it with all! My Snippet: _ImageSaveToBMPConvert an image to bmp format. _SciteGOTO Open a file in SciTE at specific fileline. _FileToHex Show the hex code of a specified file Link to comment Share on other sites More sharing options...
tac Posted March 4, 2013 Author Share Posted March 4, 2013 (edited) Try this: Local $aDocs = _FileListToArray($sPath) For $i = 2 to Ubound($aDocs) - 1 ;I have added Ubound function With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & $aDocs[$i]) EndWith Next Hi! Sorry, I should have mentioned I have tried Ubound already. Doesn't help. Edited March 4, 2013 by tac Link to comment Share on other sites More sharing options...
Nessie Posted March 4, 2013 Share Posted March 4, 2013 Try this script: #include <File.au3> #include <Array.au3> Local $FileList = _FileListToArray(@DesktopDir) If @error = 1 Then MsgBox(0, "", "No Folders Found.") Exit EndIf If @error = 4 Then MsgBox(0, "", "No Files Found.") Exit EndIf For $i = 1 To UBound($FileList) - 1 ConsoleWrite($FileList[$i] & @CRLF) ;Show all file contained in the desktop Next It uses Ubound and all seems to work good. And when you say "doesn't work" what the script exactly do ? Hi! My UDF: NetInfo UDF Play with your network, check your download/upload speed and much more! YTAPI Easy to use YouTube API, now you can easy retrive all needed info from a video. NavInfo Check if a specific browser is installed and retrive other usefull information. YWeather Easy to use Yahoo Weather API, now you can easily retrive details about the weather in a specific region. No-IP UDF Easily update your no-ip hostname(s). My Script: Wallpaper Changer Change you wallpaper dinamically, you can also download your wallpaper from your website and share it with all! My Snippet: _ImageSaveToBMPConvert an image to bmp format. _SciteGOTO Open a file in SciTE at specific fileline. _FileToHex Show the hex code of a specified file Link to comment Share on other sites More sharing options...
guinness Posted March 4, 2013 Share Posted March 4, 2013 You don't need to use UBound with that function. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
tac Posted March 4, 2013 Author Share Posted March 4, 2013 (edited) For clarity, this is the full script. This script combines all word documents within the given folder path. It works only if I manually use the number 3 in the For loop since i know there are 3 word docs in the folder. #include #include #include $sPath = "C:\test\" Local $aDocs = _FileListToArray($sPath) Local $oWord = _WordCreate(0,0,0) Local $oDoc = _WordDocGetCollection($oWord, 0) With $oWord.Selection .InsertFile($sPath & $aDocs[1]) EndWith For $i = 2 to 3 With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & $aDocs[$i]) EndWith Next $oWord.Activedocument.SaveAs($sPath & "Analysis Report.docx" ) $oWord.Application.Quit Edited March 4, 2013 by tac Link to comment Share on other sites More sharing options...
tac Posted March 4, 2013 Author Share Posted March 4, 2013 (edited) And when you say "doesn't work" what the script exactly do ? The requested action with this object has failed.: .InsertFile($sPath & $aDocs[$i]) .InsertFile($sPath & $aDocs[$i])^ ERROR Edited March 4, 2013 by tac Link to comment Share on other sites More sharing options...
BrewManNH Posted March 4, 2013 Share Posted March 4, 2013 Use ConsoleWrite to see what the value of $I is at that point, and also use consolewrite to see what $aDocs[$i] contains at the point of failure, should help troubleshoot the issue. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
iamtheky Posted March 4, 2013 Share Posted March 4, 2013 (edited) This works for me, only changes were no trailing backslash on the $sPath & adding it where needed on the .insertfile, and I use the [0] element for count rather than ubound. and set the parameter for filelisttoarray to only return files. #include <File.au3> #include <Array.au3> #include <Word.au3> $sPath = @DesktopDir & "\Combine_word_Docs" ;no backslash Local $aDocs = _FileListToArray($sPath , "*" , 1) ;~ _ArrayDisplay($aDocs) Local $oWord = _WordCreate(0,0,0) Local $oDoc = _WordDocGetCollection($oWord, 0) For $i = 1 to $aDocs[0] With $oWord.Selection .EndKey(6) .InsertBreak(7) .InsertFile($sPath & "\" & $aDocs[$i]) ; added backslash EndWith Next $oWord.Activedocument.SaveAs($sPath & "\Analysis Report.docx") $oWord.Application.Quit Edited March 4, 2013 by boththose ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
tac Posted March 4, 2013 Author Share Posted March 4, 2013 (edited) ah OK i used arraydispay and realized that somehow the array that is defined at the beginning of the script is including the word doc that is saved at the end of the script. I got the script to work now, but I do not understand why it includes that file. From the arraydisplay: [0]|4 [1]|test1.docx [2]|test2.docx [3]|test3.docx [4]|~$alysis Report.docx Edited March 4, 2013 by tac Link to comment Share on other sites More sharing options...
Spiff59 Posted March 5, 2013 Share Posted March 5, 2013 (edited) _FileListToArray returns the fourth file because it exists.Is your Windows Explorer still set in the default nanny-mode where it does not show files with the hidden attirbute?Go into folder options/view and tell your PC to trust you to see hidden files.The tilde-prefixed file is a temporary MS Office file. Each time your script crashes with the object error Word is left hanging with the open temp file. You have to manually clean up by starting Task Manager, going to the Processes tab and executing "End Process" on all the WINWORD.EXE processes you see. Sometimes the temp file does become orphaned and will remain after all the processes are closed. If so, once you're able to view hidden files, simply delete it. Edited March 5, 2013 by Spiff59 Link to comment Share on other sites More sharing options...
tac Posted March 5, 2013 Author Share Posted March 5, 2013 (edited) _FileListToArray returns the fourth file because it exists.Is your Windows Explorer still set in the default nanny-mode where it does not show files with the hidden attirbute?Go into folder options/view and tell your PC to trust you to see hidden files.The tilde-prefixed file is a temporary MS Office file. Each time your script crashes with the object error Word is left hanging with the open temp file. You have to manually clean up by starting Task Manager, going to the Processes tab and executing "End Process" on all the WINWORD.EXE processes you see. Sometimes the temp file does become orphaned and will remain after all the processes are closed. If so, once you're able to view hidden files, simply delete it.I don't think this is it. I already am showing hidden files, and yes every time the script crashes I know I need to manually end my winword.exe.Even if I put a Sleep(xxxx) after the arraydisplay, it still shows the word file that is not saved to that folder until the end of the script. Edited March 5, 2013 by tac Link to comment Share on other sites More sharing options...
BrewManNH Posted March 5, 2013 Share Posted March 5, 2013 You should do a check of the file names to see if any of them start with the tilde, if they do, bypass them, or pop up a dialog box asking if you want to process that one too. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 5, 2013 Moderators Share Posted March 5, 2013 tac,Or you could use my RecFileListToArray UDF which allows you to exclude this type of file from the returned array. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
tac Posted March 5, 2013 Author Share Posted March 5, 2013 You should do a check of the file names to see if any of them start with the tilde, if they do, bypass them, or pop up a dialog box asking if you want to process that one too.tac,Or you could use my RecFileListToArray UDF which allows you to exclude this type of file from the returned array. M23Thanks for the suggestions. There seems to be many ways to work around the issue, I was just curious why it was recognizing the file before it is created? Link to comment Share on other sites More sharing options...
BrewManNH Posted March 5, 2013 Share Posted March 5, 2013 It doesn't happen for me, I ran this script 4 times and not once did it find a file that wasn't in there when the script started. I'm thinking that there's a file in the folder that you don't realize is there. That's the only explanation that I can come up with, because there's no way for the array to contain a filename that doesn't exist when the script reads the files in the folder, it's impossible because the _FileListToArray is run before any of the Word functions so the file shouldn't exist yet. If it does then you have other issues with either your computer, or your methodology. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
iamtheky Posted March 5, 2013 Share Posted March 5, 2013 (edited) either that or maybe you have killed previously running scripts and hung a word process with that file open? put a "runwait (taskkill /IM winword.exe)" at the top of the script, maybe that will help? Disregard All Before (as it has been said) - i read through the thread after typing, as per usual Edited March 5, 2013 by boththose ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now