VBA从headinfo.csv提取输入复制到c.xls,但是如果headinfo.csv只有一行数据的话,复制不到c.xls

狼二羊 2017-09-19 10:58:40
这是代码
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")


如果headinfo.csv的A这一列下面很多数据,比如A1、A2、A3等等都有数据的话,是可以复制到c.xls这个表里,但是如果headinfo.csv的A这一列只有A1有数据的话,
...全文
1496 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2017-09-21
  • 打赏
  • 举报
回复
引用 14 楼 qq_30519247 的回复:
[quote=引用 13 楼 u014621861 的回复:] 那试下下面一段
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A65536").Rows.END(XLUP).ROW
谢谢大佬!!!!只是应该是Range("A1") 您可能打错了 主要想问一下END(XLUP)和End(xlDown) 有啥区别[/quote] 他写的没错,是65535, 这样能解决大部分情况的问题,只是对于office 2010后单个sheet的行数可以超过65535的有可能不对。 在我这只有1行的情况用你的代码貌似没问题
狼二羊 2017-09-20
  • 打赏
  • 举报
回复
引用 13 楼 u014621861 的回复:
那试下下面一段
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A65536").Rows.END(XLUP).ROW
谢谢大佬!!!!只是应该是Range("A1") 您可能打错了 主要想问一下END(XLUP)和End(xlDown) 有啥区别
独梦尘烟 2017-09-20
  • 打赏
  • 举报
回复
那试下下面一段
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A65536").Rows.END(XLUP).ROW
X-i-n 2017-09-19
  • 打赏
  • 举报
回复
看下结果是多少
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
debug.? strRange
'Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
            Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 楼主 qq_30519247 的回复:
这是代码
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
            Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")
如果headinfo.csv的A这一列下面很多数据,比如A1、A2、A3等等都有数据的话,是可以复制到c.xls这个表里,但是如果headinfo.csv的A这一列只有A1有数据的话
但是如果headinfo.csv的A这一列只有A1有数据的话,这段代码就不好用
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 8 楼 of123 的回复:
[quote=引用 7 楼 qq_30519247 的回复:] [quote=引用 5 楼 of123 的回复:] 你说的这种情况下,m 是什么值?
dim id我获取的打开那两个文件的路径。。[/quote]问你 m 的值呢。如果这个值致使 Range 无效,当然不能执行。 你检查一下,如果 m 值无效,你就调整一下,例如 + 1。[/quote] 我也不知道m是啥 但是m肯定有值 。当A1,A2,A3 往下很多行的时候,这段代码有效,当只有A1有数据的时候,这段代码无效(再简单点就是,多行可以复制,一行不复制不了)
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 9 楼 chewinggum 的回复:
其实就是想知道有多少行,如果你取的A列不是每一行都有数据,就换一个必须有数据的列来做End(xlDown)操作
当A1,A2,A3 往下很多行的时候,这段代码有效,当只有A1有数据的时候,这段代码无效(再简单点就是,多行可以复制,一行不复制不了)
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 9 楼 chewinggum 的回复:
其实就是想知道有多少行,如果你取的A列不是每一行都有数据,就换一个必须有数据的列来做End(xlDown)操作
每行都有值,但是如果就只有A1有数据的话,就辅助不过来
脆皮大雪糕 2017-09-19
  • 打赏
  • 举报
回复
其实就是想知道有多少行,如果你取的A列不是每一行都有数据,就换一个必须有数据的列来做End(xlDown)操作
of123 2017-09-19
  • 打赏
  • 举报
回复
引用 7 楼 qq_30519247 的回复:
[quote=引用 5 楼 of123 的回复:] 你说的这种情况下,m 是什么值?
dim id我获取的打开那两个文件的路径。。[/quote]问你 m 的值呢。如果这个值致使 Range 无效,当然不能执行。 你检查一下,如果 m 值无效,你就调整一下,例如 + 1。
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
你说的这种情况下,m 是什么值?
dim id我获取的打开那两个文件的路径。。
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
你说的这种情况下,m 是什么值?
Dim id As Long
id = InStr(MyTitle, " - ")
Dim p As String
p = Mid(MyTitle, id + 3)
Workbooks.Open p & "wncinfo.xls"
Workbooks.Open p & "headinfo.csv"
Dim strRange As String
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
            Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")
完整的是这样的
of123 2017-09-19
  • 打赏
  • 举报
回复
你说的这种情况下,m 是什么值?
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
看下结果是多少
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
debug.? strRange
'Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
            Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")
还是复制不过去
狼二羊 2017-09-19
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
看下结果是多少
m = Workbooks("headinfo.csv").Sheets("headinfo").Range("A1").Rows.End(xlDown).Row
strRange = "A1:A" & m
debug.? strRange
'Workbooks("headinfo.csv").Sheets("headinfo").Range(strRange).Copy _
            Workbooks("WNCWorkSheet1").Sheets("程式单").Range("C5")
