【VB笔记】

2012.3.11 判断一个文件或者文件夹是否存在

API函数 PathFileExists
声明
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

PathFileExists("一个文件或文件夹") 如果存在 返回1 不存在返回0

If PathFileExists("C:\123") then ...

Dir不准确

如果有下列目录结构

D盘中有文件夹 test 文件夹中有testFile.txt文件

还有空文件夹 testEmpty



Dir("d:\test\testFIie.txt") 返回 testFile.txt

Dir("d:\test\testFIie11111111.txt") 返回 ""

Dir("d:\test\") 返回 testFile.txt (返回此文件夹第一个文件)

Dir("d:\testEmpty") 返回空

dir("一个不存在的文件夹")返回空

也就是说如果一个文件夹下没有文件(不管有没有子文件夹)则 dir("一个文件夹")就返回空

所以不能通过 dir("一个文件夹")来判断一个文件夹是否存在。

只能调用api函数

Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

PathFileExists("一个文件或文件夹") 如果存在 返回1 不存在返回0

 

2012.3.11 返回盘符的类型

判断CDEFGHI等盘里有没有1.txt文件!

If Dir("i:\1.txt") <> "" Then End

这样子的话一旦搜索到光驱就会出错了...
有没有办法解决?

 

可以用GetDriveType返回盘符类型,返回值:0-未知的磁盘类型;
1-无效的磁盘;2-可移动磁盘;3-固定磁盘;4-网络磁盘;5-光驱;6-RAM
如果不是光驱再做判断,复制粘贴下段代码:

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Sub Command1_Click()
Dim dri As String
dri = "C:\"
If GetDriveType(dri) <> 5 Then
    If Dir(dri & "1.txt") <> "" Then End
End If
End Sub

http://zhidao.baidu.com/question/54270619.html

2012.3.11 VB 字符长度函数

if Len(Text1.Text)>33 Then msgBox"超出"),

 2012.3.9 VB打开指定路径文件夹

Combo3.Text:路径
, vbNormalFocus 使焦点在打开的文件夹上面(弹出到前台)

 

Private Sub OpenSaveFile_Click()
  Dim Path As String
  Path = Combo3.Text
  Shell "explorer " & Path , vbNormalFocus
End Sub

VB打开指定路径文件-EXE

VB打开XP计算器,并把焦点放在上面

Private Sub Calculator_Click()
Shell "c:\windows\system32\calc.exe", vbNormalFocus
End Sub

 

 

 

在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“Microsoft Excel 11.0 object library”项。由于你的Excel版本不同,所以这个选项的版本号也是不同的。

1\ 因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。
    第一层:Application对象,即Excel本身;
    第二层:workbooks对象集,指Excel的工作簿文件;
    第三层:worksheets对象集,表示的是Excel的一个工作表;
    第四层:Cells和Range对象,指向Excel工作表中的单元格。

2\

    新建立一个VB的工程,先放一个button,名称为Excel_Out。先定义好各层:
Dim xlapp As Excel.Application 'Excel对象
Dim xlbook As Excel.Workbook '工作簿
Dim xlsheet As Excel.Worksheet '工作表

 

3\

 我们打算做的是:打开/新建一个excel,在其中对某工作表的一些单元格修改其值,然后另存为test.xls文件。

 

Private Sub Excel_Out_Click()
Dim i, j As Integer
Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
  'Set xlbook = xlapp.Workbooks.Open(App.Path & "\test.xls") '打开已经存在的test.xls工件簿文件
Set xlbook = xlapp.Workbooks.Add '新建EXCEL工件簿文件
'xlbook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏
'xlbook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
xlapp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlsheet = xlbook.Worksheets(1) '设置活动工作表''
                              ''~~~当前工作簿的第一页,这里也可以换成“表名”
'下面就是简单的在一些单元格内写入数字

For i = 7 To 15 
   For j = 1 To 10 
     xlsheet.Cells(i, j) = j   '当前工作簿第一页的第I行第J列
   Next j
Next i


 

With xlsheet      '设置边框为是实线
    .Range(.Cells(7, 1), .Cells(28, 29)).Borders.LineStyle = xlContinuous
End With

'引用当前工作簿的第二页
Set xlsheet = xlapp.Application.Worksheets(2)
     xlsheet.Cells(7, 2) = 2008   '在第二页的第7行第2列写入2008
xlsheet.SaveAs App.Path & "\test.xls"           '按指定文件名存盘
'Set xlbook = xlapp.Application.Workbooks.Add '新建一空白工作簿
xlapp.Quit '结束EXCEL对象'xlapp.Workbooks.Close
Set xlapp = Nothing '释放xlApp对象
End Sub

这样,我们就可以简单的对excel文件进行操作了。下面再放一些我从网上查到的资料吧,还挺有用的:
      1.创建Excel对象  
    eole=CREATEOBJECT(′Excel.application′)  
    2.添加新工作簿  
    eole.Workbooks.add  
    3.设置第3个工作表为激活工作表  
    eole.Worksheets(〃sheet3〃).Activate  
    4.打开指定工作簿  
    eole.Workbooks.Open(〃c:\temp\ll.xls〃)  
    5.显示Excel窗口  
    eole.visible= true  
    6.更改Excel标题栏  
    eole.Caption=〃VB应用程序调用Microsoft   Excel〃  
    7.给单元格赋值  
    eole.cells(1,4).value=XM(XM为数据库字段名)  
    8.设置指定列的宽度(单位:字符个数)  
    eole.ActiveSheet.Columns(1).ColumnWidth=5  
    9.设置指定行的高度(单位:磅)  
    eole.ActiveSheet.Rows(1).RowHeight=1/0.035  
    (设定行高为1厘米,1磅=0.035厘米)  


