аЯрЁБс>ўџ $ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџ#  !"ўџџџAx&'()*+,7./0123456%8ўџџџ:;<B>?@ўџџџSODEFGHIJKLMN=PQRTXUVWvyZd\]^_`abcYefghijklmnopqrstuўџџџwzўџџџ~{|}‰‘§џџџRoot Entryџџџџџџџџ РF 0з`П ЩfѓФ9€7Workbook"џџџџџџџџA_VBA_PROJECT_CUR" РсъhђЕПрІцiђЕПVBAџџџџџџџџРсъhђЕП`ƒЃiђЕП ўЭI@сАСт\pNErohhaecker BАaР=гК ThisWorkbookœЏМ=uсъ$S X@"Зк1ШџArial1ШџМArial1ШџArial1ШџМArial1ШџArial1 џTahoma1Ш Arial1ШџМArial1Ш МArial1ШџArial1 џArial1 QTahoma1 QTahoma1Ш Arial1Ш$Arial"$"#,##0_);\("$"#,##0\)!"$"#,##0_);[Red]\("$"#,##0\)""$"#,##0.00_);\("$"#,##0.00\)'""$"#,##0.00_);[Red]\("$"#,##0.00\)7*2_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_).))_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)?,:_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)6+1_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_)Є"Yes";"Yes";"No"Ѕ"True";"True";"False"І"On";"On";"Off"рѕџ Р рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР рѕџ єР р Р р+ѕџ јР р)ѕџ јР р,ѕџ јР р*ѕџ јР рєџєР рєџєР р ѕџ јР р `@ р ` р `  р `  р `  рР р !x @  р !x р Р р0Р р `Р р hР р (Р р0Р р 8Р р&xР рx@@ рx@ рx  @ рx @  рx  рx  р"8Р “€џ“€џ“€џ“€џ“€ џ“€џ“€џ“€џ’т8џџџџџџџџџџџџ€€€€€€€€€РРР€€€€€џ€ `џџР рр`€џ€€€РРРџ€џџџџџџ€€€€€џЬџiџџЬџЬџџ™ІЪ№ЬœЬЬ™џууу3fџ3ЬЬ3™3™™3™f3™ffff™–––33Ь3ff333f3™3f33™BBB\џџџ`…Q mBrowseMain… РDemo…3. Discussion…E>VersionsŒЎўџўџ DemoNew:СС€8ыZ№R№ Є3 №П Р@@ё  їќЄ;; About the Browse for Folder DemoPExcel developers have become pretty comfortable making calls to the Windows API.XIt is often the best or only way to get certain kinds of information, such as the user'sOhardware configuration, or to do certain things, like writing a Registry entry. developers: callback functions. Qfunction. Browse for Folder can be called without taking advantage of callbacks.RIn that case the folder browser dialog box will pop up and when the user clicks OKAthe function will return the selected folder to you as a string. RThe Browse for Folder function has aspects of a regular function and of a callback Excel 2000.=But it's an awkward interface for this at best in my opinion.‡Demonstration of the Windows Shell Browse for Folder function for Excel 97 and Excel 2000. (Revision 1) By Jim Rech (jarech@kpmg.com)# 4[ ij -* Requires Shell32.dll version 4.71 and aboveTBut there is a class of Windows functions that has been entirely off-limits to ExcelYCallback functions are different than other functions in that they do not directly returnNThe Windows Shell Browse For Folder function provides a means to have the userZselect a folder. Excel/VBA does not have this functionality built in and Excel developersKfrequently ask how to do this. Historically the answer has been to use theQGetOpenFilename method. This is not ideal however because it requires the user toMselect a file within the desired folder, a confusing and awkward extra step. [call subroutines in your project back. When they do so it is to deliver useful informationUabout the Windows environment. One example is the EnumFonts function. It calls yourQcallback function repeatedly, each time with information about an installed font.PAnother example is the SetTimer function. Similar to Excel's Application.OnTimeImethod it calls your callback function after a time interval has elapsed.NThe only problem is that Excel 97 has no way to tell Windows what the callback\function is, at least not officially. Windows wants the "address" of the callback function.TA string like "MyCallbackFunction" has no meaning to Windows; it needs a location inQmemory. In Visual Basic 5.0 the AddressOf operator was added to answer this need.\But in order to interact with the dialog while it is displayed you must establish a callbackXfunction. A callback function enables you to set the initial folder, to update a statusWFor example, if you are asking the user to choose a new data file directory it might beYIdeally you would want to open the dialog with the user's previous selection already set.Jhelpful to have the dialog open preset to the current data file directory.C** Requires Shell32.dll version 5.0 and above (Windows 2000 amd ME)Vuseful information or perform actions. As the name implies Windows callback functionsUmessage and to validate the user's selection. Setting the initial folder is the mainNreason developers want to establish a callback function when using the WindowsNBrowseForFolder API. Without this the dialog always opens at the root folder.WExcel 2000 has it too but Excel 97 does not. But all is not lost. Ken Getz and MichaelXKaplan, worked out how to achieve the same result by directly calling into the dlls thatSExcel uses. It was published their article "Call Me Back" in the May 1998 issue ofUMicrosoft Office & Visual Basic for Applications Developer magazine. This demo usesXwith a larger dialog box that can be resized. It has several new capabilities including:Wdrag and drop capability within the dialog box, reordering, context menus, new folders,Xversion 5 of Shell32.dll that provides a new style dialog. Per MS it "provides the userG)delete, and other context menu commands".V3. Better memory handling. Repeatedly calling the browse dialog in the first versionOthe Getz/Kaplan method when run under Excel 97 and the AddressOf operator underNresulted in some weird results, particularly in conjunction with other macros.S1. Support for the "new" style browse dialog. Windows 2000 and Windows ME install42. An option to center the browse dialog on screen.[used to get a file if you want. The status box option is also worthwhile I think. But theTdirect entry seems kind of half-baked to me. I suppose this could be used (with theYvalidity checking option on) to allow users to indicate they want to create a new folder.MThis demo shows almost everything the Browse for Folder function can do as ofOversion 5 of Shell32.dll. The additional functionality can be enabled with theJcheckboxes on the Demo worksheet. As you can see Browse for Folder can beWhat's New in Revision 1џBk ž ?ЖСb| Й М]Mю ўЭI@&A Page &Pƒ„Ё"PDas tр?р?wa> P ўЭI@ – &$  ш$@_*+‚€%џСƒ„MHP LaserJet 5Pд@gіњ XX@MSUDHP LaserJet 5Pф<d Ё"dXXр?р?U} #} л}  } $ } I} л’@я@ џџџџџџџ џ џ џ џ џџџџ § ' О(((()О*++++,ОООООООО О О О О О§  О§ "ООз(T"""ьШ№Ь№ Ѓ№Д№( №@A@A №№x’ № “ №6€D“u…ПCƒCПР@П№§ˆI№],@D“ut’и2–Ќ’u9ь №Ж$<Browse for a Folder<pŽдІŽь~№~’ № Ѓ №<€ “u…П)) ПР@џП№у x† т№]6  “uŒ’ ь №Ж"<Allow direct entry *<]žLŒžь~№~’ № Ѓ №<€ќ“u…П)) ПР@џП№у † i№]6 ќ“uфф’ ь №Ж"<Validate direct entry *<jžLŒžь~№~’ № Ѓ №<€X”u…П)) ПР@џП№уi†г№]6 X”u4х’ ь №Ж"<Show status text<Rьœ№œ’ №" Г №Z€Д”u…П)) ПР@џ€УПCheck Box 5№уё† Z№]6 "Д”u$ц’ ь №Ж" < Show files<0 w sьœ№œ’ №) Г №Z€•u…П)) ПР@џ€УПCheck Box 7№’i:Ф№]6 )•utц’ ь №Ж"<Center dialog on screen<rKeьœ№œ’ №B Г №Z€l•u…П)) ПР@џ€УПCheck Box 6№у —†№]6 Bl•uˆч’ ь №Ж"<Use "New Style" dialog **<{w sь~№~Ђ №q Ѓ №<€а•u…П XPƒPП?П №”iЯт№]4q@а•u€ш’ !AЉЕИЃI їiŠL,Пь №Ж—<˜To determine your version of Shell32.dll first locate it with Explorer or File Find, then right click on it and choose Properties and the Version tab. < ­– —qJim Rech>В@х я7К Sheet1 ўЭI@ 6…2ч9П=  ш$@_*+‚€%џСƒ„MŽHP LaserJet 5Si (Win 98)дИwъ odXXРШмР1љzœе RТdџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџCustom page 1BBCustom page 2BBCustom page 3BBЁ"dXXр?р?U} $ 6  џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ§ -О-------О$$$$$$$§ О § О § О § О § О О § О § О  § О  §  О  § О  О  § О § #О § О § О § О § О § О О § О § О § О § О О § О § О § $О § %О § !&О зD:l(((((((((((((((((((((((((( џ! џ" џ# џ$ џ% џ& џ' џ( џ) џ* џ+ џ, џ- џ. џ/ џ0џ1џ2џ3џ4џ5џ§  О  § !!О! § "!!"#§ $$§ %%§ &&§ ''§ ('(§ )()§ *)*§ +*+§ ,0,§ - -.§ /7/§ 08§ 19§ 24§ 35§ 46§ 5 з0Є((  >А@х я7К Sheet2 ўЭI@  ?Е@  ш$@_*+‚€%џСƒ„Ё"џр?р?U} $N џџџџџџџџџ џ џ џ§ &:"§ !2§ !-§ %+§ #,§ #.#§ 3 § /§ 1зŒм   >А@я7К Sheet3 mBrowseMainџџџџ-Y&__SRP_8џџџџџџџџџџџџ__SRP_9џџџџ‰basAddrOfџџџџџџџџџџџџC ўџџџўџџџ!"#$%&ўџџџ()*+ўџџџ-./0123456789:;<=>?@ўџџџBCDEўџџџGўџџџIJKLMNOPQRSTUVWXYZ[\ўџџџ^_`ўџџџbўџџџdўџџџfghijklmnopўџџџrstuvwxyz{|}ўџџџўџџџ€ R№BHP`€ џџџџ€ bh€ P€ аB №ј€ џџџџ€ "  (€0€HX h €˜Ј:2Ијџџџџ0 Эџџx]ђ8– ]ђр 8A@ ђ 'рW'Copy dialog centering setting to module level variable so callback function can see itџџ J ^Ќ 4$FA@Vr = 92 @9>ЖBrowseCallBackFunc$B9>qџџ кA@$ "( :!<$8Ќ œр-Establish the callback functiondџџ(kџџјрDisplay the dialog "$D'к к$F'Giџџ˜р8Windows calls this function when the dialog events occur–H ъ PKTрGet path string from pidlрIof a user defined data type. This explicitly "converts" it to a Long and J XЌ LA@Vр;Send message to dialog ›G JA@Zj \KTр _User selected a folder - change status text ("show status text" option must be set to see this) `KTр OThis message is sent to the callback function only if "Allow direct entry" andр >"Validate direct entry" have been be set on the Demo worksheetр )and the user's direct entry is not valid.р Q"Show status text" must be set on to see error message we send back to the dialogA@b J ^ЌЖ Bad DirectoryA@VЌ'Hр#Block dialog closingzџџˆnџџ€Ќ'HрAllow dialog to closeiџџPрConverts a PIDL to a string– ]ђ€ hђ˜ d &$j'f fœ & &Ќ$ l„Ќ $м'FdџџИЖ'FkџџЈiџџ рWXL8 is very unhappy about using Excel 9's AddressOf operator, but as long as it is in aрL function that is not called when run on XL8, it seems to allow it to exist.–ИIH$n'@iџџШр[It is not possible to assign the result of AddressOf (which is a Long) directly to a memberрallows the assignment–ј p'niџџарCenters dialog on desktop–X]ђ ђ ђ0 ]ђђ  J rA@~ r!€ r!м 'z r!‚ r!„ '| ˆ$†'v Š$†'x J v z Ќ x | Ќ z |ЌA@Œoџџиџџџџа "ѕЌ9,рRoot folder = Desktop 894 . Ќ $'8 initi 8Я Я Ќ A@R ]ђ8ђPcuџџџџ р nDialog is being initialized. I use this to set the initial directory and to center the dialog if the requestedth) џџџџH џџџџ 90џџџџА џџџџћЗAttribute VB_Name = "mBrowseMain" Option Explicit Dim CntrDialog As €Boolean8FuncbGetDirector`y(IniVSфng, FladgsLoPl M, Msg)2, Ў \.ЛPr@ocData IРnvoke_ˆЮ  \n14Ш AЙbInfoUBROWSEINFO pidlѓ ƒIlpˆ[ ƒ ˆ€=‡€^''Copy dƒŒcentering settto module level variabso callback f‘Ёcan€e ЛСPWith ‚_A… .YRoot€u0 '‚folderDesktopˆlpszT4it€8=ЏHul}Cd=CfСrССЧA= LoР)Alloc(LPTR, Len…w) + Œ1)ЧСBMem€€ ByVal ,ФWO&lPaxram@3FGIDf @(ApСЉaAA .VersРЎ) > 8 The@n 'Est€[iРsh theO\‡С=.lpfnРУУC€gB€gС•Address‡ Els†e Of(""HJEnd IfCСAzC'Dis№play,У•‚Њ= SHCForZF‚}(ˆФ'Ъ pa€s‚н frјom щh РŠP€F€ID(СфCoTask`9№FreeшЂAbˆ3Ё$0СH'Win–d@Šт-sisg\wс21dfРbnts occur •Х Я'(CJhw@'П@#vcр†‡xClƒH= pa†EBЇ|Se‚l€— Case+e"BFFM_INITIALIZE~DУ)ЁFa€6BЃbeс~iрŸ`‚ize@d. I u` tўh р@ƒb;D`‡„І| a Ѓˆbd$ifЂrequested‹SendТM Sage Ё#`mSETSELECTIONA, (1, Ѓ'с mр ƒ k  kшbiC?‚›dРс ''$ CHHANG$Us”sAB,ed a D–- chanstatu`Eext €("show H" oУвmustЈ beсЋ @s€Sс*ЄVХ18"TATU STEXT@"0,^ `ƒFˆ VР>D€ATEFAILŽЎTA;%*  џџџџ<4џџ<џџџџџџџџџџš џџџџџџџџLџџџџLџџџџ”џџџџ<8џџ<<џџ<џџџџџџИЈ  %џџџџ H јX8џџџџџџџџџџџџИ`„кџџџџTџџџџџџџџџ`„8џџџџPџџџџџџџџџ`џџџџxџџџџџџџџџhџџџџџџџџџџџџџџџџџџџџ.R:8@Bџџ%ўџXLџџџ` 14 „"hXџџџј@%A%xРft@ўџџџџџ<џџџ џџ O@ўџџџџџ8џџџџџ ar+H `џџџџџџџџhlџkˆџџџџ!ŒiƒJџџџџ џџџџЈ„00iƒ џџџџџџџџШ„0#iƒ4џџџџџџџџш„ILiƒLˆџџџџџџџџ„ј@ўџџџџџ4џџџџџ +FИ`џџџџџџџџШDџk`џџџџ 8Œiƒdџџџџ џџџџџџџџ€`„fџџџџvџџџ џџ „&џџџџpџџџБ H+@ј`џџџџџџџџˆtџkџџџџџџџџDŒ+nX`џџџџџџџџxџ+8џџџџKŒiƒp0 џџџџџџџџ€ Zџџџџ`џџџџџџџџџџџџ`џJ˜џџџџџџ P„iƒJџџџџ џџџџџџџџ€0 Hlџџџа0 `„vjџџџџџ`„xhџџџџџј`„zџџџџfџџџџџ`„|џџџџdџџџџџт€џџџџџџ џџ@џџџџџџџџ@ўџџџџџ0џџџ џџ  DF$ џџИƒџџџџџџџџџџџџџџџџџџџџџџџџ€ џџџџPрџџџџ` @ џџџџџџџџџџџџџџџџР џџџџ8џџџџџџџџ0`џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџџџџџџџџџџџџџџџhx€ўџџџџџџџџp џџР%џџџџX(џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџxџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(`@`@џџџџxџџџџџP(˜џџџџџџџџџџџџџџџџџџHnџџџџџџџџџџџџџџ@ўџџџџџtџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0џџџџH`nџџџџxџџџџџџџX0џџ˜џџџџџџџџџџџџџџџџџџЈџџџџџџџџџџџџШџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџшџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@џџџџџџџџџџџџА `Hџџџџxџџџџџ0РXџџџџџџШ@ўџџџџџtџџџџџ џџџџџџџџ@џџшџџџџPXVZ\^Fџџ@ўџ˜pџџџџџ џџџџ@ўџџџџџlџџџџџ џџџџh`bџџџџШ@ џџџџh ˜џџџџџџџџ€`џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџИ џџџџ џџџџ џџџџш џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџh   € `Fџџџџxџџџџџџџ h џџ˜џџџџџџџџџџ€џџџџhjlмџџџџџџџџџџ@ўџа lџџџџџ џџџџ@ўџџџџџhџџџџџ џџџџ@ўџџџџџdџџџџџ џџџџ@ўџџџџџTџџџ џџ џџџџ@ўџџџџџDџџџ џџ РH Шџџџџџџџџ№џџџџџџџџџџџџ џџџџџџџџИџџџџџџџџџџџџ˜џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџа џџџџH (†ŠŒDџџџџџH `џџџџџ џџџџ „rџџџџџџџџИШ`„vџџџџџџџџџџџџџџ`„xџџџџџџџџџџ˜р pџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@џџџџџџџџџџџџџџџџџџџџџџџџр р `џџџџџ џџџџiƒџџџџ џџџџ@ €џџџџџџџџј џџџџџџџџџџџџ№ +H`џџџџиИџkР џџџџŒiƒџџџџџџџџ` €piƒџџџџџџ џџ€ €џџџџIƒ џџџџџџ џџџџџџ€ џџџџџџX  џџџџ8џџџџџџџџџџџџXџџџџ8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Г'K:x$*\Rffff*843a4b20c0$*\Rffff*??3a4b2838(*\Rffff*843a4b20c0\0(*\Rffff*843a4b20c0\1*\R0*#f*\R0*#14$*\Rffff*263940fd2e*\R0*#10*\R1*#b3*\R1*#c4*\R1*#229пўЪZ€€ џџџџ€€ џџџџB €€€€ џџџџf 0$   И€ џџџџ @*` 8€ џџџџ<6  Р@ ШH ш€ P,h€ ш x № ˆ€ џџџџ€ >B аир€ t˜ 2X Ј€ fА .˜€ V € Dx€ 0Р€ X№ H $"P " x  Ј$ Аи€ џџџџ€ "рB €8(@$THpx€ˆ€ џџџџ€ ^IDѓ41`Aф!AѓŠ0Left(q, InpДChr$(р0)) -fƒ‹t}"д‘сrXL8a+Py unha‚pИabout WбqXExcP—9.$|DOf DeraPЊ,‚ А as lЉq№ 0in a „ 'kthatЕ1G1›№KBlrun < - ,›С/mLo ЯpƒаKРexPА4ѕmlМ…(ьhП% сѕ 2‘k(W џ0ў‚I– possi‘ЈeP a gn4fђ#of Ї(whicъh!aр n0КƒHPLЃСР>mbeР{'PaБnr defin€`Ka typиe. ™аetХАє"cф/"с’1 Pо'R№АJу mRX1ћЁ3xС-сјx Оm1Pr: LBdхГSub љn(пёnft/с6ŽRQƒp†R v, ScrW,id№—IаРge‚rBHeighr9ЧTC1Dlg/@?/bЫ02ѓ•‚ , —d4ѕ=u.RТ>-іё9ЦtзBolttPЃчT%Хж =‰‘sSyРˆmMeІcs(SM_CXFULLSCRE|ENCі /Ya.MoveфŒ( f- Х) / ј2, ЁєВГФ}Е,Q“p“  rU€€€€~| i сЩ !љ1A A бaбс!Iy‘! qщ с™ФP ˜XџqLџ ѕ™Lџ§<џќ#8џTLџ /8џ €™Lџ € JѕЊѕ@^q4џ"o(ess‰ at€,whZkneedTto tell Window s€Ow‚ our "ca€ bacфk"‡‘ist‚}@ figur€&o ut a —ar0oundƒSКre$stЁth€ЉmoduleBent irelyXir›‚ƒ-oР> @[№clarƒ^@@0seЧ@nРœs w@‹ puzzlD>by using DUMPBINp /exAcAU@with@ЌA332А.DLL‘=nУ‹С Opmet@{ƒC€š typeЄthVgh@Yl€{РЄ€Т€ŽA errx Aov€100 IPFs @ДMSACCESS.EЬXEC4 VBХ"Р\Ц'I:!s m€АA–be $d pr“€l@р seem Р@corre ct€Cligh„|ŽNAwhat рeach ‡<СБЧ"EbР™Execut@GProj: ˆGiv€Кyou žhРРHAX€tcuр7€z aj`DipeрF„|Id‹†IшD g€ n f!‰LpfnOfU аpoin7a'E# ШitsGID @\??* PrHivaЇDeЁ\e* E $C(VbaA-A9_ L€ib "vbaЁV@dll" A`Їs$ "3" с(hЅAs Long|) Л!@0YTc 9ByV `Э,т уstr…BХ€"S`fng,ТByRef ˆIdсџC_тСсЌ‚ u%GяпР4‰l€Re,(_LПG?- @!"Of`УReturмns)kee ˜aЂ€ п`ч пeё'gp. їЧsc!s sim†i[6alit№doRas`5 hџpтWб|С bqƒGвUGGуu‚и onрNЁNр€boBj ifБ[Fc вHre tryѓQ\№Hgeqp4У PџR`№XaѕJ№TБJmak№Msense,  n№we >aаЃeЗEgd џ9A Зp>qcЧEу (Д,‡k8+!Dim ­<PH ‘lngReјsul ›УEЇРрC?ж=8ш1ъaAБUnрicodeg?SSCon€‹NO_EPRROR€І0й'уЅъb mu№p`Л”€oAЅPyрqt`g‘и= pGvЁЉ, vb)Лџ0[B(Ÿo Џ!у  —цsб—X^BAuZ-Œ„inpЏsist0™–,Aƒ! t`›s,cP' so@Іw€ ‚jAchecke0ѓ1,p6ndy ЄѓЏ–іr@ЄCqЅИgЦcНœMP1А­P0Р0g€Fa%~$...a alway AhouАld, ŠС9nД€r know!Ѓ „IfG&<> 0aўnЃsР ‚ С„F №%(Q‹вtс‹is!7” aз)=ёtё%IDў(’aс1Ѕ- !si(™2ID We v@F $tАDbecŒau Љ`GPFQIpHЁFCHж жHЕ'…!an-exsџFT„ЁА‰ І00Б(§‘'QbMшŒчсA–T, amИqџїб 3: б3H<ƒq‹End Iаja1љЕq!й __SRP_6џџџџџџџџ Є__SRP_7џџџџ'ThisWorkbookџџџџџџџџџџџџ,(__SRP_aџџџџџџџџџџџџArU€€€€~|  ) ё Й џџџџџџџџџџџџ м&ѕѕ@l MTџ@Dџ Dџ`1dџ5Dџ tџ <ltџѕЬд?llџ<џ4<џldџ@џ4l@џltџ^ q8џ џџџџџџџџџџџџ<џџџџџџџџџџP+`pџџџџџџџџџџџџ@џџ iƒ’џџџџџџџџџџџџџџ€џџџџ+–(pџџџџџџџџџџџџ џџ( iƒ’џџџџџџџџџџР„ual iƒ˜џџџџџџџџџџр„operiƒšџџџџџџџџџџџџџџ‚+œ Ppџџџџџџџџџџџџ@џџP iƒ’џџџџџџџџџџ`„iƒšџџџџџџџџџџ€„iƒ>џџџџџџџџџџџџџџ‚+Bџџџџ`џџџџџџџџр8џkрџџџџ"")Œiƒžџџџџ џџџџџџџџ€`„’џџџџtџџџџџ----`„ џџџџpџџџџџ----`„Ђџџџџlџџџџџ----`„>џџџџhџџџџџ`„ЄHdџџџџџs@œІџџџџBџџse fџџџџ`џџџџџџџџ ut bƒŽџџџџџџиџџџџџџџџџџџџџџ%џџџџ`рџџџџџџџџ€xџџџџ0џџџџџџџџџџџџџџџџџџџџџџџџџџџџшџџџџаџџџџ0џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€И˜`BџџџџxџџџџџeterЈ€be namџџџџџџџџy but џџџџЈT–œrect i@ўџџџџџTџџџ џџ e fu@ўџџџџџDџџџ џџ t ea@ўџ@џџџџџ @ўџџџџџ<џџџџџ @ўџџџџџ8џџџџџ џџџџАџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџАџџџџџџџџџџџџџџџџџџџџџџџџџџџџГ'K:x$*\Rffff*263940fd2e*\R0*#4*\R0*#fпўЪK€€ џџџџ€ V€ :`€ L € џџџџ€ Z№€ TP€ џџџџ€ 6Ј€ џџџџ€ zр€ `€ x€ H€€ HШ€ L€ `€ x€ N€€ Bа€ € J € Hp€ VИ€ € zH€˜H€$АH€$Ш€ џџџџ€ zр€ `€ p€ Zx€ Vи€ 0€ \8€ Z˜€ &ј€ z B  €Ј€А€И€Р€Ш€ џџџџ€ а€ џџџџ€ <р& € џџџџ€ "8 € N` € JА  € џџџџ€ R  h € 2x ?А € џџџџ€ Pа € "  H € X  ,x € џџџџ     Ј А И Р џџџџа ЭџџxрPNOTE: The brilliant AddrOf function herein contained is the work of Ken Getz andџџр3Michael Kaplan. Published in the May 1998 issue ofџџрEMicrosoft Office & Visual Basic for Applications Developer (page 46).рSOffice 97 does not support the "AddressOf" operator which is needed to tell WindowsрMwhere our "call back" function is. Getz and Kaplan figured out a workaround.р/The rest of this module is entirely their work.рs-------------------------------------------------------------------------------------------------------------------р DeclarationsррB These function names were puzzled out by using DUMPBIN /exportsрB with VBA332.DLL and then puzzling out parameter names and typesрE through a lot of trial and error and over 100 IPFs in MSACCESS.EXEр and VBA332.DLL.ррG These parameters may not be named properly but seem to be correct inр< light of the function names and what each parameter does.ррD EbGetExecutingProj: Gives you a handle to the current VBA projectрB TipGetFunctionId: Gives you a function ID given a function nameрO TipGetLpfnOfFunctionId: Gives you a pointer a function given its function IDррs-------------------------------------------------------------------------------------------------------------------І–І –`І –рs-------------------------------------------------------------------------------------------------------------------р AddrOfррT Returns a function pointer of a VBA public function given its name. This functionрO gives similar functionality to VBA as VB5 has with the AddressOf param type.ррU NOTE: This function only seems to work if the proc you are trying to get a pointerрT to is in the current project. This makes sense, since we are using a functionр named EbGetExecutingProj.рs-------------------------------------------------------------------------------------------------------------------– ]ђ]ђ]ђ0]ђH]ђ`]Ќђxр5 The function name must be in Unicode, so convert it. ž Ј$T'Єр Get the current VBA projectрG The results of GetCurrentVBAProject seemed inconsistent, in our tests,рC so now we just check the project handle when the function returns. ’AрK Make sure we got a project handle... we always should, but you never know! ’Ќœр, Get the VBA function ID (whatever that is!)І ’ Є Ђ$–' рI We have to check this because we GPF if we try to get a function pointerр of a non-existent function.   Іœр  Get the function pointer. ’ Ђ >$œ'    Іœ >'BkџџPkџџHkџџ@iџџ8џџџџ0џџџџЗAttribute VB_Name = "basAddrOf" Option Explicit 'NOTE: The brilliant‚ ` func`herein contained is tbwork of Ken Getz andRMichael Kaplan. Publ(ish8n8Ma@y 1998Hs ueB5rosoft Office & Visual Basic€ for ApЙa”s Developer (ppўџџџџџџџџџџџ9(0ё (p ўџџџџџџџџџџџ9Y00Й Pp ўџџџџџџџџџџџ9Љ((`§џџџџџџџџџџџС0n<фjxXYї_їџџ#ˆЖџџџџџџџџ<џџЕ„ЯC-†гˆK“ІбРFД„ЯC-†гˆK“ІбџџџџџџџџџџџџxД„ЯC-†гˆK“ІбЕ„ЯC-†гˆK“ІбџџMEџџџџџџџџџџпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(SLџџџџSџџџџS”џџџџ6"џџџџџџN0{00020819-0000-0000-C000-000000000046}џџџџ €ўџџџџџџџ(џџџџџџџџџџ%џџџџHƒўџџџџџџџ`џџџџџџџџџџџџџџ %‚ Њџџџџўџџџџџўџџџџџџџџџџџ %џџџџ`џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџh8@˜˜џџџџџџџџџџџџџџџџџџџџџџ0Г'K:x$*\Rffff*273940fd2eпџџџџ4 ўЪ € џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€€ џџџџџџџџЭџџxџџџџpџџџџЦАAttribute VB_Name = "ThisWorkbook" ŒBasŒ0{00020P819-0C$0046} |GlobalаSpac’False dCreatablPredeclaIdБTru BExposeTemplateDeriv’Bustomi&zD2 Op tion 8licitrU€€€ Ai‘џџџџ4ЙIсџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸ`rU€€€ џџџџџџџџ@n__SRP_b џџџџFBSheet1џџџџH __SRP_cџџџџџџџџџџџџ]р__SRP_d џџџџaB<фjxXYїAїџџ#ˆЖџџџџџџџџ<џџЗ„ЯC-†гˆK“Іб РFЖ„ЯC-†гˆK“ІбџџџџџџџџџџџџxЖ„ЯC-†гˆK“ІбЗ„ЯC-†гˆK“ІбџџMEџџџџџџџџџџпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(SLџџџџSџџџџS”џџџџ6"џџџџџџN0{00020820-0000-0000-C000-000000000046}џџџџ €ўџџџџџџџ(џџџџџџџџџџ%џџџџHƒўџџџџџџџ`џџџџџџџџџџџџџџ %‚ Ќџџџџўџџџџџўџџџџџџџџџџџ %џџџџ`џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџh8@џџџџџџџџџџџџџџџџџџџџџџ0Г'K:x$*\Rffff*283940fd2eпџџџџ4 ўЪ € џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€ џџџџ€€ џџџџџџџџЭџџxџџџџpџџџџОАAttribute VB_Name = "She@et1" шBast0{000Р20820- C$0046} |Global!ФSpac’False dCreatablPre declaIdЋTru BExposeTemplateDeriv$’BustomLizD2 O@ption 8licitrU€€€ @Iq™џџџџ!4Сiщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€`rU€€€ џџџџџџџџ@nrU€€€€~|  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџprU€€€ џџџџџџџџ,A pџџџџџџџџџџџџс4џџџџ,! (pџџџџџџџџџџџџ !8TpџџџџџџџџџџџџбmBrowseDeclares џџџџџџџџџџџџ[d8__SRP_2џџџџcr__SRP_3џџџџџџџџџџџџeбmDemo џџџџџџџџ€вџџ€Lˆ€ Bи€  € џџџџ€J8€ Bˆ€ 0а€ џџџџ€>€ @€ 0џџџџ€R`€ :И€ <ј€ 0џџџџ€J8€ 8ˆ€ 0џџџџ€PР€ B€X€ џџџџ„ `„ p€ џџџџ€ €„6˜€ .а€ 8€ @џџџџ„:8€ ,x€ џџџџ„:Ј€ 4ш€ , € џџџџ„HP€ J˜€ Dџџџџ„Jш€ 68€ џџџџ„Jp€ >Р€ 6 € D8 € Dџџџџ„R€ € џџџџ„\и € џџџџ„F8 € 4€ € џџџџ„DИ € 4 € џџџџ„J8 € џџџџ„dˆ € џџџџ€ :№ € џџџџ„L0 € $€ € 4џџџџ„LЈ € Vј € 4џџџџ„VP € FЈ € 8№ € F(€ Hp€ 8И€ џџџџ€ 2№„(„@„X„p„ˆ€ џџџџ„ Р„АЌ”pџџџџ0а)Yї|uџџЖџџlи@џџ-0SHBrowseForFolderAи<-0SHGetPathFromIDListAџџџтh(џџSendMessageAyBъŒJTџџRtlMoveMemoryџџтАxGetWindowRectтдџџœџџGetSystemMetricsџџтќРhMoveWindowъџџшLocalAllocъ<LocalFreeџџ*\(ТCoTaskMemFreeџџџџ џџџџџџџџџџџџџџџџxџџRR џџџџџџџџџџџџџџџџџџџџRHRџџџџџџџџџџџџџџџџџџџџMEHџџџџџџџџпџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(@џџ$@џџt> џџџџ<џџџџџџ@А $Hџџџџh€А0џџџџџџh€,Hџџџџh€В`џџџџџџh€0x џџDyBh€2џџh€>Јџџh€4Рџџh€ДџџџџџџЪ˜ИBџџџџџџџџџџџџџџЪ˜М(BџџџџџџџџџџџџџџЪ˜О8BџџџџџџџџџџџџџџЪ˜Т` BџџџџџџџџџџџџџџЪ˜Ц €Bџџ џџџџџџџџџџџџЪ˜ШˆBџџ џџџџџџџџџџџџЪ˜ЬА@Bџџ џџџџџџџџџџџџЪ˜PBџџџџџџџџџџџџџџЪ˜\иBџџџџџџџџџџџџџџЪ˜^ dBџџџџџџџџџџџџџџЪ˜XfBџџџџџџџџџџџџџџЪ˜в( gBџџџџџџџџџџџџџџЪ˜ˆP Bџџџџџџџџџџџџџџ%+DPpџџџџџџџџџџџџ(џџ )ƒжџџџџџџџџHџџџџ€SeA%+jа(pџџџџџџџџџџџџџџ( iƒкџџџџџџџџџџА„ caliƒмџџџџџџџџџџџџџџ„occu+VTpџџџџџџџџџџџџџџT iƒJџџџџџџџџџџ0„iƒоџџџџџџџџџџP„iƒрџџџџџџџџџџp„iƒ4џџџџџџџџџџџџџџ„ Rи xpџџџџџџџџџџџџаџџџџxiƒфџџџџџџџџџџ№€iƒцџџџџџџџџџџ€iƒшџџџџџџџџџџџџџџ„+~Иœpџџџџџџџџџџџџpџџœ iƒJџџџџџџџџџџ„)ƒьџџџџџџџџАџџџџ€A%+†РРpџџџџџџџџџџџџјџџР iƒюџџџџџџџџџџџџџџ„ƒЎџџџџџџрџџџџџџџџџџџџџџ8 tџџџџ`џџџџh€мxџџh€„џџh€€Јџџh€‚џџџџ џџ+Œџџџџшpџџџџџџџџџџџџџџш  iƒJџџџџџџџџџџ „iƒpџџџџџџџџџџ@„iƒ№џџџџџџџџџџ`„iƒђџџџџџџџџџџ€„iƒєџџџџџџџџџџ „iƒіџџџџџџџџџџџџџџ„Ъ˜ЖшBџџџџџџџџџџџџџџЪ˜hиBџџџџџџџџџџџџџџЪ˜КBџџџџџџџџџџџџџџЪ˜РPBџџџџџџџџџџџџџџЪ˜Фx@BџџџџџџџџџџџџџџЪ˜ЪШ Bџџ џџџџџџџџџџџџЪ˜Ю№€џџBџџ џџџџџџџџџџџџЪ˜`@BџџџџџџџџџџџџџџЪ˜аheBџџџџџџџџџџџџџџЪ˜дј hBџџџџџџџџџџџџџџЪ˜ŠџџџџBџџџџџџџџџџџџџџ+ 0(pџџџџџџџџџџџџИ џџ( iƒ"џџџџџџџџџџџџџџ„и $H Hpџџџџџџџџџџџџ џџџџHiƒ(џџџџџџџџџџџџџџ„џџџџШ џџџџИ+x pџџџџџџџџџџџџˆ џџ iƒџџџџџџџџџџЈ „iƒџџџџџџџџџџџџџџ„p (џџџџLџџp џџџџLџџ№ژ4 BџџџџџџџџџџџџџџЪ˜6H @BџџџџџџџџџџџџџџЪ˜.И@Bџџџџџџџџџџџџџџџџџџ0@ШџџџџиHџџџџИРџџџџшџџџџрџџџџЈ џџџџџџџџџџџџИP@hPџџџџ8а`ј xШџџџџ0џџџџџџџџИx ши( P иРH №H џџџџ HРАџџџџ (ˆџџџџџџџџџџџџи џџџџџџџџџџџџџџџџџџџџшџџџџџџџџџџџџџџџџР шРџџџџџџџџџџџџРHP џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;И Г'K:x$*\Rffff*843a4b20c0(*\Rffff*843a4b20c0\0(*\Rffff*843a4b20c0\1пeўЪ‡€€ џџџџ€ џџџџ€€<€ џџџџ€HP€ B˜€ :р€ : € (`€ 0џџ а„р€ џџџџ€ ( H€Ш€ иH€ј€ @H€H€ џџџџ(€`€ џџџџ(€ x€ џџџџH€P€ џџџџH€h€ џџџџ€ џџџџ€ ZpH€ а€ џџџџH€ и€ џџџџ„ р„ №€ џџџџ€€€€€ €(€ џџџџH€,0€ ,ˆ€ џџџџ€ џџџџџџџџЭџџx№^ђр#.Handle to the owner window for the dialog box.ичI^ђ0р$:Address of an ITEMIDLIST structure specifying the locationр0;of the root folder from which to browse. Only the specifiedр03folder and its subfolders appear in the dialog box.р04This member can be NULL; in that case, the namespaceр0"root (the desktop folder) is used.^ђHр =Address of a buffer to receive the display name of the folderр0;selected by the user. The size of this buffer is assumed toр0be MAX_PATH bytes.^ђ`р(;Address of a null-terminated string that is displayed aboveр0<the tree view control in the dialog box. This string can beр0)used to specify instructions to the user.^ђxр'0Flags specifying the options for the dialog box.р0See constants below^ђр(DAddress of an application-defined function that the dialog box callsр03when an event occurs. For more information, see theр05BrowseCallbackProc function. This member can be NULL.^ђЈр$;Application-defined value that the dialog box passes to theр01callback function (in pData), if one is specified^ђРр$BVariable to receive the image associated with the selected folder.р0<The image is specified as an index to the system image list.pџџ ]$ЎђР]$ЌђшрulFlag constants]$Ўђир-$Only return file system directories.рB(If the user selects folders that are notрB1part of the file system, the OK button is grayed.]$Ўђр*(Do not include network folders below theрD%domain level in the tree view control]$Ўђр5(Include a status area in the dialog box.рD-The callback function can set the status textрD&by sending messages to the dialog box.]$Ўђ(р.6Only return file system ancestors. If the user selectsрDCanything other than a file system ancestor, the OK button is grayed]$Ўђ8р78Version 4.71. The browse dialog includes an edit controlрD/in which the user can type the name of an item.]$Ў ђPр78Version 4.71. If the user types an invalid name into theрD7edit box, the browse dialog will call the application'sрD/BrowseCallbackProc with the BFFM_VALIDATEFAILEDрD> message. This flag is ignored if BIF_EDITBOX is not specified]$Ў@ђ`р,@Version 5.0. New dialog style with context menu and resizability]$Ў€ђxр,JVersion 5.0. Allow URLs to be displayed or entered. Requires BIF_USENEWUI.]$Ўђ р,3Only return computers. If the user selects anythingрL.other than a computer, the OK button is grayed]$Ў ђˆр.2Only return printers. If the user selects anythingрL.other than a printer, the OK button is grayed.]$Ў@ђШр/7The browse dialog will display files as well as folders]$Ў€ђАр&RVersion 5.0. Allow display of remote shareable resources. Requires BIF_USENEWUI.р3Message from browser to callback function constants]$Ќђ№р$:Indicates the browse dialog box has finished initializing.р;The lParam parameter is NULL.]$Ќђр$9Indicates the selection has changed. The lParam parameterр4Ocontains the address of the item identifier list for the newly selected folder.]$Ќђир&DVersion 4.71. Indicates the user typed an invalid name into the editр8@box of the browse dialog. The lParam parameter is the address ofр82a character buffer that contains the invalid name.р8?An application can use this message to inform the user that theр8Aname entered was not valid. Return zero to allow the dialog to beр82dismissed or nonzero to keep the dialog displayed.р+ messages to browser from callback function]$ ЖЌd ђ@]$ ЖЌe ђ ]$ ЖЌf ђh]$ ЖЌg ђ]$ ЖЌh ђ( р"Main Browse for directory functionІ–шрGets path from pidlІ–Pр9Used by callback function to communicate with the browserІ –аІ –рT'The following declarations for the option to center the dialog in the user's screen–0–И]$ЌђИ]$ЌђP №H^ђ`^ђx^ђ^ђЈpџџаІ –РІ –H og cntІ–x io–и џџџџxр%'End of dialog centering declarationsџџџџP]$Ўђј ]$Ў@ђ ]$ 4 6ђH џџџџ€џџџџ[ЖAttribute VB_Name = "mBrowseDeclares" Option Explicit Pub4 Type BROWSEINFO hOwner €As Long" 'Handle to the o,window fordialog box.SpidlRo„ot['AddДs of an ITEMIDLIST structure spe`cifyi™?lxocao0V' 2 rHfold€yfrom wh(ichobЅ. 0Onlykƒ=iedА6„0€ its subƒs appear inЊiThis m(emb3c€Pbe@ NULL;Ca€t case,‚n@Œspace03ТL(AOdesktLop@~P) €u8sed„}щ.ƒ!pszDisplay{BДЁS@Й{€Š‡ 0buff@9€ЁreАceiv@Є€Ѓd> A7‘С(ZА9selected bCУ@6r. T€sєiz€ОfRfuncІРW`Aс&Ж „lls! 'whe  n event oc€curs. F ТЄmoрЖin€Уmтј, s@"РП Ў УлCallbackрProc Ѕ!sРLЏŸŸ‘Э #lPaˆram.'Apъa‹+valua‘/+pнРƒeEUncЄ& (@cpData), if on~eXг,oj^S i`Imageѕ'РVariabC€йWFir`oci2Gwќit tSЅTУX/П}'qWСDb€0 ŠatnР@dexU@€system УlistрEndтŽиConst €WM_USERР“€&H400 Д‘CгY= 26Р < 'cEёN#=BIF_RETURNONLYFSDITRSТ1 'т„rТeаŒn fi@ф „di tori–_Oя'Iёie~ 1Q7Ёl!Mqz@(hу№)Ђ no ЁУ'parP?“X Г†OKрztt`Јс gray‚я_DONTGOBELOWDOMAIN’2 'DoЁp"clude netwoфrkt‹s bY№Ppo'doma}Р9lаP&qОrО(Б#STATUSTEXšTВ 4па Inc "aБatu 0reіaР  оЗ/Ђ7пG‘|set2у 0atexя$Џ…'0—send1y№messIЅS _ ф7FSANCEStTOє783џ7є7a№nces№7PkŸ3q 'anytКh1 o№oСв@Кaj@ћeŸ3 “3Ÿco_EDITBO2Xb'10/'Versх4.717гАƒвeiГ)bYed~i0Ч“Ё /'пP5к`eВMq(t‘ь ;†Пpi@`_Ÿ_V€ALIDATEЂ~2ЏCœI!сi’n№~idcinCёяŸ] џ'Т0є“ KwilїЖl call the application's @'BrowseCФbackProc withоBFFM_VALIDATE@FAILEDDu message. This flag ignored if BIF_EDITBOX not specifiedACB Pub€Ї Const8NEWDIALOGSTYLE = &H40ƒВ'VersМ 5.0. New dialog styleƒ™contextnnu and resizabi@lity 8BROWSEINCLUDEURLS ‚989 8Allow @s to be@splayaKor eРРM.Р Requi@B3ˆUSE4UI.˜FORCOMPUTER‚1000@ 'Only/turn comp„ut?. If‚…user selects€9yth˜ingџdIГ'oРЛBr@an a† ,‚OK buttdonС…grС@8PшRINХ72С7@Š8шpriPs8Щ0лпK8D 8Y8ЄGFРsУGв4c'T@†bТ{eU$wi ‰di"G fileр7s weХ a poldр<’)€SHAREAB„b68$ jb cTХ of Hmote sh`areab d So0urce -XU'Mƒƒ from # `AoЁЁ” funŽcЁ  C@want ЁC­ka—INITрyI(ZED [1 2'Is  AtРitem idр•Йr li Џf ˜newРŽЛ€/fТQ#‘ q##+йB3 ІЌ4.71рЊCtyp€рinvali€d name †ТoЂ‘edit%r§€'ANd#jQ32#‘ОaVЏЏ'pU €9ac(buffЁ@]that15tіŸIЏŸ'Ap\ѓз‹ „ nWidthS…He h, bРRepaintˆЧ''mof dialog centering d~aС|sС= 9Qщ0ixp џџџџџџџџџџџџiЁ""(aHpџџџџџџџџџџџџ‰,pџџџџџџџџџџџџ™Б(б(pџџџџџџџџџџџџЩ0 œpџџџџџџџџџџџџбЙ4џџџџ(сРpџџџџџџџџџџџџб@™шpџџџџџџџџџџџџб)щљ)A q nrU€€€€~| P Б!й I‰Щ Iщ` ѕqtџ Vќјlџ4Xџѕ :\џ%lџ иXџW8џўСHџ]ћ3Xџ58џZltџѕЊqtџ4Xџѕ :\џ%lџ иXџW8џўСHџ]ћ3Xџ58џœltџѕ Њqtџ4Xџѕ :\џ%lџ иXџW8џўСHџ]ћ3Xџ58џоltџѕЊqtџ4Xџѕ :\џ%lџ иXџW8џ‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’ўџџџ”•–ўџџџ˜ўџџџš›œžŸ ЁЂЃЄЅІЇЈЉўџџџЋЌ­ЎЏАБВГДЕЖЗўџџџЙКЛМНОПРСТўџџџФХЦўџџџШЩЪЫЬЭЮЯабвўџџџдежўџџџийклўџџџнўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ__SRP_4 џџџџq0__SRP_5џџџџџџџџџџџџ~gSheet2џџџџџџџџџџџџ€Р__SRP_eџџџџџџџџџџџџ“рўСHџ]ћ3Xџ58џ ltџѕ@Њqtџ4Xџѕ :\џ%lџ иXџW8џўСHџ]ћ3Xџ58џbltџѕ@Њqtџ8Xџѕ :\џ %lџ иXџW8џўСHџ]ћ/(џќVprџXџ58џќcќјlџ:'8џ(џ :Hџ Nџџrџtџ(џ`§Ч$џ 1xџ/$џ68џ(џџ lxџ ћ=&'џ'(џ'8џѕxџM\џ@ 68џ(џџˆ,blџxџ $џXџ8џ(џџkrU€€€ џџџџџџџџ$`§џџџџџџџџџџџn<фjxјYїЋџџ#ˆЖџџџџџџџџ<џџЛ„ЯC-†гˆK“Іб РFК„ЯC-†гˆK“ІбџџџџџџџџџџџџxК„ЯC-†гˆK“ІбЛ„ЯC-†гˆK“ІбџџMEџџџџџџџџџџпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(SLџџџџSџџџџS”џџџџ6"џџџџџџN0{00020820-0000-0000-C000-000000000046}џџџџ €ўџџџџџџџ(џџџџџџџџџџ%џџџџHƒўџџџџџџџ`џџџџџџџџџџџџџџ %‚ џџџџўџџџџџўџџџџџџџџџџџ %џџџџ`џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџh8@џџџџџџџџџџџџџџџџџџџџџџ0Г'K:x$*\Rffff*2:3940fd2eпџџџџ4ўЪ€ џџџџ€€ џџџџџџџџЭџџxџџџџpџџџџОАAttribute VB_Name = "She@et2" шBast0{000Р20820- C$0046} |Global!ФSpac’False dCreatablPre declaIdЋTru BExposeTemplateDeriv$’Bustom izD2 Op tion 0licit rU€€€ Аёqџџџџ!4Сiщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€`rU€€€ џџџџџџџџ@n__SRP_fџџџџ—BSheet3 џџџџ™_VBA_PROJECT џџџџ’{dirџџџџџџџџџџџџЊ^‚ƒ„…†‡ˆўџџџŠ‹Žўџџџ›Ÿ“”•–—˜™ŒўџџџœžЈўџџџЁЂЃЄЅІЇšўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ№ диџџџџљ Yї=TџџЖџџџџџџџџџџџџџџџџџџџџџџxџџMEџџџџџџџџџџпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџP6 џџџџџџџџš џџџџџџџџџџџџLџџџџЊ"џџџџš џџџџџџxЈ њџџџџ`џџџџџџџџРєўkџџџџџџџџџџ„`„ќџџџџxџџџџџ`„@tџџџџџ`„ўXrџџџ џџxџџџџƒјџџџџџџИџџџџџџџџџџџџџџ%џџџџџџџџџџџџџџџџџџџџџџџџџџџџpџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@ШјџџџџАџџџџџџџџџџџџџџџџџџџџџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ( џџџџИЌРТМЬФџџџџўџџџџџlџџџ˜`%џџџџ€@ўџр\џџџ џџ @ўџџџџџXџџџ џџ @ўџpHџџџ џџ @ўџ8џџџ џџ @ўџX(џџџ џџ `L@ўџџџџџ$џџџџџ @ўџџџџџџџџ џџ @ўџˆџџџ џџ @ўџџџџџєўџџ џџ џџџџXџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџˆГ'K:x$*\Rffff*?>3a4b2836*\R0*#14$*\Rffff*??3a4b2838*\R0*#11*\R1*#b*\R1*#c0$*\Rffff*283940fd2e$*\Rffff*843a4b20c0пўЪ%€€ џџџџ€ J€ џџџџ€ X€ p€ ˆ€ џџџџ€ Ј€ џџџџ€ Hp€ џџџџ€ 6 € TШ€ TX€ BА€ ј€ џџџџ€ ^€ RИ€ p€ џџџџ"€€ˆ   Ј4BА4Bш4B 4BX4B&8Ш№F:ј3@`€ џџџџџџџџЭџџxрCTo include Browse for Folder in your project copy the three modulesр - basAddrOfр - mBrowseMainр - mBrowseDeclaresрinto your project intact.рMYou will not have the checkboxes used in the demo but you will have to decideр/Then to call it use code similar to that below.рMhow much functionality you want Browse to have. If all you want is the basicр<browse dialog just set Flags = BIF_RETURNONLYFSDIRS and callр GetDirectory.рXI've used CurDir to set the initial folder selected in the dialog to the current folder.р you want.–]ђ@ђXђp И' ЌѕЖ Check Box 27! ›G  Р 'jЖ Check Box 37! ›G  Т 'jЖ Check Box 47! ›G  М 'jЖ Check Box 57! ›G  Ь 'jЖ Check Box 67! ›G  Ф 'jЖ Check Box 77! 'ўqџџh L  ўЖ,Please select a location to store data files$'ќ ќЖ›G ќA@joџџјџџџџ№рBYou can combine the code in the three modules into one if desired.рLThat's a good default but you can use a hard wired string like "C:\FILES" ifџџџџџџџџЏГAttribute VB_Name = "mDemo" Option Explicit 'To include Browse for F older2 your project copy theree modulesŽ - basРAddrOfWBmQMain D eclar9in to fact.WYou canЁzmbinye Й­in‰А€%oif desirDed#The€o%ll it u tco#simi€E €that  below€'<wi€not hav=heckbаoxes!d‡кdА Лc ‚ƒBo€Bcidehow much funcУaliФtyant…О€C. If a“?Р wisx)Вic€'bƒжdialog just set Flags}BIF_RETURNONLYFSDIRS0 andB@€GetD€Gctory3€;@I'Р8РEd xCurРDAС7i8nitР†Т…sezl€ƒe‡?!ТP€guhrre@4f‘СRT@V's a go„od€Dfaul€Z\ut‚?wСca€Yr&d€O@m sРБng like "C:\FILES" iС–…DТ-Sub‚ СЗ() Dim RetS@tr As €i˜ng,„ELo8DoC@(@И@Bo№olea@ЈA™OУWith She8et1 Рj.CЅ†B†("Т  2").Val‚uтxlOn BЂ…У+ AkEDIPTBOX!3&V€ALIDATEП (x 4П CSTATUSTEXT1џ x 5џ ф BROWSEINCLUDE">џ x 6џ ф NEWDIA€LOGSTYLh"бЦA= (є87Œ ЄMžE j!BуфN= Љk&(УidP, … , <"PO‘УiРclo,caBД is se €data fi Ќ"$@MФ <> "b"уIMsgM " ЁSubЈ№ддџџџџлOYїМхџџ#ˆЖџџџџџџџџџџџџџџџџџџџџџџџџxџџMEџџџџџџџџџџпџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(SLџџџџSџџџџS”џџџџ<џџџџџџN0{00020820-0000-0000-C000-000000000046}џџџџH€ўџџџџџџџ(џџџџџџџџџџ%џџџџHџџџџ0џџџџ(џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8Г'K:xпўЪ€€ џџџџџџџџЭџџxџџџџpџџџџМАAttribute VB_Name = "She@et3" шBast0{000Р20820- C$0046} |Global!ФSpac’False dCreatablPre declaIdЋTru BExposeTemplateDeriv$’Bustom izD2Option /licit ZГ€0* pH‚dф DIR_SEL.xls8@е = t  Г'K:(x J< rstdole>stdole f%\*\G{00020430-;C 0046}#2.0#0#C:\WINDOWS\SYSTEM\c2.tlb#OLE AutomatioFn^€MSForms>BSFEr@ms3€DD452EE1-E08F-1 01A-8-02608C4D0BB4Dfm20.dll#Mic€rosoft ‚9 €\ Object Librarаy/;C1€„sˆˆ00}#:0‚#€j0rРAENMV Ќ(MoveWindow_y basAddrOfСGetCurrentVbaProjectq…hProjectDЄ vba332.dllpг GetFuncIDhиstrFunctionNameUM strFunctionIdћ0GetAddrлA strFuncNamesM lngResultQstrIDJ`strFuncNameUnicodeт)NO_ERRORI vbUnicodeјІ ThisWorkbook|у Sheet1ш mBrowseDeclaresYhOwnerEmpszDisplayNamehriImageUрЌ(WM_USERJЃЌ(BIF_RETURNONLYFSDIRS-МЌ(BIF_DONTGOBELOWDOMAINЩbЌ(BIF_STATUSTEXTТiЌ(BIF_RETURNFSANCESTORS˜V Ќ(BIF_EDITBOXџ# Ќ(BIF_VALIDATEхЌ(BIF_NEWDIALOGSTYLEН>Ќ(BIF_BROWSEINCLUDEURLS„Ќ(BIF_BROWSEFORCOMPUTERvпЌ(BIF_BROWSEFORPRINTERВCЌ(BIF_BROWSEINCLUDEFILESo} Ќ(BIF_SHAREABLE™З Ќ(BFFM_ENABLEOKeЎЌ(BFFM_SETSELECTIONWщЌ(BFFM_SETSTATUSTEXTWyљ lpBrowseInfo№r shell32.dll+ˆpidlЎЇpszPath№˜wMsg+awParambuser32*ЮhpvDestјя hpvSourceмŒcbCopyCюkernel32_ЅlpRectЫnIndex'ylnWidthЬЕnHeightѕэbRepaint4О mDemo6UЌ(DemouORetStr‡.DoCenterWЩ CheckBoxesЬValueфKxlOnРцMsgBox—R Sheet2щWorkbookk WorksheetСў_B_var_StrConv{ _B_str_Chrm# _B_var_LeftQс _B_var_CurDirT–€џOnTimeTе €џџџ_B_var_OnTimeОO Ќ(LocalAllocаuFlags&uuBytesЭ… Ќ(LocalFree^hMemЪ Ќ(CoTaskMemFreeлM€џџџ_B_var_CoTaskMemFreey!pvЛ^ ole32.dllШ lpSelPathз%Ќ(LPTRМИsSelPathН €џџџ_B_var_LPTRщ Ќ(LMEM_FIXEDњp Ќ(LMEM_ZEROINITЋ lpInitDirЃѓ Sheet3ъџџœџџџџџџџџџџџџ џџџџЋџџ­Џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ; €€€!Ф(„0.Ш0‚@† 3BF22CC8-669A-11D3-880СZ104BР93A6D16€W@P\VBE\DO.8exd`7€с.E р….@`ŒM ДЁ‚œТYї‚žmBrowse€MainG€ mBrРgw@geMaiЈn 2 €(HB1ТЈZXB,B K!B+B РbasAddr`OfG@sTA€ЎdР$OЎm‹ 2” O ўР6M DїK СаThisWorkbookGD!Th€@sDW­kbРolk€DЭ 2к o^#@‚m_ї"`Ѕ"!ySheet1*G"yS e xtv1 Ї2Ўџ AA ь  dBDecl aresG@7рtUщBD@cР‰aр2eЉ E2Џdж)oE|u+5ЁЄm€DemoG Jсm3F2“L/  / =T+ U&,2э/2щ/2э/2I0ўя Ћє=3Uэ 3щ 3э 3№ U)№ Мхщ €'__SRP_0џџџџџџџџ н__SRP_1џџџџџџџџџџџџИŒPROJECTwmџџџџџџџџџџџџУьPROJECTџџџџЧгЬamџ  ф*\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA6\VBE6.DLL#Visual Basic For Applicationsк*\G{00020813-0000-0000-C000-000000000046}#1.3#0#C:\MSO2K\Office\EXCEL9.OLB#Microsoft Excel 9.0 Object LibraryИ*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\stdole2.tlb#OLE Automationк*\G{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0#C:\WINDOWS\SYSTEM\fm20.dll#Microsoft Forms 2.0 Object Libraryф*\G{3BF22CC8-669A-11D3-8800-00104B93A6D1}#2.0#0#C:\WINDOWS\TEMP\VBE\MSForms.exd#Microsoft Forms 2.0 Object Libraryс.E р….`ŒM Д  џџџџџџГ'K:xџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџYїmBrowseMain??3a4b2838џџmBrowseMainџџK`џџџџџџџџZbasAddrOf263940fd2eџџŽbasAddrOfџџDїўџџThisWorkbook273940fd2eџџЋThisWorkbookџџ_ї0^џџ Sheet1283940fd2eџџ­ Sheet1џџAїH^џџmBrowseDeclares843a4b20c0џџЎmBrowseDeclaresџџ|u`ж)џџ mDemo?>3a4b2836џџј mDemoџџ=T`џџџџHџџџџџџџџx  Sheet22:3940fd2eџџ  Sheet2џџЋўџџ Sheet3063a4b3e92џџ; Sheet3џџМхАUџџџџџџаџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџАџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0џџџџџџџџџџџџџџџџxџџџџџџџџHџџџџ`џџџџЂ„ЯC-†гˆK“ІбџџџџЄ„ЯC-†гˆK“ІбџџџџІ„ЯC-†гˆK“ІбџџџџЈ„ЯC-†гˆK“ІбџџџџЊ„ЯC-†гˆK“ІбџџџџЌ„ЯC-†гˆK“ІбџџџџЎ„ЯC-†гˆK“ІбџџџџџџџџP_žіЅ!дˆK“Ібџџџџџџџџ€Ёџˆ<_€џifmLeftР€џwith Excel€+ VBAїтWin16С~Win32MacГВVBA6­# DIR_SEL.xls’žstdole“`MSFormsC mBrowseMain%s _Evaluateй CntrDialogђЊ Ќ(GetDirectory$АInitDir<ѕFlagsoCntrDlg–0MsgQЕbInfo” Ў(!BROWSEINFOЗYPath2ItemIdentifierListAddressуSuccessо|pidlRootd IsMissing˜э lpszTitleSŽulFlagsэСlParam…7StrPtr‚6Valнт ApplicationЅ*VersionЁХlpfnВЖЌ(BrowseCallBackFuncAddressPзЌ(AddrOf'КЌ(SHBrowseForFolder"№ Ќ(GetPathFromIDqЈЌ(BrowseCallBackFunc Лhwnd/СpDataЏі DirBufferYDЌ(BFFM_INITIALIZED"у Ќ(CopyMemory&StrConvx' Ќ(SendMessageя‘Ќ(BFFM_SETSELECTIONAщ Ќ(CenterDialogЧ]Ќ(BFFM_SELCHANGEDšџЌ(BFFM_SETSTATUSTEXTAdљЌ(BFFM_VALIDATEFAILEDhBeepУIDІ]ResulturЌ(MAX_PATHЇ(Ќ(SHGetPathFromIDListKœChrK~ Ќ(Long2Long/}xoWinRect ќЎ(!RECTiScrWidth4Ћ ScrHeightєљDlgWidth`э DlgHeight(Q Ќ(GetWindowRectBšRight BottomH{Top5кЌ(GetSystemMetrics•%Ќ(SM_CXFULLSCREEN‹Ќ(SM_CYFULLSCREle32.dll CoTaskMemFree 9( LocalAlloc LocalAlloc IљH LocalFree LocalFree IБhSheet35rU€€€€~~{ џџџџџџџџџџџџ    џџџџInitDirFlagsCntrDlgMsg 14hwndlParampDataIDxhProjectstrFunctionName strFunctionIdlpfn strFuncName lpBrowseInfopidlpszPathwMsgwParamhpvDest hpvSourcecbCopylpRectnIndexynWidthnHeightbRepaint aЙ aСpvuFlagsuByteshMemmBrowseMainmBrowseMainThisWorkbookThisWorkbookSheet1Sheet1basAddrOfbasAddrOfmBrowseDeclaresmBrowseDeclaresmDemomDemoSheet2Sheet2Sheet3Sheet3ID="{4F0007BC-FC45-11D1-8800-00104B93A6D1}" Module=mBrowseMain Document=ThisWorkbook/&H00000000 Document=Sheet1/&H00000000 Module=basAddrOf Module=mBrowseDeclares Module=mDemo Document=Sheet2/&H00000000 Document=Sheet3/&H00000000 Name="DIR_SEL.xls" HelpContextID="0" VersionCompatible32="393222000" CMG="81831B191F191F191F191F" DPB="B7B52D7955998A9A8A9A8A" GC="EDEF77BF9BF49CF49C0B" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] mBrowseMain=24, 9, 802, 787, ThisWorkbook=0, 0, 0, 0, C Sheet1=0, 0, 0, 0, C basAddrOf=13, 18, 636, 480, C mBrowseDeclares=14, 12, 717, 398, C mDemo=23, 10, 685, 619, C Sheet2=0, 0, 0, 0, C Sheet3=0, 0, 0, 0, C ўџ р…ŸђљOhЋ‘+'Гй0Ј@H\p ˆ ” ф Jim Rech  Jim Rech Microsoft Excel@€ЂР<дкЛ@УiђЕПўџ еЭеœ.“—+,љЎ0ь PSummaryInformation(џџџџ!џџџџгиDocumentSummaryInformation8џџџџџџџџџџџџзCompObjџџџџџџџџџџџџмfџџџџџџџџџџџџ“K*mџџџџrU€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Z ЩЭЫSМС!дˆK“Іб  фсˆa yџџџџџџџџ™СёYyџџщˆa yџџџџџџџџ‘™ a ) џџ ƒŠa џџџџџџ)ƒŠa џџџџџџQˆa yџџџџаџџџџ ‘ Б ‘ qйб‰YyQџџiA yџџџџџџџџaџџ‘ƒŠa џџџџџџЉ џџџџџџџџџџџџA‰aiA DIR_SEL.xls mBrowseMain basAddrOf ThisWorkbookSheet1mBrowseDeclaresmDemoSheet2яРF@C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA6\VBE6.DLLVBA Сџџџџ щy0РFC:\MSO2K\Office\EXCEL9.OLBExcel сџџџџ I@0РFЁЩџџџџC:\WINDOWS\SYSTEM\stdole2.tlbstdole Йџџџџ QPс.E р….`ŒM ДC:\WINDOWS\SYSTEM\fm20.dllMSForms ССщ)`Ш,ђ;šfгˆK“ІбC:\WINDOWS\TEMP\VBE\MSForms.exd ™СС)pDemo  GetDirectoryBrowseCallBackFunc GetPathFromIDBrowseCallBackFuncAddress Long2Long CenterDialogРFйРFеРF $BrowseCallBackFuncGetCurrentVbaProject vba332.dll EbGetExecutingProj бљА GetFuncID TipGetFunctionId бС аGetAddr TipGetLpfnOfFunctionId б №AddrOf   ,  SHBrowseForFolder shell32.dll SHBrowseForFolderA Щ  (SHGetPathFromIDList SHGetPathFromIDListA Щ щ H SendMessage user32 SendMessageA Й й h CopyMemory KERNEL32 RtlMoveMemory ™Сˆ GetWindowRect GetWindowRect Check Box 2 Й ‰ЈGetSystemMetrics GetSystemMetrics Й БШ MoveWindow MoveWindow Й yшVBE6.DLL  џџџџP   џџџџ„ @Ё`  џџџџE p Bad Directory Value  џџџџЭ   џџџџ А  џџџџ а  џџџџi №џџџџЉHкРFЕ„ЯC-†гˆK“ІбРFД„ЯC-†гˆK“ІбDРFWorkbook @иРFЗ„ЯC-†гˆK“Іб РFЖ„ЯC-†гˆK“ІбDРF Worksheet Check Box 3 Check Box 4 Check Box 5 Check Box 6 Check Box 7 XPlease select a location to store data files  џџџџ‡ p  џџџџS Л„ЯC-†гˆK“ІбК„ЯC-†гˆK“Іб kernel32 IС CoTaskMemFree oXt |„Œ” œ ЩфKPMG Peat Marwicksэ Demo Discussion Versions  Worksheetsўџ џџџџ РFMicrosoft Excel WorksheetBiff8Excel.Sheet.8є9Вq