Nighterfighter

Creating new excel file

4 posts in this topic

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.

Share this post


Link to post
Share on other sites



What is the value of @error after you have called

#include <Excel.au3>
Global $oExcel = _Excel_Open()
Global $oWorkbook = _Excel_BookNew($oExcelTest, 5)
Global $sWorkbook = @ScriptDir & "\testFile.xlsx"
_Excel_BookSaveAs($oWorkbook, $sWorkbook, $xlWorkbookDefault, True)

 

1 person likes this

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

Interesting, that seemed to have worked. I had to change the line that you posted

Global $oWorkbook = _Excel_BookNew($oExcelTest, 5)

 to "_Excel_BookNew($oExcel,5)"

 

but then it worked. Thanks.

 

I guess my code was not working because I didn't assign the return value of _Excel_BookOpen to an object, and then not using that object, so the SaveAs didn't know what to point to.

 

 

Interestingly enough, the @error value was zero for both your code and my code.

 

 

 

Thanks for the help!

Share this post


Link to post
Share on other sites
2 minutes ago, Nighterfighter said:

I guess my code was not working because I didn't assign the return value of _Excel_BookOpen to an object, and then not using that object, so the SaveAs didn't know what to point to.

Interestingly enough, the @error value was zero for both your code and my code.

Correct. _Excel_BookSaveAs expects the workbook object as parameter 1. You provided the Excel application object so it failed.


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

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

    • VeryGut
      By VeryGut
      I'm trying to insert the following formula in cell A2 using my script:
      =if(A1=""; "YES"; "NO")
      To my understanding, the line of code should be similar to this:
      _Excel_RangeWrite($MasterFile, Default, "=if(A1=""; "YES"; "NO")", "A2")
      However, it does not work, probably due to the multiple quotation marks that confuse the script :C
      How do I avoid this problem?
    • LoneWolf_2106
      By LoneWolf_2106
      Hi everybody,
      i have a question about Excel, i have to create several charts one below the other dynamically.
      I have thought to use:
       
      $oRangeLast = .UsedRange.SpecialCells($xlCellTypeLastCell) $iRowCount = .Range(.Cells(1, 1), .Cells($oRangeLast.Row, $oRangeLast.Column)).Rows.Count  
      And then to use it in this way:
      $Graph_position = "=Test1!A"&$iRowCount+2&":K"&$iRowCount+24 But it doesn't work with charts.
      Does anyone have a suggestion?
       
    • LoneWolf_2106
      By LoneWolf_2106
      Hi all,
      i have an empty csv file, i have a non formatted text file.
      What do i want to do?
      I want to automate the process "get external data" in Excel, i want to import the data from the text file and basically create a csv file with a specific character encoding.
      Is it possible with AutoIT?
       
    • 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.