Close Excel com object without saving changes?
Hi, I am trying to write a script which opens each of 31 excel workbooks, retrieves a value from a cell, and closes each workbook after retrieving.
My code so far:
$day=1
$excel = New-Object -ComObject Excel.Application
$excel.Visible=$True
$workbook= $excel.Workbooks.Open("C:\Path|to\File\1_"+$day+"_14.xlsx")
$workbook.sheets.item(1).activate()
$WorkbookTotal=$workbook.Worksheets.item(1)
$value = $WorkbookTotal.Cells.Item(7,13)
$value.Text #this should give you back the Value in that Cell
$excel.close()
My problem is that when the code hits the $excel.close() method, the file stays open, and prompts for saving changes. I don't know why it thinks there are changes, but what I want is to close the workbook without saving changes.
I've just closed 44 open browser tabs, and have tried many things over the last hour, but can't seem to get this one.
If anyone has any advice on how to do this, it would be greatly appreciated!
Thanks,
Kevin
Hi,
Please replace below code:
$excel.close()
with
$workbook.close($false)
$excel.quit()
Hope this helps.
Regards,
Yan Li
Regards, Yan Li
Similar Messages
-
How can I close a document without saving changes?
I'm using Pages 4.3 with OS10.9.1.
Before I upgraded to OS10.9.1, when I closed a document (Command W) it asked me first if I want to save the changes I'd made to the document. I had the option of saving or not saving.
Sometimes I want to close a document without saving the changes, for example if I edit a text, then decide I prefer the unedited version.
But now that I'm using OS10.9.1, when I close a document, it automatically saves any changes I've made.
How can I get back to the original option of saving or not saving changes when I close a document? This option was available with the same version of Pages, when used with an earlier OS.
I've searched the Pages Users Guide, but can't find any answer, or default settings. Pages Preferences doesn't seem to address this.
I'm not using track changes, so I don't think that's the problem.
Any solutions would be greatly appreciated![Viking: I am using v4.3. ... See my orginal post.]
But I found the solution, for anyone else who is having the same problem....
Open your computer's System Preferences > General, and click the box "Ask to keep changes when closing documents."
Now, when you close a document in Pages, a window will open giving you the option of saving changes or not.
(I don't know whether this works in Pagesv.5., buty it works with v.4.3) -
This is the error I am recieveing
An exception occurred when instantiating a Com object.
The cause of this exception was that:
coldfusion.runtime.com.ComObjectInstantiationException: An
exception occurred when instantiating a Com object..
I have seen others having this same issue, but a solution
have never been supplied.The com pool can be accessed with admin priveleges in:
Start Menu > Programs > Administrative Tools >
Component Services
drill down to COM+ Applications and checked the icon for your
COM is rotating...
If it's not - right-click and select Start
If it is - right click and select 'Shut Down', then
right-click and select 'Start' -
Hi there.
I have an odd issue where when I open a file and make changes to it, I can't close the file by clicking the 'x' button, can't select "file close", can't "command W" or even quit or force quit photoshop until I have saved the file. It's very frustrating as I have had to make a "PSD TRASH" folder on my desktop specifically for saving random working files, which I clear out at the end of the day.
Has anyone else had this issue? I have compared my preferences to colleagues without this issue and they are set the same. I have also re-installed Photoshop CC 2014 on my machine with no success.
Any advice would be appreciated!
CheersWhat happens when you select File > Close exactly?
Please read these and proceed accordingly (restoring Preferences after making sure all customized presets like Actions, Patterns, Brushes etc. have been saved might be of special interest):
http://blogs.adobe.com/crawlspace/2012/07/photoshop-basic-troubleshooting-steps-to-fix-mos t-issues.html
http://forums.adobe.com/docs/DOC-2325 -
Excel COM object calls break with Office 2013 upgrade on 64-bit OS?
Out of the 1000+ computers in the company mine is the only one running 64-bit windows 7. I have noticed that when i try to run a small DLL i created to convert Excel files to Tab Delimited files it is crashing only on my computer.
I have debugged the source code and found that there is no real exception being thrown except a popup does appear in the background stating "We're sorry, but Excel has run into an error that is preventing it from working correctly. Excel will need to
be closed as a result. Would you like us to repair now? [Repair Now][Help][Close]"
If i open excel via the main application this same popup comes up and when i click repair excel closes. when re-opened Excel re-activates and then works fine.
here is a sample of my (VERY simple) code which has worked for years on office 2007 with 64-bit OS:
Dim excelPath As String = "C:\test.xlsx"
Try
objXL = CreateObject("Excel.Application")
With objXL.Application
.displayalerts = False
.Visible = False
.workbooks.Open(excelPath)
.Workbooks(ExcelFileName).SaveAs(csvPath & csvFileName, Excel.XlFileFormat.xlCurrentPlatformText, , , , , Excel.XlSaveAsAccessMode.xlNoChange, , , , , )
.workbooks(csvFileName).Close(csvPath & csvFileName, savechanges:=True)
End With
Catch ex2 As Exception
Throw ex2
Finally
objXL.Quit()
objXL = Nothing
End Try
I have isolated the exact line that is causing the exception to be thrown...
.Visible = False
Why would hiding the Excel UI cause an error of "We're sorry, but Excel has run into an error that is preventing it from working correctly" to be displayed?
If i remark out this line then the application seems to work properly for me...That I do not know. Do you have another machine where Office 2013 is installed, and where you can test? It could be system configuration issue, could be a change in the application behavior or a difference between 32-bit and 64-bit. You are updating
at least a couple of generations of software and now running in a 64-bit environment so there is always the potential for changes in behavior and software defects.
Unfortunately, I do not have Office 2013 64-bit installed so I cannot test this scenario.
You could also try posting to the
Excel for Developers forum to see if anyone has encountered the same issue when using Excel automation.
Paul ~~~~ Microsoft MVP (Visual Basic) -
I upgraded from version 3.5 In that version when I wanted to quit for the day, I could hit exit and it would ask me if I wanted to quit or save tabs and exit.
In version 4 when I hit file, then exit, it does not ask if I want to save the tabs that are open, it just closes everything and does not save them. When I restart, I get a new tab window, but none of the other tabs I was working on are there.
I need to keep the tabs I am working on available to me; that is what I liked best about the old version.Firefox now always stores the old session, and you can access it by going to the History menu and selecting "Restore Previous Session"
If you want Firefox to display the message to save the session, it can be turned back on by changing some preferences.
# Type '''about:config''' into the location bar and press enter
# Accept the warning message that appears, you will be taken to a list of preferences
# Locate the preference '''browser.tabs.warnOnClose''', if its value is set to '''false''', double-click on it to change its value to '''true'''
# Repeat this for these 3 preferences '''browser.warnOnQuit''', '''browser.warnOnRestart''' and '''browser.showQuitWarning'''
If you always open the last set of tabs, an alternative approach is this:
# Click the orange Firefox button, then select options to open the options window
# Go to the General panel
# Change the setting "When Firefox starts" to "Show my windows and tabs from last time" -
How can one scape from the edit window of an appointment without saving changes?
I did move accidentally an appointment with invitees and it opened the edit windows, but I can´t escape from it without sending uselessly the changes to invitees !
mardem,
Try iCal>Edit>Undo. -
Excel COM object in Unix Server
We generated the Excel file with Macros in NT server with Excel Installed. Is there is any way to achieve this in Unix Server?
Thanks in Advance
AyyanarThere are a couple of ways to generate Excel files, regardless of the operating system. If your version of Excel supports the Excel XML file format, then you can use PeopleCode to generate text based Excel XML files. For this approach, you usually create a template from an Excel XML file and then insert placeholders for content (usually in the form of XSL, but it could be %Bind(:n) in an HTML Definition).
Another approach I have used is [Apache POI|http://poi.apache.org/].
I don't work with XMLPublisher, but it may support Excel output as well. -
Hello everyone
I have written code like this
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
CALL METHOD OF EXCEL 'WORKBOOKS' = FILE.
CALL METHOD OF FILE 'OPEN'
EXPORTING
#1 = 'C:temp8D.xls'
#2 = 1.
CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = 6
#2 = 'C'.
SET PROPERTY OF CELL 'VALUE' = zak_help.
CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = 7
#2 = 'S'.
SET PROPERTY OF CELL 'VALUE' = 'X'.
CALL METHOD OF EXCEL 'SAVE'.
FREE OBJECT EXCEL.
After that:
call function 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Display report'
TEXT_QUESTION = 'Display report?'
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X'
START_COLUMN = 25
START_ROW = 6
IMPORTING
answer = ans.
if ans eq '1'.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select file for upload'
default_extension = 'Excel files (*.XLS)|*.XLS'
file_filter = 'Excel files (*.XLS)|*.XLS'
initial_directory = 'C:TEMP'
CHANGING
file_table = li_filetable
rc = lv_return
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
OTHERS = 4.
read table li_filetable into lw_filetable index 1.
p_file = lw_filetable-filename.
DATA gs_excel TYPE ole2_object .
DATA gs_wbooks TYPE ole2_object .
DATA gs_wbook TYPE ole2_object .
DATA gs_application TYPE ole2_object .
CREATE OBJECT gs_excel 'EXCEL.APPLICATION' .
SET PROPERTY OF gs_excel 'Visible' = 1 .
GET PROPERTY OF gs_excel 'Workbooks' = gs_wbooks .
GET PROPERTY OF gs_wbooks 'Application' = gs_application .
*--Opening the existing document
CALL METHOD OF gs_wbooks 'Open' = gs_wbook
EXPORTING
#1 = p_file.
But after all, the excel process still works. In Task Manager it exists. How can I 'kill' it, directly after closing the window?
Thanks for any help.
GreetingsAdd
CALL METHOD OF EXCEL 'QUIT'.
before freeing object.
Look at <a href="http://support.microsoft.com/kb/153043/fr">Controlling Alerts and Updating in MS Excel OLE Server</a> at microsft help.
oWBook.SaveAs FileName:="C:my documentstest.xls"
' Closes the original workbook without saving changes.
oWBook.Close False
oXL.Quit ' Closes the invisible instance of Microsoft Excel.
Regards -
How can I use a COM object that does not have a type library?
Hello,
I've created a com server in python for which I do not have a type library. I am able to call functions for this application in Python, TCL, I'm sure VB, etc. without the type library.
Must I have a type library registered to use this COM object with Labview? I was hoping I could simply supply the name to the refnum (or the GUID) then call functions by passings strings to the invoke node. This does not seem to be possible - am I missing something?
In the event that I cannot use a com server without a type library. Any recommendataions on how to create one? I'm wondering if I can use the same GUID and create a shell in LabWindows which generates the IDL/TBD file I need for Labview to see my
com server.
Any help is greatly appreciated.
73,
TimothyTimothy Toroni wrote:
> Thanks for the info, however their example is labview server and
> python client. I'm going the other way. It's good to know about
> LabPython though...
>
> As of now, it seems to be there is no way to use a COM object without
> a type library from inside LabView.
Yes that is true. LabVIEW needs that to configure the Property and
Methode Nodes correctly. Otherwise it would need to have a special
Property and Method Node with a configuration dialog similar to the Call
Library Node, but a LOT more complicated. Not sure many people could
make use of that, and it would be a very tiring experience trying to get
things setup in that way, by going through the edit, test, and crash
cycle over and over again.
Rolf Kalberm
atter
Rolf Kalbermatter
CIT Engineering Netherlands
a division of Test & Measurement Solutions -
Navigate to next document without saving any changes in last document in AxWebBrowser
Hi,
I am opening MS Office Document file in AxWebBrowser after that i navigate to next Office Document ,before navigating i saved the last document like this
AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_SAVE, SHDocVw.OLECMDF.OLECMDF_ENABLED)
but how can i navigate to next Document without saving it if it also have any changes?
if i do not use above line of code it ask for "Save","Don't Save" and "Cancel" before navigating to next document.
help me thankxHi,
I am opening MS Office Document file in AxWebBrowser after that i navigate to next Office Document ,before navigating i saved the last document like this
AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_SAVE, SHDocVw.OLECMDF.OLECMDF_ENABLED)
but how can i navigate to next Document without saving it if it also have any changes?
if i do not use above line of code it ask for "Save","Don't Save" and "Cancel" before navigating to next document.
help me thankx
Hello,
In this case, we need to get the object for that document inside the NavigateComplete2 event.
And then we could call its
close method before we navigate to the other document.
For get the document object we could refer to the sample shared in
How to use the WebBrowser control in Visual Basic to open an Office document
Public Class Form1
Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog()
Dim oDocument As Object
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim strFileName As String
'Find the Office document.
With OpenFileDialog1
.FileName = ""
.ShowDialog()
strFileName = .FileName
End With
'If the user does not cancel, open the document.
If strFileName.Length Then
oDocument = Nothing
AxWebBrowser1.Navigate(strFileName)
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Button1.Text = "Browse"
With OpenFileDialog1
.Filter = "Office Documents " & _
"(*.docx, *.xlsx, *.ppt)|*.docx;*.xlsx;*.ppt"
.FilterIndex = 1
End With
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As _
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
oDocument = Nothing
End Sub
Private Sub AxWebBrowser1_NavigateComplete2(ByVal sender As Object, _
ByVal e As AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event) _
Handles AxWebBrowser1.NavigateComplete2
On Error Resume Next
oDocument = e.pDisp.Document
'Note: You can use the reference to the document object to
' automate the document server.
MsgBox("File opened by: " & oDocument.Application.Name)
End Sub
End Class
And for closing part, we could refer to
How to: Programmatically Close Documents.
Regards,
Carl
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Using Firefox, I used to be able to open a document on a website, such as a bank statement, and view it without downloading. Now, I must download and save a document before I can view it. How can I change settings so that I can open documents without saving them first?
Do you know what kind of docs they are? Did you upgrade/Update Firefox lately?
https://addons.mozilla.org/en-US/firefox/addon/pdf-download/
http://kb2.adobe.com/cps/333/333563.html
https://addons.mozilla.org/en-US/firefox/addon/open-it-online/ -
Logic crashes when using the "Close Project without Saving" key command
The "Close Project without Saving" key command does not work in LP8. When I try to use it, Logic crashes. This is reproducible on my system. Can anyone try and confirm this?
For me this shortcut is quite important on stage when I have to switch songs as fast as possible. It also is foolproof because on stage I never want to save with all the controller changes I did during a performance.
Just hit the key command, load the next song, done.
Message was edited by: cronbg -
Does " Close Project without Saving " key assignment work at all ?
I'm using Logic Express 8. I'd really like to be able to close a project without seeing the " do I want to save the project " box.
There is a function to do that in the Keypress Commands, but it seems broken. I've tried assigning several different keypress combinations to that function and all they do is crash Logic when I try to use them.
So, am I doing something wrong, missing something, or is that command broken ?
???Come on, how hard would it be for someone out there to try this and let me know if it's my problem .. or a bug ?
Logic Express Preferences ... Key Commands .... Global Commands ... Close Project without Saving.... assign some key combo to that, then go back to a project and try it.
Oh, and then fill out the cute - report this to Apple- thing when it pops up after the crash so someone will fix this and I can move on -
On cleanuing up COM object when using Microsoft.Office.Interop.Excel
When using Microsoft.Office.Interop.Excel the COM objects that are created by the code must be released using System.Runtime.InteropServices.Marshal.ReleaseComObject().
Most of the time it's pretty clear when a new COM object is created such as:
Excel._Application excelApp = null;
Excel._Workbook wb = null;
Excel._Worksheet ws = null;
Excel.Range newRange = null;
try
// four COM objects are created below
excelApp = new Excel.Application();
wb = excelApp.Workbooks.Add();
ws = (Excel.Worksheet)wb.Worksheets.Add();
newRange = (Excel.Range)ws.Range["A1","A30"];
// do these line of cod create new COM object?
newRange.Font.Bold = true;
newRange.Borders.Color = borderColor;
finally
if (excelApp != null) Marshal.ReleaseComObject(excelApp)
if (wb != null) Marshal.ReleaseComObject(wb)
if (ws != null) Marshal.ReleaseComObject(ws)
if (newRange != null) Marshal.ReleaseComObject(newRange)
In the above code I create four COM objects in the first part that need to be released when I'm finished with them. But it's not clear if the other two lines of code create a new COM object or not. If they do then my code needs to look more
like this:
Excel._Application excelApp = null;
Excel._Workbook wb = null;
Excel._Worksheet ws = null;
Excel.Range newRange = null;
Excel.Font fnt = null;
Excel.Borders bds = null;
try
// four COM objects are created below
excelApp = new Excel.Application();
wb = excelApp.Workbooks.Add();
ws = (Excel.Worksheet)wb.Worksheets.Add();
newRange = (Excel.Range)ws.Range["A1","A30"];
// do these line of cod create new COM object?
fnt = newRange.Font
fnt.Bold = true;
bds = new newRange.Borders;
bds.Color = borderColor;
finally
if (excelApp != null) Marshal.ReleaseComObject(excelApp)
if (wb != null) Marshal.ReleaseComObject(wb)
if (ws != null) Marshal.ReleaseComObject(ws)
if (newRange != null) Marshal.ReleaseComObject(newRange)
if (fnt != null) Marshal.ReleaseComObject(fnt)
if (bds != null) Marshal.ReleaseComObject(bds)
How can I tell if getting a property creates a new COM object or not?Thank you for your replay but I do understand that the font object is a COM object. What I'm trying to figure out is if a NEW object is created each time I access the font member of a Range object and if I need to call
Marshal.ReleaseComObject on the font object after using it.
Most member object of an object are a single instance and each time you access the member you simply get the pointer to that instance. For example:
using(DataTable dt = new DataTable("Some Table Name"))
PropertyCollection ep1 = dt.ExtendedProperties;
PropertyCollection ep2 = dt.ExtendedProperties;
if (Object.ReferenceEquals(ep1,ep2)) Console.WriteLine("They are the same object");
else Console.WriteLine("They are different objects");
The output will be: They are the same object
On the other hand this:
Excel._Application excelApp = new Excel.Application();
Excel._Workbook wb = excelApp.Workbooks.Add();
Excel._Worksheet ws = (Excel.Worksheet)wb.Worksheets.Add();
Excel.Range newRange = (Excel.Range)ws.Range["A1","A30"];
// do these lines of code create new COM object?
Excel.Font ef1 = newRange.Font;
Excel.Font ef2 = newRange.Font;
if (Object.ReferenceEquals(ef1,ef2)) Consloe.WriteLine("They are the same object");
else Consloe.WriteLine("They are different objects");
The output will be: They are different objects
It looks like each time I access the font member I get a new object. I suspect that is not the case and what I am getting is two pointers to the same object and the reference counter is incremented by one.
So really the question is what happens to the font member object of the Range object when the range object is released. I assume the font member will be released along with the Range object ever if the font object has a reference count greater then
0.
If I am correct in my assumption then I can access the font member object as much as I need to without worrying about releasing it.
I have been reading a lot about working with COM and the need to use Marshal.ReleaseComObject and there does seem to be a lot of disagreement and even confusion on the
mater about when and if COM objects need to be explicitly released.
Maybe you are looking for
-
Help - please tell me if sth is wrong with my plan!
Hi folks, I have joined this community because I am a wimp. Well, here is the thing: I have a one year old Lenovo R61 with an OEM version of Windows XP Pro 32bit version pre-loaded. Now I would like to do three things at once with this laptop: A) u
-
Photos too big for Flash, what can I do?
Hi, I have tried all the different Formats of Photo and bringing them into Flash, but they are still too big, causing Flash to crash and meaning I am unable to upload my website to my server. I think i remember being told you could use a preloader. B
-
Dear All I have a genuiene problem. When I hire a person for a particular position, that position is stored in the infotype 0001 of the employee. But when I go to tabble HRP1001 there is no person to position relationship visible for the particular p
-
SOA Suite 10.1.3.4: ESB folder missing from OHS
I have the following setup on Windows XP Pro: 1. Oracle Database XE 2. SOA Suite 10.1.3.1.0 - Advanced Install 3. Upgrade to SOA Suite 10.1.3.4.0 MLR#7 4. SOADEMO - runs very well; I can place orders that require approval and see audit logs fine. Upo
-
I am using an NI PCI 6024 E board device for an analog output application. Can I generate two independent waveforms, one on each analog output channel? In attach I send a example of my vi to control one chanel, but i need to control both but with dif