Frequently Asked VB Questions
Posted: 2002-06-01
By: ArchiveBot
Viewed: 96
Filed Under:
No attachments for this post
If you've ever been to the Visual Basic Discussion Forum then you realize why I'm posting this. It's simply a list of commonly asked questions. Please feel free to add on anything that either you've learned here at PSC or anything that you find yourself answering on a regular basis. (Revised Jul 06, 2001)
Revised Jul 19, 2001
Revised Jul 24, 2001
Original Author: Sean Street
Code
Writing/Appending text to a text file
Open "C:MyTextFile.txt" For Output As #1
Open "C:MyTextFile.txt" For Append As #1Input/Output Text file Reading text from a text file
Open "C:MyTextFile.txt" For Input As #1Input/Output Text file Setting a string to the application directory
strFileName = App.Path & (Trim(Chr(32 - (60 * (Asc(Right(App.Path, 1)) <> 92)))))Relative paths Reading data from an INI file
Private Declare Function GetPrivateProfileString Lib "kernel32"_
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any,_
ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long,_
ByVal lpFileName As String) As Long
Public Function GetINIData(ByVal strParent As String, strKey As String) As String
Dim strBuffer As String
Dim strFilename As String
strBuffer = Space(145)
strFileName = App.Path & (Trim(Chr(32 - (60 * (Asc(Right(App.Path, 1)) <> 92))))) & "MyINI.INI"
GetPrivateProfileString strParent, strKey, "", strBuffer, Len(strBuffer) - 1, strFilename
GetINIData = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
End FunctionINI file template routines Writing data to an INI file
Private Declare Function WritePrivateProfileString Lib "kernel32"_
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String,_
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Public Sub WriteINIData(ByVal strParent As String, strKey As String, strValue As String)
Dim strFilename As String
strFileName = App.Path & (Trim(Chr(32 - (60 * (Asc(Right(App.Path, 1)) <> 92))))) & "MyINI.INI"
WritePrivateProfileString strParent, strKey, strValue, strFilename
End SubINI file template routines Dynamically adding controls
Rem This code is for Visual Basic 6 only but the second link shows how to do it with VB4/5
Private Sub Form_Load()
Form1.Controls.Add "VB.CommandButton", "cmdMyButton"
With Form1!cmdMyButton
.Visible = True
.Width = 2000
.Caption = "Dynamic Button"
End With
End SubDynamically create a control(VB6)
Creating controls dynamically (VB6,5 and 4)Adding items to a combo/list box and
setting it to the first items if an item exist
cmbMyComboBox.AddItem "Item1"
cmbMyComboBox.ListIndex = (cmbMyComboBox.ListCount=0)None Having problems with the license of your Winsock control?
Just go to the linkRegister/License Winsock Control Allows only numeric characters in a textbox
Private Sub txtNumbersOnly_KeyPress(KeyAscii As Integer)
KeyAscii = KeyAscii * Abs(((KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = vbKeyBack))
End SubMasking Control Prints a picture control contents to the printer
Printer.PaintPicture picMyPictureControl.Picture, 1, 1Printing picture control contents Copy picture/text to the Clipboard
Clipboard.Clear
Clipboard.SetData picMyPictureControl.Picture 'Used for pictures
Clipboard.SetText txtMyTextBox.Text 'Used for textCopying contents to the Clipboard Paste picture/text from the Clipboard
picMyPictureControl.Picture = Clipboard.GetData 'Used for pictures
txtMyTextBox.Text = Clipboard.GetText 'Used for textPasting contents from the Clipboard Evaluate resposes from MsgBox
Rem Use this to check before you save; used with yes/no or ok/cancel options
If MsgBox("Are you sure you want to save thses changes?", vbQuestion + vbYesNo, "Save?") = vbNo Then Exit Sub
Rem You can use this to check before you exit; used with yes/no/cancel or abort/retry/ignore
Select Case MsgBox("Would you like to save before you exit?", vbQuestion + vbYesNoCancel, "Exiting")
Case vbYes
Rem Save it then quit
Case vbNo
Rem Quit
Case vbCancel
Exit Sub
End SelectNone Read data from an Excel spreadsheet
Dim xlsApplication As Object
Dim lngRowCount As Long
Dim intColCount As Integer
Dim blnBlankRow As Boolean
Dim strValue As String
Set xlsApplication = CreateObject("Excel.Application")
xlsApplication.Workbooks.Open "C:Test.XLS"
For lngRowCount = 1 To 65536
blnBlankRow = True
For intColCount = 1 To 255
strValue = xlsApplication.Cells(lngRowCount, intColCount).Value
Rem Set this value into your table/field
If Len(strValue) > 0 Then blnBlankRow = False
Next intColCount
If blnBlankRow Then Exit For
Next lngRowCount
xlsApplication.Workbooks(1).Close savechanges:=False
xlsApplication.QuitNone Read data from Outlook Inbox/SentMail folders
Dim outApplication As Object
Dim outInBox As Object
Dim outOutBox As Object
Set outApplication = CreateObject("Outlook.Application")
Set outInBox = outApplication.GetNamespace("MAPI").GetDefaultFolder(6)
Set outOutBox = outApplication.GetNamespace("MAPI").GetDefaultFolder(5)
Rem First InBox email
MsgBox outInBox.Items.Item(1).Recipients(1).Name, vbOKOnly, "Inbox Recipient"
MsgBox outInBox.Items.Item(1).Subject, vbOKOnly, "Inbox Subject"
MsgBox outInBox.Items.Item(1).Body, vbOKOnly, "Inbox Body"
Rem First SentMail email
MsgBox outOutBox.Items.Item(1).Recipients(1).Name, vbOKOnly, "SentMail Recipient"
MsgBox outOutBox.Items.Item(1).Subject, vbOKOnly, "SentMail Subject"
MsgBox outOutBox.Items.Item(1).Body, vbOKOnly, "SentMail Body"None Sending email using the MS Outlook object
Private Sub MrPostman(strSendTo As String, strSubject As String, strMessage As String)
Dim outEmail As Outlook.Application
Dim outNewMail As Outlook.MailItem
Dim strTemp() As String
Set outEmail = New Outlook.Application
Set outNewMail = outEmail.CreateItem(olMailItem)
With outNewMail
strTemp = Split(strSendTo, ";")
For intCounter = 0 To UBound(strTemp)
.Recipients.Add Trim(strTemp(intCounter))
Next intCounter
.Subject = strSubject
.Body = strMessage
.Send
End With
Set outEmail = Nothing
Set outNewMail = Nothing
End SubNone Calling procedures dynamically
Rem Use this code when you don't know the name of the procedure or when you want the user to select the procedure to execute
Private Sub Form_Load()
CallByName Form1, "Test", VbMethod
End Sub
Public Function Test()
MsgBox "It Works"
End FunctionNone Copy/Move files from one location to another
FileCopy "C:SourceFile.txt", "C:DestinationFile.txt"
Rem To move the file (delete the original)
Kill "C:SourceFile.txt"None Retained is an invalid key error
You will get this error when you attempt to open a project designed in VB6+ with VB5-.
The solution is to open the project file (*.vbp) with a text editor like notepad
and delete the line that begins with RETAINED=. This will solve the error.None What does referencing a control mean?
What is the difference between early and late binding?
When you create a reference to a control, you are indicating that there is a file that exists
that you would like to use. Early-binding indicates this reference at design-time of the application
rather than an runtime (late binding). Early binding is much faster than late binding. Late binding
is used when an application must determine at runtime. Although this process is slower than
late binding, it may be faster after consideration. For example, let's say that you are importing
data from one source to another. You are uncertain at design time wheter the user will want to
import from Excel to Access, Outlook to Excel, Outlook to Access, Excel to Outlook, Access to Outlook,
or Access to Excel. Instead of referencing all three objects at design time(early binding),it may
be more practical to refernce them once the user has mad a decision (late binding).None
Comments on this post
No comments have been added for this post.
You must be logged in to make a comment.