msgbox vb.net textarea equivalent - vb.net

I want to output a long error (> 200 words) to a user of an vb.net admin app. The user should be able to copy the message and analyze it. the msgbox function doesn't allow me to do that. What would?

Related

SAP status message error captured to automatically close

I am new SAP GUI scripting. I have a question regarding to how to stop SAP GUI script running if there's any status messages captured.
I recently create SAP GUI script recording and Excel macro for automation, so far, everything works very well if there's any data collected. However if there's no data collected and will have status bar then the script will become error.
So I tried to find a way to create some code if the status error show up, the script will automatically close, but seems like I only can make it work if the error is only for "No items selected (see long text)". However there are also other few status error will shown up as well, so I'm thinking to make the status bar captured the whole error if possible.
Hopefully you guys can help me regarding this in SAP GUI scripting,
thanks.
If session.findById("wnd[0]/sbar").Text = "No items selected (see long text)" Then
Exit Sub
End If
You can check for the messagetype of the status bar. If it is E then you've got an error.
Instead checking for the text like in your code you check for the messagetype
If session.findById("wnd[0]/sbar").MessageType= "E" Then
' Whatever code is needed here
Exit Sub
End If

VB.net app will only run as Administrator only

I made a few improvements to code that has been functioning without issues. On the development, the app runs with a problem. Installed on a test computer and it does not run unless I right click and run as administrator. The below code is where gets not running as Administrator.
The for loop is adding file names to a list. Administrator the program just ends no errors just quits. i counter gets to 3 of a total of 6 files. Never gets through to post the message "Did it make it here". But does post the message inside the for loop. i counts to 3. If run as admin then no issues. All file names are short and basic with no special characters. The files locations is Application.CommonAppDataPath. The loop is called from Form load.
Hoping someone could tell me what is going on.
Try
Selected_Machine = XMLReadSetting("Machine", "Selected", "Selexx")
For i = 0 To UBound(files)
MessageBox.Show("Here 2 i " & i & " File Name" & files(i))
cboMachine.Items.Add(IO.Path.GetFileNameWithoutExtension(files(i)))
If Selected_Machine = IO.Path.GetFileNameWithoutExtension(files(i)) Then
cboMachine.SelectedItem = IO.Path.GetFileNameWithoutExtension(files(i))
End If
Next
Catch err As SyntaxErrorException
MessageBox.Show(err.Message)
End Try
MessageBox.Show("Did it make it here?")
Found the issue. Inside the for loop it make a change that calls the text changed event of the list box. In the text changed event I write data to a settings file. The settings file did not have write access. Not sure how that happend but problem solved
Thank you all for the help.

Publish an excel worksheet as an HTML file using a command button