啥意思....什么结果
# encoding: UTF-8 用的字体: 英文: serif: Times New Roman PS Std sans-serif: Mosquito Formal Std monospace: Lucida Sans Typewriter Std 中文: 宋体:Adobe Song Std 黑体:Adobe Heiti Std 楷体:Adobe Kaiti Std 可从我的网盘下载: http://dl.getdropbox.com/u/857066/xmuthesis2_otf.7z Linux下将解压出的OTF目录放到/usr/share/fonts下,或~/.fonts下,运行 fc-cache即可。 Windows下把字体文件拖到 c:\WINDOWS\Fonts下,安装即可。 文件作用: main.tex 是模板的正文,author.tex是作者的信息,abstracts目录下放的是 中英文摘要,chapters下放的是各章节及发表的论文和致谢,figrues目录下 放的是图形,config目录下是模板的设置文件 reference目录下放的是BibTeX 的文献数据库;a3cover目录下放的是生成A3封面的tex文件, submmit_abstracts目录下放的是生成论文提交时用的单页中英文摘要。 使用步骤: 1. 确保系统中安装的几个opentype字体,当然可以自己选用其他字体,字体的 设置在 config/headinfo.tex中,有中英文两部分。 2. 在author.tex中写入你的个人信息; 3. 在chapters目录下更新或增加需要的章节、发表的文章、致谢等;在写的 同时在reference.bib中添加相应的参考文献信息。 4. 生成pdf文件: xelatex main bibtex main xelatex main xelatex main 模板下载: 压缩包: http://dl.getdropbox.com/u/857066/xmuthesis2.tar.7z Git: git clone git://210.34.218.248/xmuthesis2.git
文件管理 一、实验目的: 1.了解os中文件的组织和管理。 2.熟悉文件中所用的数据结构。 二、实验要求: 1. 设计一个N个用户的文件系统,每个用户最多保存m个文件。 2. 限制用户在一次使用中只能打开L个文件。 3. 系统应能检查输入命令的正确性,出错能显示出原因。 4. 对文件必须设置保护措施,如只读、写、执行等。在每次打开时再次设置保护级别,即 可有二级保护。 5. 对文件的操作至少有以下几条命令 create:建文件 delete:删文件 open:打开文件 close:关闭文件 read:读文件 write:写文件 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..L] of ufd; ofiles :arrau[1..S] of uod end; 用户打开文件目录表: uod=record filename:string[maxlen]; attrib:attrib; len:integer; status:(open,create); rp,up:integer; end; 用户文件目录: ufd=record fielname:string[maxlen]; attribΛro,rw); len:integer; addr:integer; end; 流程图: 开始 输入用户名 在MFD中找到该用户名 显示该用户名UFD中所有文件 初始化AFD 操作 命令 CREATE DELTET OPEN CLOSE READ WRITE 保护当前文件目录 结束 二、主要数据结构 界面采用VC6 MFC环境开发 #define MAXFILE 20 //每个用户最多保存20个文件 #define MAXUSER 10 //假想文件系统最多支持的人数 #define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节 #define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32K struct UFD //说明文件项的结构数组 { char FileName[15]; char Time[16]; //文件建立或修改时间 如2003/5/6 12:00 bool IsExist; //文件是否存在,删除时标为0 bool IsShared; //共享标记,共享文件可被其它用户所访问 bool AttrRead; //文件是否可读 bool AttrWrite; //文件是否可写 bool AttrExecute; //文件是否可执行 HTREEITEM treeNode; //用于树控件显示的结点句柄 USHORT FileLen; //文件占用字节数 USHORT BlockNum; //文件占用的物理块数 USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字 节 }; struct MFD { char UserName[10]; //主目录用户名 bool IsExist; //该用户否存在 UFD ufd[MAXFILE]; //用户文件数组 USHORT nItem;//UFD个数 }; struct HEADBLOCK { BYTE pStack; //堆栈指针 SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址 }; struct BLOCK //虚拟磁盘的物理块数据结构 { union{ BYTE block[32];        //一块为32字节 HEADBLOCK HeadInfo; }; }; struct FAT { BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号 USHORT MaxOpen; //该用户同时可打开的最大文件数 USHORT UserNum; //最户数 MFD Mfd[MAXUSER]; //最多可支持10个用户 }; //空闲块成组链接法 bool OpenList[MAXUSER][MAXFILE]; //描述文件是否打开的布尔型数组 FAT FileFAT;           //描述文件记录项的FAT结构 CFile FATIO; //负责和VDISK.DAT打交道的文件句柄 CString CurrentUser; //当前登录的用户名 Int CurrentID; //前前登录的用户标识号 说明:本实验采用模拟文件结构的方法,把记录用户帐号,用户文件和磁盘块的信息 用当前目录下的VDISK.DAT来记录,可以把VDISK.DAT看成是一个虚拟的磁盘,其头部是 FAT结构,用来记录各个用户和文件信息,紧接着是空闲

2,463

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