Option Explicit
Private Sub cmd1_Click()
Dim xlsxapp As Excel.Application
Dim xlsxbook As Excel.Workbook
Dim xlsxsheet As Excel.Worksheet
Dim sheetname, excelpath As String
Dim rowheight, columnwidth As Single '申明b為單精度
Set xlsxapp = CreateObject("Excel.Application") '創建EXCEL物件
xlsxapp.Visible = False '設定EXCEL物件可見(或不可見)
sheetname = txt3.Text
excelpath = txt4.Text
Debug.Print excelpath
Debug.Print sheetname
Set xlsxbook = xlsxapp.Workbooks.Open(excelpath) '打開已經存在的EXCEL工件簿檔案,打開的excel必須與應用程式一個檔案夾
Set xlsxsheet = xlsxbook.Worksheets(sheetname)
xlsxbook.Worksheets(sheetname).Activate
MsgBox "請選擇需要改變列寬行高的交叉單元格"
If txt1.Text <> "" Then
rowheight = CSng(txt1.Text) '把text1.text的數值轉換為單精度數并賦值給rowheight
rowheight = rowheight * 28.45
xlsxbook.xlsxsheet.Rows(ActiveCell).rowheight = rowheight
End If
If txt2.Text <> "" Then
columnwidth = CSng(txt2.Text)
columnwidth = columnwidth * 83.8 / 1.9
xlsxbook.xlsxsheet.Rows(ActiveCell).columnwidth = columnwidth
End If
Set xlsxbook = Nothing
Set xlsxsheet = Nothing
xlsxapp.Quit
End Sub
Private Sub txt4_Click()
CommonDialog1.Action = 1
CommonDialog1.Filter = "EXCEL(*.xlsx)|(*.xlsx)"
txt4.Text = CommonDialog1.FileName
End Sub
其中總是xlsxbook.xlsxsheet.Rows(ActiveCell).columnwidth = columnwidth這句代碼有錯誤,求指導,新人!
uj5u.com熱心網友回復:
我用表單獲得檔案的路徑名和作業表名稱!vb能不能自動獲得一打開excel表的路徑和激活的作業表名稱?另外,vb與vba語法有哪些不一樣啊!
uj5u.com熱心網友回復:
你的 ActiveCell 沒有賦值吧!看樣子,你的代碼是參考了 Office物件庫的。
參考了之后,寫起來兩者基本上沒區別了。
uj5u.com熱心網友回復:
創建物件,然后用 Excel.Application物件呼叫 .Workbooks.Open( )
第一個引數傳檔案的完整路徑。
檔案在磁盤任意目錄中都可以打開,不一定要放在應用程式的目錄中。
uj5u.com熱心網友回復:
沒有復制?activecell不就是活動單元格的意思嗎?需要復制?創建物件,然后用 Excel.Application物件呼叫 .Workbooks.Open( )
第一個引數傳檔案的完整路徑。
檔案在磁盤任意目錄中都可以打開,不一定要放在應用程式的目錄中。
是啊!我用commondiaog獲取檔案路徑名,再用個字串傳遞檔案路徑名,有更好的方法,求修正代碼?
uj5u.com熱心網友回復:
你要弄清楚: 變數名(識別符號)跟“物件”的區別啊……
xlsxbook.xlsxsheet.Rows(ActiveCell).columnwidth = columnwidth
在這兒, ActiveCell 是變數名,而不是物件。
并且, .Rows( ) 需要的引數也不對是物件。
xlsxbook.xlsxsheet.Rows( ) 的“回傳結果”才是一個 物件(參考)!
你打開作業簿的方法,在一般情況下,基本上就是那樣用了,也談不上什么“更好的方法”。
順便說下的是,你的 Private Sub txt4_Click() 內的陳述句,第1行與第2行要互換一下位置。
要不然,你目前的第2行就是多余的了。
uj5u.com熱心網友回復:
我只是看到你的注釋中寫著“打開已經存在的EXCEL工件簿檔案,打開的excel必須與應用程式一個檔案夾”才跟你說一下, .Open( )那兒傳檔案的完整路徑,隨便放哪都行,不用“必須與應用程式一個檔案夾”。
uj5u.com熱心網友回復:
可能是以下幾方面的問題:
1、既然已經對xlsxsheet賦值了,就不要用“定語”了。直接使用xlsxsheet.rows(....)
2、Rows方法與columnwidth不匹配。Row==>Rowheight Columns==>columnwidth
3、如果代碼不是在excel環境中,應該是不能直接使用ActiveCell的,而應該是xlsxapp.ActiveCell
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/139701.html
標籤:VBA
上一篇:VB后臺PostMessage和SendMessage 老蝦救急
下一篇:VB6呼叫DLL問題
