VBA取行列数,运行CMD,数组,VBA写文件相关

备忘用:

  1、VBA取行列数:

      例如要取第二行使用了多少列:Cells(2, Columns.Count).End(xlToLeft).Column:解释:主要是End方法,VBA中如下阐述:返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。意思就是说取到选择区域的最后一个单元格。

   如果你需要取到sheet页内使用到的最大行和列,可以如下使用:    nRow = ActiveSheet.UsedRange.Rows.Count    nCol = ActiveSheet.UsedRange.Columns.Count

  2、VBA运行CMD:固定写法

     Set objshell = CreateObject("wscript.shell")
        ‘ CMD需要在当前文件夹下执行
        Dim path As String
        path = ThisWorkbook.path
        Set DosExec = objshell.Exec("cmd.exe /c " & "sqlldr " & strDBInfo & " control=" & path & "\result.ctl")
        Set DosExec = Nothing
        Set objshell = Nothing
   此处添加path,是因为SQLLOADER在执行时需要找到此文件。

  3、数组

  整体来说VBA的数据很奇葩。 声明数组:Dim arr() as String,这个是一个无法一个一个赋值的数据,也可以声明定长的数据:Dim arr(1 To 3) as String,但是在程序中往往数组的大小是根据某一个值来确定的,但是却无法像如下声明:Dim arr(1 To intValue)(intValue为整数),你需要ReDim,才可以、ReDim strRtn(1 To usedNum)(建议不从1开始,从0开始,否则容易会造成混乱)      如果ReDim时,需要保留之前的值,请添加参数:Preserve。ReDim Preserve a(5) As String

  并且方法如果返回值是一个数据,则应该这样:Public Function getTableData() As String()

  4、VBA写文件相关

    1)使用Scripting.FileSystemObject

      a、简单的写入文件:以下的True参数表示:如果文件不存在,则新建,否则覆盖。如果为False,则只能新建,如果存在,则报错。

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("c:\testfile.txt", True)
    a.WriteLine("This is a test.")
    a.Close  set fs = Nothing  set a = Nothing

      b、简单的读(写)文件方法:使用File类 :有了Set fs = CreateObject("Scripting.FileSystemObject")类之后,可以通过fs.GetFile(FileName)来获取File对象

      File对象可以得到文件的各种信息,以及文件的delete,copy,move方法。最常用的方法为:OpenAsTextStream

此方法可以写入也可以按照行来读取文件,很好用:

Sub TextStreamTest
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CreateTextFile "test1.txt"            ‘创建一个文件
    Set f = fs.GetFile("test1.txt")
    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
    ts.Write "Hello World"
    ts.Close
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    s = ts.ReadLine
    MsgBox s
    ts.Close
End Sub

      判断文件是否读取完成:

    Do While Not ts.AtEndOfStream
        s = ts.ReadLineLoop

  2)经典的Open 语句 参考:http://blog.sina.com.cn/s/blog_715070f20100w914.html

    几个例子:

      Write方法使用,其必须配合逗号","一起使用

Open "F:\test.txt" For Append As #1         ‘ 打开输出文件。
    Write #1, "huo", tui, "chang"
    Write #1, 233234,
    Write #1, "huo", chang
    Write #1, "huo",
    Close #1
End Sub

    Print方法的使用,与Write类似,但是不用配合逗号

        print中,逗号会输出N个空格,并且替换掉换行,如果不是逗号结尾,则会换行。

Open "F:\test.txt" For Output As #1         ‘ 打开输出文件。
    Print #1, "huo", "chang"
    Print #1, 233234
    Print #1, "huo", "chang-chang-chang-changchangchangchangchang",
    Print #1, "huo",
    Close #1
End Sub

    Line input方法:

Open "f:\test.txt" For Input As #1

Do While Not EOF(1)       ‘ 循环至文件尾。

    ‘MyChar = input(1, #1)      ‘ 读入一个字符。
    Line Input #1, s

    Debug.Print s      ‘ 显示到立即窗口。

  3)对于Workbooks.Open方法,用的不多,可以参考:http://www.cnblogs.com/top5/archive/2009/10/29/1591937.html

时间: 2024-10-22 00:11:37

VBA取行列数,运行CMD,数组,VBA写文件相关的相关文章

用VBA取得EXCEL有效行列数方法研究

