PDA

View Full Version : آزاد سازی فضای گرفته شده توسط dim



h1and1saman
سه شنبه 15 تیر 1395, 10:20 صبح
سلام کدی پیدا کردم که اطلاعات رو از اکسل به msflex انتقال میده-بعدش من ذخیره اش میده تو دیتابیس(اکسس) باADO
و در آخر میخوام با فست ریپورت گزارش بگیرم گزارش نمیده بهم-بعد بررسی متوجه شدم مشکل از این تیکه کده که انتقال اطلاعات رو به msflex میده
سوال:چطور میشه همه تعاریفی که انجام شده و با هرچی ارتباط داره رو قطع کنم

Private Sub Command1_Click()
Dim OFName As OPENFILENAME
Dim XLS As Object
Dim WRK As Object
Dim SHT As Object

OFName.lStructSize = Len(OFName)
'Set the parent window
OFName.hwndOwner = Me.hWnd
'Set the application's instance
OFName.hInstance = App.hInstance
'Select a filter
OFName.lpstrFilter = "Excel Files (*.xls)" + Chr$(0) + "*.xls" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
'create a buffer for the file
OFName.lpstrFile = Space$(254)
'set the maximum length of a returned file
OFName.nMaxFile = 255
'Create a buffer for the file title
OFName.lpstrFileTitle = Space$(254)
'Set the maximum length of a returned file title
OFName.nMaxFileTitle = 255
'Set the initial directory
OFName.lpstrInitialDir = "C:\"
'Set the title
OFName.lpstrTitle = "Open XLS File"
'No flags
OFName.flags = 0


'Show the 'Open File'-dialog
If GetOpenFileName(OFName) Then
Text1.Text = Trim$(OFName.lpstrFile)

Combo1.Clear
'Create a new instance of Excel
Set XLS = CreateObject("Excel.Application")

'Open the XLS file. The two parameters representes, UpdateLink = False and ReadOnly = True. These parameters have this setting to dont occur any error on broken links and allready opened XLS file.
Set WRK = XLS.Workbooks.Open(Text1.Text, False, True)
'Read all worksheets in xls file
For Each SHT In WRK.Worksheets
'Put the name of worksheet in combo
Combo1.AddItem SHT.Name
Next
'Close the XLS file and dont save
WRK.Close False
'Quit the MS Excel
XLS.Quit

'Release variables
Set XLS = Nothing
Set WRK = Nothing
Set SHT = Nothing
Else
MsgBox "Cancel was pressed"
End If


End Sub



عزیزان فکر کنم مشکل از این هاست
Dim OFName As OPENFILENAME
Dim XLS As Object
Dim WRK As Object
Dim SHT As Object

که باید آزاد بشن و هرچی رو گرفتن رها کنند
خیلی گیرم خداییش عزیزانی که بلد هستید یا هر حدسی میزنید بگید امتحان کنم ممنون میشم

vbhamed
جمعه 01 مرداد 1395, 00:39 صبح
سلام
در VB6 به طور عادی حافظه اختصاص داده شده خودش آزاد میشه مثلا در اینجا وقتی از متد خارج شدید
اما اگر بازم مشکل داشتید کدتون رو داخل یک فرم جدید در همون پروژه خودتون بنویسید و پس از استفاده فرم رو Unload کنید و دستور زیر رو هم بنویسید (با فرض اینکه اسم فرم myform هستش)
Set myform=Nothing