谁有用VB读取查询EXCEL文件的方法

cnli 2003-08-20 06:52:43
要用VB读取EXCEL文件,文件只有一个Sheet,我要对其中的每一个Cell内容进行逐个分析,但是里面有很多Cell是合并的过的,因此我无法用Worksheets(1).Cells(i,j)或.Range("A1")的方法来确定每一个Cell的位置,我该如何来编写。还有可以在EXCEL中给每个Cell起个名字,我在程序中如何判断EXCEL中是否存在有某个指定名字的Cell。最好能有详细些的代码。盼回答,谢谢大家。
...全文
350 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingnup 2003-08-29
  • 打赏
  • 举报
回复
set rng=sheet1.range("c9").mergearea
i=rng.Rows.Count
j=rng.columns.count
for m=1 to i
for n=1 to j
str1=str1 & rng.cells(m,n).text
next
next
xingnup 2003-08-29
  • 打赏
  • 举报
回复
合并单元格也可以象普通选区一样循环访问,只是单元格的值只有左上角那个单元格有效.
例如有一个合并区域:C9:D12
for id
cnli 2003-08-23
  • 打赏
  • 举报
回复
谢谢,只是这段代码没有解决我说的问题啊
txlicenhe 2003-08-23
  • 打赏
  • 举报
回复
如下,一个将Grid的资料导出到excel的例子。
Public Sub ToExcel(mGrid As TDBGrid)
Dim ColCount, i, k As Integer
Dim xlApp As New Excel.Application, xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet, sRange As String

ColCount = mGrid.Columns.Count

xlApp.visible = False
MdifrmMain.DlgMain.ShowSave
If MdifrmMain.DlgMain.FileName = "" Then Exit Sub
If Dir$(MdifrmMain.DlgMain.FileName) <> "" Then
Kill MdifrmMain.DlgMain.FileName
End If
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(3)
xlSheet.visible = xlSheetHidden
Set xlSheet = xlBook.Worksheets(2)
xlSheet.visible = xlSheetHidden
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Name = "资料"
VB.Screen.MousePointer = vbHourglass
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(1, ColCount)).Merge
xlSheet.Range(xlSheet.Cells(2, 1), xlSheet.Cells(2, ColCount)).Font.Size = 10


For i = 0 To ColCount - 1
xlSheet.Columns(i + 1).ColumnWidth = mGrid.Columns(i).Width / 120
If mGrid.Columns(i).visible = True Then
xlSheet.Cells(2, i + 1) = mGrid.Columns(i).Caption
End If
Next

mGrid.MoveFirst
i = 0
While Not mGrid.EOF
xlSheet.Range(xlSheet.Cells(i + 3, 1), xlSheet.Cells(i + 3, ColCount)).Font.Size = 10
For k = 0 To ColCount - 1
If Not IsNull(mGrid.Columns(k).Value) Then
If mGrid.Columns(k).visible = True Then
xlSheet.Cells(i + 3, k + 1) = CStr(mGrid.Columns(k).Value)
End If
End If
Next
mGrid.MoveNext
i = i + 1
Wend

xlBook.SaveAs MdifrmMain.DlgMain.FileName
xlBook.Close False
xlApp.Quit
Set xlApp = Nothing
VB.Screen.MousePointer = vbDefault
MsgForInfo "数据导出完毕!"
End Sub
cnli 2003-08-23
  • 打赏
  • 举报
回复
如果不存在合并单元格的话,我访问每一个Cell可以走循环
for i=1 to 10
for j=1 to 10
s=sheet.Cells(i, j)
next j
next i
但如果存在合并单元格的话,就不能这样访问了。
xingnup 2003-08-22
  • 打赏
  • 举报
回复
你是问如何使用合并了的单元格吗?好象跟普通单元格一样使用即可.我不太清楚你的问题,你具体说一下想如何做吧.
cnli 2003-08-21
  • 打赏
  • 举报
回复
没有人知道吗,怎样按顺序访问那些合并了的单元格啊。
cnli 2003-08-21
  • 打赏
  • 举报
回复
谢谢,访问那些合并了的单元格要怎么办啊
xingnup 2003-08-21
  • 打赏
  • 举报
回复
判断EXCEL中是否存在有某个指定名字的Cell:
Sub FindTheName(strName As String)
Dim rng As Range

For i = 1 To ActiveWorkbook.Names.Count
If UCase(ActiveWorkbook.Names(i).Name) = UCase(strName) Then
Set rng = ActiveWorkbook.Names(strName).RefersToRange
MsgBox "找到名字为" & strName & "的区域,位置为" & rng.Address
Exit For
End If
Next
Set rng = Nothing
End Sub

2,463

社区成员

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

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