救命,救命,有在VBA代码中处理CSV文件的大侠进来帮帮我,急死了!
我想用VBA写一个宏,在一个新的工作簿中(即下面代码中的wb2)做一个按钮,点击此按钮可以处理一个CSV文件(即下面代码中的wb1),主要是根据改CSV的A列(日期列)来...
我想用VBA写一个宏,在一个新的工作簿中(即下面代码中的wb2)做一个按钮,点击此按钮可以处理一个CSV文件(即下面代码中的wb1),主要是根据改CSV的A列(日期列)来进行某些行的选择性删除,然后再保存,关闭。看起来不是很难,但是我出问题,因为这个CSV文件的A列是一个日期列,操作之前的日期格式是2011/5/1.......2011/5/31。 但是我用宏对它进行行删除操作并保存关闭之后,再打开这个CSV文件,发现A列的日期格式变了,变成5/1/2011.....5/31/2011了。怎么回事啊?有类似经历的朋友没?帮帮忙?
我的VBA代码如下:
private sub A()
dim wb1 as workbook '(csv文件对应的workbook)
dim wb2 as workbook
dim s1 as string '(csv文件A列的日期)
dim s2 as string '(wb1上面输入的日期)
set wb2 = thisworkbook
set wb1 = workbooks.open(filename:="F:\123.csv")
max = wb1.sheet(1).Range("A65536").end(xlup).row
For i = max to 1 step-1
'这里分别给s1和s2赋值
if s2<>s1 then
wb1.sheets(1).Rows(i).select
selection.delete
end if
next
wb1.save
wb1.close
end 展开
我的VBA代码如下:
private sub A()
dim wb1 as workbook '(csv文件对应的workbook)
dim wb2 as workbook
dim s1 as string '(csv文件A列的日期)
dim s2 as string '(wb1上面输入的日期)
set wb2 = thisworkbook
set wb1 = workbooks.open(filename:="F:\123.csv")
max = wb1.sheet(1).Range("A65536").end(xlup).row
For i = max to 1 step-1
'这里分别给s1和s2赋值
if s2<>s1 then
wb1.sheets(1).Rows(i).select
selection.delete
end if
next
wb1.save
wb1.close
end 展开
5个回答
展开全部
把你的指定单元格的内容 放到一个新的Sheet中 并把这个Sheet设置为当前活动的Sheet
然后使用下面的代码
Sub SaveAsCSV()
ActiveSheet.SaveAs "c:\aaaaa.csv", xlCSV
End Sub
比如你原来有3个Sheet 那你可以再创建一个新的Sheet 然后通过VBA把这个Sheet切换到当前活动的状态 然后把原来的某个Sheet中的你想要的那一行内容 复制到新的这个Sheet中 然后用上面的命令 保存掉
然后再把这个新添加的Sheet删除掉
在把焦点切换回原来你停留的Sheet 就可以了 天衣无缝.
展开全部
把那个CSV文件的A列的格式改成你要的就是了,可以手工来,也可以写在代码里,具体的代码可以建个新文件,然后录制个宏,看看宏里面的代码。
追问
哥,你能说详细点不?录制一个宏的代码呀怎么写啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的代码中加一句:Local:=True
这个是excel的一个bug,已经被修复,也可以下载相关补丁,window文章地址:
http://support.microsoft.com/kb/829348
这个是excel的一个bug,已经被修复,也可以下载相关补丁,window文章地址:
http://support.microsoft.com/kb/829348
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
wb1.SaveAs "F:\123.xls"
wb1.Close
另存为xls文件看看
wb1.Close
另存为xls文件看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用F8逐步运行VBA程序看看,你会发现,其实用set wb1 = workbooks.open(filename:="F:\123.csv")这样打开csv后,原来2011/5/1.......2011/5/31已经变成5/1/2011.....5/31/2011了,我也遇到这个问题,也还没解决,请问你解决了吗?求教!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询