作者:iamlaosong 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 实际使用中发现这种方法存在2个问题: 1.高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576,即 maxrow = sheets(1).[A1048576].End(xlUp).Row 2.当最后一行不为空时,用这个方法取不到正确的值. 下面说明用VBA得到EXCEL表格中的行数和列数的特点,以便根据需要选用 每种方法中上面

Atitit.运行cmd 命令行 php

Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1.4. 回显乱码 2 2. exec,system等函数调用系统命令 2 3. php.ini.关掉安全模式safe_mode = off 3 4. 參考 3 1. 运行cmd 命令行,调用系统命令的基础 1.1. 实际运行模式 Processmonitor 检查.得到.. PID: 115372,

一个站点的诞生03--抓取评论数最多的一万家餐厅

在大众点评网上,有非常多种方式对餐厅进行排序,比方http://www.dianping.com/search/category/1/10/o10,是上海全市依照评论总数最多对餐厅进行排序,以下有50个分页,也就是上海历年累计评论综述最多的750家餐厅.但仅仅有750家,少了点.上海有18个区,逐区点击的话,每区都会显示前750家餐厅,比方这个http://www.dianping.com/search/category/1/10/r802o10,是浦东新区八佰伴地段的前750家.上海如今有十万

Thair数 树状数组

题目: Erwin最近对一种叫"thair"的东西巨感兴趣... 在含有n个整数的序列a1,a2......an中, 三个数被称作"thair"当且仅当i<j<k且ai<aj<ak 求一个序列中"thair"的个数. Input (thair.in) 开始一个正整数n, 以后n个数a1~an. Output (thair.out) "thair"的个数 Sample Input Output 4 2 1

以管理员身份运行cmd

运行cmd和以管理员身份运行cmd是不同的.有时候我们需要使用管理员身份运行cmd才能达到效果. 对于直接运行cmd,即 windows + R ,然后输入cmd, 回车即可运行之. 对于以管理员身份运行cmd, 需要进入c盘--Windows--System32,然后找到cmd.exe,右键选择“以管理员身份运行”即可.

运行cmd时提示你可能没有适当的权限访问该项目

Windows无法访问指定设备.路径或文件.你可能没有适当的权限访问该项目. 方法/步骤 在C:\Windows\System32目录下中找到cmd.exe文件   右键点击 "属性"--->"安全"--> "高级"-->"继续"-->"添加"-->"选择主体"-->输入你现在使用的用户名-->单击检查名称-->确定-->确定--&g

截图工具,更改系统默认快捷键,系统配置实用程序,以管理员身份运行cmd(win7)

截图工具: 开始--附件--右键发送到桌面快捷方式---桌面截图工具右键属性--快捷方式 更改系统默认快捷键: 控制面板--外观和个性化--调整屏幕分辨率--高级设置---英特尔图形和媒体控制面板---图形属性---选项和支持----将快捷键前的启用改为禁用 系统配置实用程序 msconfig  是在开始菜单里运行中输入然后确认就可以找到程序开启或者禁用,它可以帮具你禁止不需要运行的程序 以管理员身份运行cmd: Cmd出现系统错误5,拒绝访问!可能原因:用户的操作权限太低了, 解决:用管理员身

如何解决win7系统无法运行cmd命令提示符

如何解决win7系统无法运行cmd命令提示符 CMD命令可以帮助我们很快的执行所需要的程序命令,可以查询系统中很多的信息和解决系统很多的故障,对我们来说非常方便,但是最近有用户反馈自己win7电脑无法运行cmd命令提示符窗口了,那么接下来就给大家介绍解决win7无法运行cmd命令提示符的方法. 工具/原料 win7系统 Regedit注册表 方法/步骤 在桌面打开开始菜单,选择"控制面板",如下图所示: 在打开的控制面板窗口中,选项"系统",如下图所示: 3.打开的

将以管理员方式运行cmd运行方式放到win7任务栏

首先在桌面空白地方(没有桌面图标位置),点击鼠标右键,选择新建--快捷方式,如下图: 弹出创建快捷方式窗口,输入cmd.exe的路径及文件名,下图是天缘的Windows 7安装到C盘对应的cmd可执行文件地址C:\Windows\System32\cmd.exe,如果是其它驱动器相应修改,设置好点击下一步. 这里设置快捷方式的名称,比如cmd,或者采用默认的也可以,设置完成后,点击完成.如下图: 桌面上会生成一个cmd的快捷方式,如下图,我们再在cmd图标上,点击鼠标右键,选择属性. 如下图,选