Search the Community
Showing results for tags 'new file'.
-
Hi. I'm using the FreeCommander XE file manager here, and i'v written a script, which will create an empty, new file, after choosing an extension out from the Listbox. The listview code is not mine, iv found the scripts somewhere on this forum. I have no credits in it, because it was intended to be only for my personal use. But now, i have a lot of free time, so i remembered that i haven't posted anything on this forum, yet, so here is my first script: It should be compiled with the Autoit v3.3.14.3 . The compiled exe needs a folder passed as a parameter, so that it know where to create the new file. A Listbox is opened, with a selection of available extensions. After selecting and doubleclicking (or using the ok button), the script creates a filename (if specified in the config file) with increased numbers (up to 9999). If the filename exist, the counter is checking the next number, until the maximum is reached. This script uses an ini file for configuration, called "NewFile.ini" which should be in the same folder, as the compiled exe. NewFile.au3 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <EditConstants.au3> #include <GuiEdit.au3> #include <ScrollBarsConstants.au3> Global $test[0][2], $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1 Global $aArray[1] = [] $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then If StringRight($cmdtmp, 1) = ":" Then $cmd = $cmdtmp & "\" EndIf Else If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then $cmd = $cmdtmp & "\" EndIf EndIf If Not FileExists($cmd) Then ;Check if the folder exists, display an error message if not ! DisplayReadMe(1) Exit EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then $tmpinidir = @ScriptDir & "\" Else $tmpinidir = @ScriptDir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting) ;Debugging $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") If FileExists($sFilePath) Then $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf ; Check if an error occurred. If @error=0 Then ; Enumerate through the array displaying the section names. Local $count = 0 If FileExists($sFilePath) Then For $i = 1 To $aArray[0] $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none") If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then ;Extension need to have a dot, or it will be ignored ! $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF $count = $count + 1 ;Count how many extensions are added ! EndIf Next EndIf If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt) _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else ;Reading the ini failed, create a default array for the extensions $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test[5][2] = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then $MouseX = MouseGetPos(0) Else $MouseX = -1 EndIf If $UseMouseY = 1 Then $MouseY = MouseGetPos(1) Else $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_TOOLWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 200) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $Button1 = GUICtrlCreateButton("Ok", 16, 224, 45, 22) $Button3 = GUICtrlCreateButton("ReadMe", 80, 224, 55, 22) $Button2 = GUICtrlCreateButton("Cancel", 150, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button2 Exit Case $Button3 DisplayReadMe(0) Case $Button1, $cDummy Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|")[1] If StringLen($tmptxt) > 0 Then Local $fnr = 0, $tmpfile = "" While $fnr < 10000 $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt ;MsgBox(0,"",$tmpfile) ; for debugging If Not (FileExists($tmpfile)) Then $hFile = _WinAPI_CreateFile($tmpfile, 0) _WinAPI_CloseHandle($hFile) Exit EndIf $fnr = $fnr + 1 WEnd EndIf EndSwitch WEnd ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $List If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_DBLCLK ; Fire the dummy if the ListView is double clicked GUICtrlSendToDummy($cDummy) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func DisplayReadMe($err) Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME ,$WS_MAXIMIZEBOX)) $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399) GUICtrlSetData(-1, "") GUISetState(@SW_SHOW) If $err=1 then local $txttmp01="Error: Path does not exist" local $txttmp02="Commandline call was: " AddText ($txttmp01) Addtext ($txttmp02 & $cmd & @CRLF & @CRLF) EndIf AddText("Instructions:" & @CRLF) AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path") AddText("Example: NewFile c:\myfolder\" & @CRLF) AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.") AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF) AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF) AddText("Example of a config file:" & @CRLF) AddText("[setting]" & @CRLF & "filename=MyFile>") AddText("UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !") AddText("UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF) AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF) AddText(";Format for this ini file is:" & @CRLF & ";Name e.g [Auto It]") AddText(";extension e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF) AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt") _GUICtrlEdit_SetSel($Edit1, 0, 0) _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) If $err=1 Then _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd)+5) EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete($Form1) ExitLoop EndSwitch WEnd EndFunc ;==>DisplayReadMe Func AddText($edittxt) _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc ;==>AddText NewFile.ini [setting] filename=MyNewFile_ UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings ! UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates ! ;Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number) ;Format for this ini file is: ;Name e.g [Auto It] ;extension e.g 1=.au3 ; p.s. only 1 extension per section ! the number must be 1 [AutoIt3] 1=.au3 [Auto Hotkey] 1=.ahk [Text] 1=.txt [Sdl Basic] 1=.sdlbas [Webpage] 1=.html [Basic] 1=.bas [Pascal] 1=.pas [Rich Text (RTF)] 1=.rtf [Word Document] 1=.doc [Hex File] 1=.hex
-
Hey guys. I've been searching, and reading the documentation, but I can't get this to work. I need to programmatically create a new Excel (xlsx) file in a directory. The examples I've seen online are using an excel workbook that already exists, and just renaming it or changing the file format. I'm sure it is really simple, but I can't get it to work. This is what I have: Local $oExcelTest = _Excel_Open() _Excel_BookNew($oExcelTest,5) Local $sWorkbook = @ScriptDir & "\testFile.xlsx" _Excel_BookSaveAs($oExcelTest, "testFile.xlsx", $xlWorkbookDefault, True); Sleep(50); I've tried making the 2nd parameter $sWorkbook, but that doesn't change anything. The script does open a new excel window with 5 sheets, but it doesn't change the name and save it.