So I have tons of data in my workbook that I need to pass on to my users in a way that allows them to interact with the workbook..., but also limits what they can actually do. So I have made it so they can access certain pages to Add needed data, then I've given access to a menu page so they can run a report.
This report I have found is best if it's an html page.
To that end, I have tried several different ways, save as...and publish. I like the publish version, but I can not for the life of me get this working. All the samples I see, appear to be the same. Here is the line of code in question:
ActiveWorkbook.PublishObjects.Add(xlSourceSheet, ActiveWorkbook.Path & ".htm, "Sheet1", "", xlHtmlStatic, "", "Report Title").Publish True
Every time I get a run time error '1004':
Method 'Publish' of object 'PublishObject' failed
I have the above line of code in a sub, am I missing something? Do I need to set up the publish differently? Thanks for any ideas.
I have had a similar mysterious problem that sometimes it (.Publish) works and sometimes it doesn't, when I try publish.
However, I think the problem might be, in cases when it doesn't work right off the bat, to first save the relevant region as a webpage so that it exists already on the server. After that region has been saved at least once (manually or else maybe with .SaveAs .. see below), then the publish might work.
Here is an example of how I get this to work more consistently, something to convey the structure that works for me:
wkb=ActiveWorkbook.Name 'save wb for later access
url="http://a.com/b.htm" 'save to Internet
sheetname="c"
Sheets(sheetname).Range("d1:e2").Select 'activating sheet may be necessary
On Error Resume Next 'anticipate error to handle it
'Now comes the publish line the first time... which may work.. or not
ActiveWorkbook.PublishObjects.Add(xlSourceRange,url,sheetname,"d1:e2",xlHtmlStatic,"blah","moreblah").Publish (True) 'may fail to create page on website if page didn't already exist
theerr=Err.Number
On Error GoTo 0 'back to default error handling (none)
If theerr <> 0 Then 'if here perhaps because page nonexistent
'msgbox "maybe add warning here [FYI]"
Sheets("dummysheetwithlittleornodata").Copy 'will create workbook
On Error Resume Next
ActiveWorkbook.SaveAs url 'may fail to create webpage first time
ActiveWorkbook.saveAs url 'twice needed for some reason sometimes. [works for me]
On Error GoTo 0
'with fresh dummy html page created, now publish should hopefully work.. let's try again
ActiveWorkbook.Close savechanges:=False 'clean up and avoid popup
Workbooks(wkb).Activate 'get back to correct wkb
Sheets(sheetname).Range("d1:e2").Select
ActiveWorkbook.PublishObjects.Add(xlSourceRange,url,sheetname,"d1:e2",xlHtmlStatic,"blah","moreblah").Publish (True) 'hopefully if failed first time, now it succeeded ! good luck.
End If
The above code structure has allowed me to solve several publish problems I was having. All the techniques together have been enough so far to allow me to save a range from a sheet as a webpage (to server I have write access to) without having to do anything manually (like a manual save or even click on popup). Good Luck.
[The different non-obvious techniques include activating a range before trying a range publish, using the error handling approach and anticipating failure at certain points, the 2x saveas to compensate for mysterious inconsistent failures when using one saveas only, closing and getting back to original workbook cleanly, and using saveas to "guarantee" page exists in form that will make publish to succeed more consistently.]

Message to another computer via Excel VBA

Is it possible to message another computers on a network via Excel VBA?
Example: If I save a shared Excel file on a network, it will send a message to other shared users whether they are using that shared file or not.
To send a message to other computers on the network (DOS window):
1.
msg /Server:serverName * /Time:5 "Message text..."
msg /Server:192.168.1.1 "Message text..."
Details (from Microsoft):
msg
{UserName|SessionName|SessionID|#FileName|*}
[/server:ServerName]
[/time:Seconds]
[/v]
[/w]
[Message]
2.
net send 192.168.0.1 "Message text..."
Details:
net send {name | * | /domain[:name] | /users} message
.
From VBA you can use something like this:
Dim result As Long
result = CreateObject("WScript.Shell").Run("msg /Server:192.168.1.1 'Message text...'")
Or this:
Shell("msg /Server:192.168.1.1 'Message text...'", vbNormalFocus)
.
PS. A shared file cannot send a message if it's inactive, but you can implement a VBA procedure that will automatically send a message to a list of named computers (or IP addresses) when someone opens the file (Workbook_Open() event of ThisWorkbook module) or when they access / edit certain cells on a sheet
The Excel VBA they may be running is running on their computers, you may not open the same files unless they are shared (even if shared I don't know how the variables stored in VBE are behaving).
Shared spreadsheets can be used to store variables, e.g. timestamps and userIDs (by the above description: in cells). You can have macros saved in them before sharing them that would check the variables and notify if something relevant ha happened.
Alternatively you can spam them all with emails from Excel to Outlook VBA.

Console application - first Message Box is not focused

I am in the process of developing a VB.Net console app to get ID & password from users and should pop a message when invalid ID or password is entered, but I am stuck with a peculiar behavior observed while using Message box in console app. When the first message box is shown, its Out-Of-Focus & we explicitly need to bring the message box to focus. But the next subsequent message boxes are In-Focus.
Below is just the sample code.
Sub Main()
Start:
Console.WriteLine("Press Enter")
Console.ReadLine()
MsgBox("Good Day")
GoTo Start
End Sub
Just want to know why such thing is happening & what should be done so the first message box also will be In-Focus.?
You can use the MessageBoxOptions.ServiceNotification to show the dialog on top.
This is converted from a C# application, so not exactly sure if this is correct VB.NET (it should be though):
MsgBox( "Good Day"
, ""
, MessageBoxButtons.OK
, MessageBoxIcon.Asterisk
, MessageBoxDefaultButton.Button1
, MessageBoxOptions.ServiceNotification
)
But note this:
You shouldn't use a MessageBox inside a Console application. These are just two different worlds.
To explain why:
What do you expect when you run this application remotely using the console? There is no way to show that messagebox then. Use Console.WriteLine, but with different coloring if you want to show something is in error, or a warning, or something good.