目录
1.2 用VBA读写本工作簿workbook里的特定sheet的特定内容
1.3 用VBA读写本工作簿workbook里的所有sheet的内容
application(EXCEL/WORD/ppt) ----workbook-----worksheets-----worksheet-----range()/cell()/rows()/columns()

dim sh as object
set sh=thisworkbook.activesheet
或者
dim sh as worksheet
set sh=thisworkbook.worksheets("")
-
- Sub test301()
-
- Dim sh As Object
-
-
- For Each sh In ThisWorkbook.Worksheets
- Debug.Print sh.Name
- Next
-
- For i = 1 To ThisWorkbook.Worksheets.Count
- Debug.Print ThisWorkbook.Worksheets(i).Name
- Next
-
-
- End Sub
注意不同的表示方法的细微差别
注意不同的表示方法的细微差别
- sheet.cells(i,j)
- sheet.range("a1:c5")
- sheet.rows(5)
- sheet.usedrange()
- 比如
- Dim path1 As Object (或者worksheet)
- Set path1 = ThisWorkbook.Worksheets("now")
- 'VBA对单个sheet处理
- '特殊点:处理本EXCEL文件,因为开着VBE,VBA属于本文件,所以本EXCEL表比然是打开的
- Sub print2001()
-
- Dim path1 As Object
- Set path1 = ThisWorkbook.Worksheets("now")
-
- '读指定sheet里特定内容
- Debug.Print path1.Cells(1, 1)
-
- '往wb的指定sheet写入内容
- '查下path1当前最大行
- maxr = path1.Cells(9999, 1).End(xlUp).Row
- path1.Cells(maxr + 1, 1) = 100
- path1.Cells(maxr + 1, 2) = 101
- path1.Cells(maxr + 1, 3) = 102
- path1.Cells(maxr + 1, 4) = 103
-
- End Sub
- '注意VBA里数组的1to4 和1,4完全不同,后者是2维数组
- 'VBA处理一个wb里的多个sheet处理
- Sub print2002()
-
- Dim path1 As Object
- Dim wb As Object
- Dim sht As Object
-
- For Each sht In ThisWorkbook.Worksheets
- Debug.Print "sheetName=" & sht.Name
-
- maxr = sht.Cells(9999, 1).End(xlUp).Row
- maxl = sht.Cells(1, 9999).End(xlToLeft).Column
- Debug.Print "现有内容的最大行数=" & maxr
- Debug.Print "现有内容的最大列数=" & maxl
-
- '因为表很大,数据散布在全表的不同格子里,尝查找限定范围内的内容
- '显示指定区域的内容
- arr1 = sht.Range("a1:d10")
- For i = LBound(arr1, 1) To UBound(arr1, 1)
- For j = LBound(arr1, 2) To UBound(arr1, 2)
- Debug.Print arr1(i, j),
- Next
- Debug.Print
- Next
-
- '显示表里用过的内容
- arr2 = sht.UsedRange
- For i = LBound(arr2, 1) To UBound(arr2, 1)
- For j = LBound(arr2, 2) To UBound(arr2, 2)
- Debug.Print arr2(i, j),
- Next
- Debug.Print
- Next
- Next
-
- '这里写入
- '往wb的指定sheet写入内容,还是先只追加1行
- '查下path1当前最大行
- For Each sht In ThisWorkbook.Worksheets
- For k = 1 To 4
- sht.Cells(maxr + 1, k) = 99 * k
- Next
- Next
-
- End Sub
需要加载专门的模块---也就是前人造好的轮子,比如这2个:
- import random
- import xlwt
- import openpyxl
-
-
- with open(r"C:\Users\Administrator\Desktop\ppp2.txt",'a') as f:
- f.writelines([str(cup_num)+'\n',str(capacity)+'\n'])
- sss = []
- for cup in state2:
- a = ""
- for w in cup:
- a += str(w)+" "
- sss.append(a+'\n')
- f.writelines(sss)
-
- #wb=xlwt.workbook(r"C:\Users\Administrator\Desktop\water1.xlsx",encoding='utf-8')
- wb=xlwt.Workbook() #wb=xlwt.Workbook必须大写W?
- #指定文件后,指定sheet
- worksheet=wb.add_sheet("sheet1")
- #指定列
- print ("y=",y)
- worksheet.write(y,1,[str(cup_num)+'\n']) #1-x
- worksheet.write(y,2,[str(color_num)+'\n'])
- worksheet.write(y,3,[str(empty_cup)+'\n'])
- worksheet.write(y,4,[str(capacity)+'\n'])
-
- sss = []
- for cup in state2:
- a = ""
- for w in cup:
- a += str(w)+","
- #a=a[:-2]
- sss.append(a+"|"+'\n')
-
-
- worksheet.write(y,5,sss)
-
-
- wb.save(r"C:\Users\Administrator\Desktop\water1.xls") #必须单独写保存语句,而且不能是xlsx xlsm #还不能是打开状态
-
-
- # 末尾多, 多| 空元素之间逗号?
- #存的行数为啥从25,还互相覆盖?
-
-
- #新增输出到excel, 修改格式 ,之后还要读到py里解析
- #新增一次循环生成多个题目
-
- #superquiz
- #eval(superquiz)
- superquiz()
2.2 需要导入的模块
import xlwt
import openpyxl
2.3 基本的语法
用import xlwt
用 import openpyxl
后续不同
分2部分写把