2012.3.6 打开和关闭EXCEL

Private Sub OpenExcel_Click()
'Dim xls As New EXCEL.Application   '声明一个Excel应用程序对象
'Dim xbook As New EXCEL.Workbook    '声明一个Excel工作薄对象
'Dim xsheet As New EXCEL.Worksheet  '声明一个Excel工作表象

'Private Sub Command1_Click()
       ' Set xbook = xls.Workbooks.Add '启动Excel,并将自动创建的工作薄赋给xbook
        'Set xsheet = xbook.Worksheets(1)  '将第一个工作表赋给xsheet
       ' xls.Visible = True      '显示Excel窗口,程序调试阶段显示该窗口非常重要
'End Sub

 

  dialog.Show
  Me.Hide

End Sub

 

 

Private Sub CloseExcel_Click()
    xls.Quit
        Set xls = Nothing        '释放对象变量
        Set xbook = Nothing
        Set xsheet = Nothing

End Sub

 

2012.3.6  CommonDialog的使用

VB问个简单的问题CommonDialog如何使用?

1.通过CommonDialog1开打一个文件,如何获取这个文件的地址,并保存于C:盘根目录下C:\1.ini这个文件中!代码如何写?
2.创建了一个textbox1,如何通过CommonDialog1,的另存为功能,来另存textbox1里面输入的地址,谢谢诶....
我来帮他解答
 
1,
Private Sub Command1_Click()
CommonDialog1.ShowOpen
Open "C:\1.ini" For Output As #1
Write #1, CommonDialog1.FileName
Close #1
End Sub

2,
Private Sub Command1_Click()
CommonDialog1.Filter = "文本文件(*.txt)|*.txt"
CommonDialog1.ShowSave
Open CommonDialog1.FileName For Output As #1
Write #1, Text1.Text
Close #1
End Sub

 

2012.3.4   sleep(1000)提示“子程序或函数未定义”

因为不是一个VB的内部函数,所以需要在使用前申明一下:

Declare   Sub   Sleep   Lib   "kernel32 "   (ByVal   dwMilliseconds   As   Long)

让VB知道这个函数是在哪里的.
如果是只在本窗体中定义和使用可以用
Private   Declare   Sub   Sleep   Lib   "kernel32 "   (ByVal   dwMilliseconds   As   Long)

如果是在模块中申明,并且所有窗体都可以使用:
Public   Declare   Sub   Sleep   Lib   "kernel32 "   (ByVal   dwMilliseconds   As   Long)


使用的时候和VB内部函数一样:
Sleep   1000     '程序停止1秒

VB 延时程序

 

Declare   Sub   Sleep   Lib   "kernel32 "   (ByVal   dwMilliseconds   As   Long)
去掉public应该可以,如果为了延时最好用下面方法
Public   Function   Delay(Mins%,   Secs%,   Optional   ByRef   StopFlag)   As   Long
        Dim   EndOfDelay
        EndOfDelay   =   DateAdd( "s ",   Mins,   Now)
        'EndOfDelay   =   DateAdd( "s ",   Secs,   EndOfDelay)
        Delay   =   0
        Do   While   (Now   <   EndOfDelay)
                DoEvents
                If   Not   IsMissing(StopFlag)   Then
                        'If   StopFlag   Then
                        '         Delay   =   1
                        '         StopFlag   =   False
                        '         Exit   Do
                        'End   If
                End   If
        Loop
End   Function
根据实际情况修改,我就是这么做的,很好用

 

 

 2012.3.3

On Error GoTo 0
表示禁止当前过程中任何已启动的错误处理程序。

On Error GoTo label
也就是出现错误跳转至指定标签label处执行语句(可以为空语句)
On Error resume
出现错误紧接着出现错误的下一句继续执行.
On Erroro GoTo line
出现错误跳转到指定行

On Error GoTo 0
表示禁止当前过程中任何已启动的错误处理程序。

On Error Resume Next
说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。

On Error GoTo line
启动错误处理程序,且该例程从必要的 line 参数中指定的 line 开始。line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到 line,激活错误处理程序。指定的 line 必须在一个过程中,这个过程与 On Error 语句相同; 否则会发生编译时间错误。

Exit for 意思是退出当前语句所在的for循环;

Exit sub 是退出当前语句所在的“过程”模块;

Ext function 是退出当前语句所在的函数模块。

 

for循环、(sub)过程、(function)函数的主要区别是:

for循环是vb的流程控制语句;不独立作为模块存在,是模块、函数中的一个处理流程控制;

sub是VB的“过程”,每个过程都有一个特定标识;创建了一个过程后,即可在VB的语句中调用它,从而实现代码复用的目的。

function是VB的“函数”,主要功能和sub过程一样;不同的是,function可以返回一些参数,从而方便加入到表达式中;过程只是处理,不返回任何值。

 

posted on 2022-10-04 01:31  bdy  阅读(264)  评论(0编辑  收藏  举报

导航