singbass

Why does folder close

2 posts in this topic

#1 ·  Posted

I have an issue with disk space on a server so I wrote a simple little script to check specific directories and save the sizes to an Excel spreadsheet.  For this script, I am still using version 3.3.8.1.  Everything works fine, I just have a question.

#cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.8.1
#ce ----------------------------------------------------------------------------
#include<date.au3>
#include<excel.au3>
#include<array.au3>
$file = FileOpen(@ScriptDir & "\CMScriptDirList.txt", 0)
If @error Then Exit
;--folder view still OK
$oexcel = _ExcelBookOpen(@ScriptDir & "\CMScriptDirSizesCopy.xlsx")
If @error Then Exit
;--folder view now parent folder
$excelArray = _ExcelReadSheetToArray($oexcel)
$lastrow = $excelArray[0][0]
$lastcol = $excelArray[0][1]
_ExcelWriteCell($oexcel, _NowCalc(), 1, $lastcol + 1)
While 1
    $line = FileReadLine($file)
    If @error Then ExitLoop
    $size = DirGetSize(StringStripWS($line, 3)) / 1024 / 1024
    $iIndex = _ArraySearch($excelArray, $line, 0, 0, 0, 0, 1, 1)
    If @error Then ContinueLoop
    _ExcelWriteCell($oexcel, $size, $iIndex, $lastcol + 1)
WEnd
FileClose($file)
_ExcelWriteFormula($oexcel, "=SUM(R2C" & $lastcol + 1 & ":R38C" & $lastcol + 1 & ")", 39, $lastcol + 1)
_ExcelWriteFormula($oexcel, "=R39C" & $lastcol + 1 & "/1024", 40, $lastcol + 1)
$oexcel.ActiveSheet.columns($lastcol).copy ;used to copy the format of the original last column of the spreadsheet
$oexcel.ActiveSheet.columns($lastcol + 1).PasteSpecial(-4122, Default, Default, Default) ;this just pastes the format of the original last column to the new last column
$oexcel.ActiveSheet.Range("A1").Select ;select cell A1 just to unselect the entire column from previous command
$oexcel.columns.AutoFit ;auto sizes the column width
_ExcelBookClose($oexcel, 1) ;save file when closing

The script is compiled and sitting is a sub-directory on the server in question. The text file and the spreadsheet that are used are both in this same folder as well.  When I navigate to the folder and run the script by double-clicking on the executable, the process runs but the folder view where I ran the script will go back up one level so when the script completes, I am in the parent folder from where I started.  I have added message boxes throughout the script and have determined that the folder view goes back up one level at some point after the @error check for the file open and before the @error check for the ExcelBookOpen (where the comments are).

I just wanted to know if someone can tell me why and if there is a way to prevent it. (Note: still using v3.3.8.1 on this machine but slowly converting scripts to v3.3.14.2).

 

 

Share this post


Link to post
Share on other sites



#2 ·  Posted

singbass,

Excel may be changing the application or working directory.  You can determine this be displaying the various @....DIR macros during execution.  You can also force a change of the current working directory using the FileChangeDir function.  See the Help file for syntax and a listing of the @....DIR macros.

kylomas


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • breakbadsp
      By breakbadsp
      I  want to create a excel file from my script if it does not exist.
      _ExcelBookOpen throws error=2 if file does not exist, after this error i want to create new file at this point.
      can i use _FileCreate()?
      _Logger($sLogPath, "{INFO}------: Opening Excel File: " & $sExcelPath& "") While 1 Local $oExcelTestResult = _ExcelBookOpen($sExcelPath) If @error = 2 Then If not _FileCreate($sResExcelPath) Then MsgBox(0, "Error", "Error In Opening REsult Excel File: Error: " & String(@error)) _Logger($sLogPath, "{ERROR}------: Result Excel File does not exist.. tried to create new but :ERROR : " & String(@error) & "") ExitLoop Else _Logger($sLogPath, "{INFO}------: Result Excel File does not exist.. **Created New**: ") EndIf Else ExitLoop EndIf WEnd  
    • LoneWolf_2106
      By LoneWolf_2106
      Hi everybody,
      i have to store an entire row of a Excel workbook into an array.  The row index is stored in a variable.
      How can i do it?
      Thanks in advance for your support.
    • LoneWolf_2106
      By LoneWolf_2106
      Hi everybody,
      i have to write a value into an excel column.
      I know where it starts from, but i don't know what the end is, last non-empty cell.
      How can i get the number of last non-empty cell?
      Thanks in advance.
      Regards 
    • Nareshm
      By Nareshm
      Hi All,
      I have excel file like this
      and i want to cut cell/text from excel to other software.

       
      I have to cut the cell of B column one by one and past into other software
      If Winexists("No Data Found")
      then restore cuted cell and goto next/down side cell
      How to do it ?
    • water
      By water
      Extensive library to control and manipulate Microsoft Excel charts.
      Theads: General Help & Support - Example Scripts
      BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort

      KNOWN BUGS (last changed: 2017-07-21)
      None. The COM error handling related bugs have been fixed.