當前位置:首頁 » 編程軟體 » excel腳本教程

excel腳本教程

發布時間: 2023-03-23 07:47:28

『壹』 怎樣在Excel中使用python腳本

怎麼在Excel中運行python腳本?這個問題由來已久,很多pythoner都希望直接用python控制Excel,但是只能從外部調用,有沒有一個VBA的東西可以直接在Excel中運行呢?答案是有,DataNitro就是這悄如橋么一個東西,看看下面橡輪Excel中的界面,他就是了,可以直接點擊『run'來運行一個Python腳本。下面我們來看看它是如何安裝與配置的。
先安裝python2.7,其他版本不知道行不行,但是這個肯定行,然後配置環境變數,保證python在該環境中,打開開始菜單,找到計算機,然後右鍵單擊它,選擇【屬性】
找到高級系統設置
找到環境變數,點擊該按鈕,打開環境變數設置窗口
找到Path系統變數,然後點擊【編輯】
在這里,確保python的安裝目錄在,沒有的話,添加進去
下面就可以安裝該插件了,去官網下載啟猛一個;或者網路一下,各大下載網站都有
雙擊即可安裝,安裝過程就是一路點擊』下一步,不過有一步需要注意
在這里,不要勾選python,如果通過這種方式安裝python,你原先安裝的python就無法使用了
最後安裝完成,打開Excel就可以看到datanitro了

『貳』 在excel中如果該行沒有值則隱藏在腳本中如何實現

在Excel中如掘虛激果該行沒有值則隱藏,建議方法如下:

  1. 依次單擊「開發工具」選項卡-「錄制宏」;
  2. 依次單擊「開始」選項卡譽弊-「篩選」;
  3. 篩選某一列不為空的,再按Alt+F11組合鍵進入VBA編輯調整部分判襪代碼。

『叄』 如何用EXCEL的VBA腳本編寫程序刪除空行和空列

這段VBA代碼的作用是刪除Excel工作簿中所有工作表中的空行和空列。代碼包含了三個子過程:

  • Sub 刪除所有空行和空列()
    這個子過程首先遍歷工作簿中的每一個工作表。對於每一個工作表,它執行以下操作:

  • 取消合並單元格,以便在刪除空行和空列時不會留下空白的單元格。

  • 調用 DeleteEmptyRows 子過程,刪除所有空行。

  • 調用 DeleteEmptyColumns 子過程,刪除所有空列。

  • 自動調整行高和列寬,以適應數據。

  • Sub DeleteEmptyRows()
    這個子過程用於刪除工作表中的空行。它首先確定最後一行的行號,然後從最後一行卜橡開始向上遍歷,逐行檢查該行是否為空行。如果該行為空行,則刪除該行。通過使用 CountA 函數來確定行中是否存在任何非空單元格。

  • Sub DeleteEmptyColumns()
    這個子過程用於刪除液嫌工作表中的空列鬧弊手。它首先確定最後一列的列號,然後從最後一列開始向左遍歷,逐列檢查該列是否為空列。如果該列為空列,則刪除該列。也是通過使用 CountA 函數來確定列中是否存在任何非空單元格。

  • 需要注意的是,由於該代碼對每個工作表都進行了操作,如果工作簿中有大量工作表或者數據量很大,可能會影響代碼的執行效率。

『肆』 如何用EXCEL的VBA腳本編寫程序求和

按alt+f11進vba編輯,雙擊thisworkbook,貼上芹納陪以下代嫌蠢碼
Option Explicit
Sub color()

Dim isnum As Boolean
Dim c, r, i, j As Integer
i = 1
j = 1
' 循環選擇的每一行。
For r = 1 To Selection.Rows.Count
' 循環選擇的每一列。
For c = 2 To Selection.Columns.Count

If Selection.Cells(r, c).Text = Selection.Cells(r, c - 1).Text Then

i = i + 1

Else

Cells(Selection.Cells(r, c).Row, Selection.Columns.Count + j).Value = i

i = 1

j = j + 1

End If

'
Selection.Cells(r, c).Interior.ColorIndex = ci
Next c
Cells(Selection.Cells(r, c).Row, Selection.Columns.Count + j).Value = i
i = 1
j = 1
Next r

End Sub

關閉vba後,選中數值茄含范圍,按Alt+f8執行宏

『伍』 在excel中怎麼插入腳本

添加一個BUTTON,在其上點擊右鍵,倒數第三個選項,就可以編寫他的CLICK等腳本事件

『陸』 如何用EXCEL的VBA腳本編寫程序刪除空行和空列

方法是:選擇包含需要刪除的數據區域,比如a2:d10,然後按f5鍵,打開「定位」對話框,單擊「定位條件」,打開「定位條件」對話框,選擇「空值」,可以批量選擇空行,然後單擊右鍵,選擇刪除即可。
excel批量刪除空行方法二:
我們可以在旁邊的空白列輸入1,然後下拉,作為輔助列。然後開啟「篩選」,篩選「空白」,在篩選狀態刪除這些空白行,最後關閉篩選。
excel批量刪除空行方法三:
如果工作表中有大量的空行,可以使用vba代碼實現。方法是:按alt+f11,打開vbe編輯器,插入——模塊,復制下面的代碼,然後按f5鍵運行。
sub
批量刪除空行()
dim
lastrow
as
long
dim
r
as
long
lastrow
=
activesheet.usedrange.row
-
1
+
activesheet.usedrange.rows.count
application.screenupdating
=
false
for
r
=
lastrow
to
1
step
-1
if
application.worksheetfunction.counta(rows(r))
=
0
then
rows(r).delete
next
r
application.screenupdating
=
true
end
sub

『柒』 怎樣在Excel中使用python腳本

一、讀excel表
讀excel要用到xlrd模塊,官網安裝(http://pypi.python.org/pypi/xlrd)。然後就可以跟著裡面的例子稍微試一下就知道怎麼用了。大概的流程是這樣的:
1、導入模塊

復制代碼代碼如下:
import xlrd

2、打開Excel文件讀取數據

復制代碼代碼如下:
data = xlrd.open_workbook('excel.xls')

3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取
② table = data.sheet_by_index(0) #通過索引順序獲取
③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)

復制代碼代碼如下:
table.row_values(i)
table.col_values(i)

5、獲取行數和列數

復制代碼代碼如下:
table.nrows
table.ncols

6、獲取單元格

復制代碼代碼如下:
table.cell(0,0).value
table.cell(2,3).value

就我自己使用的時候覺得還是獲取cell最有用,這就相當於是給了你一個二維數組,餘下你就可以想怎麼干就怎麼幹了。得益於這個十分好用的庫代碼很是簡潔。但是還是有若干坑的存在導致話了一定時間探索。現在列出來供後人參考吧:

1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好
2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,官網下載(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、導入模塊

復制代碼代碼如下:
import xlwt

2、創建workbook(其實就是excel,後來保存一下就行)

復制代碼代碼如下:
workbook = xlwt.Workbook(encoding = 'ascii')

3、創建表

復制代碼代碼如下:
worksheet = workbook.add_sheet('My Worksheet')

4、往單元格內寫入內容

復制代碼代碼如下:
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')

5、保存

復制代碼代碼如下:
workbook.save('Excel_Workbook.xls')

由於我的需求比較簡單,所以這上面沒遇到什麼問題,唯一的就是建議還是用ascii編碼,不然可能會有一些詭異的現象。

當然xlwt功能遠遠不止這些,他甚至可以設置各種樣式之類的。附上一點例子

復制代碼代碼如下:

Examples Generating Excel Documents Using Python's xlwt

Here are some simple examples using Python's xlwt library to dynamically generate Excel documents.
Please note a useful alternative may be ezodf, which allows you to generate ODS (Open Document Spreadsheet) files for LibreOffice / OpenOffice. You can check them out at:http://packages.python.org/ezodf/index.html
The Simplest Example
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
workbook.save('Excel_Workbook.xls')
Formatting the Contents of a Cell
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
font = xlwt.Font() # Create the Font
font.name = 'Times New Roman'
font.bold = True
font.underline = True
font.italic = True
style = xlwt.XFStyle() # Create the Style
style.font = font # Apply the Font to the Style
worksheet.write(0, 0, label = 'Unformatted value')
worksheet.write(1, 0, label = 'Formatted value', style) # Apply the Style to the Cell
workbook.save('Excel_Workbook.xls')
Attributes of the Font Object
font.bold = True # May be: True, False
font.italic = True # May be: True, False
font.struck_out = True # May be: True, False
font.underline = xlwt.Font.UNDERLINE_SINGLE # May be: UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT # May be: ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT
font.family = xlwt.Font.FAMILY_ROMAN # May be: FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE
font.charset = xlwt.Font.CHARSET_ANSI_LATIN # May be: CHARSET_ANSI_LATIN, CHARSET_SYS_DEFAULT, CHARSET_SYMBOL, CHARSET_APPLE_ROMAN, CHARSET_ANSI_JAP_SHIFT_JIS, CHARSET_ANSI_KOR_HANGUL, CHARSET_ANSI_KOR_JOHAB, CHARSET_ANSI_CHINESE_GBK, CHARSET_ANSI_CHINESE_BIG5, CHARSET_ANSI_GREEK, CHARSET_ANSI_TURKISH, CHARSET_ANSI_VIETNAMESE, CHARSET_ANSI_HEBREW, CHARSET_ANSI_ARABIC, CHARSET_ANSI_BALTIC, CHARSET_ANSI_CYRILLIC, CHARSET_ANSI_THAI, CHARSET_ANSI_LATIN_II, CHARSET_OEM_LATIN_I
font.colour_index = ?
font.get_biff_record = ?
font.height = 0x00C8 # C8 in Hex (in decimal) = 10 points in height.
font.name = ?
font.outline = ?
font.shadow = ?
Setting the Width of a Cell
import xltw
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 'My Cell Contents')
worksheet.col(0).width = 3333 # 3333 = 1" (one inch).
workbook.save('Excel_Workbook.xls')
Entering a Date into a Cell
import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')
Adding a Formula to a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 5) # Outputs 5
worksheet.write(0, 1, 2) # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])
workbook.save('Excel_Workbook.xls')
Adding a Hyperlink to a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) # Outputs the text "Google" linking to http://www.google.com
workbook.save('Excel_Workbook.xls')
Merging Columns and Rows
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write_merge(0, 0, 0, 3, 'First Merge') # Merges row 0's columns 0 through 3.
font = xlwt.Font() # Create Font
font.bold = True # Set font to Bold
style = xlwt.XFStyle() # Create Style
style.font = font # Add Bold Font to Style
worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # Merges row 1 through 2's columns 0 through 3.
workbook.save('Excel_Workbook.xls')
Setting the Alignment for the Contents of a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
alignment = xlwt.Alignment() # Create Alignment
alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style = xlwt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
Adding Borders to a Cell
# Please note: While I was able to find these constants within the source code, on my system (using LibreOffice,) I was only presented with a solid line, varying from thin to thick; no dotted or dashed lines.
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
borders = xlwt.Borders() # Create Borders
borders.left = xlwt.Borders.DASHED # May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle() # Create Style
style.borders = borders # Add Borders to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
Setting the Background Color of a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
pattern = xlwt.Pattern() # Create the Pattern
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
TODO: Things Left to Document
- Panes -- separate views which are always in view
- Border Colors (documented above, but not taking effect as it should)
- Border Widths (document above, but not working as expected)
- Protection
- Row Styles
- Zoom / Manification
- WS Props?
Source Code for reference available at: https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/

『捌』 怎麼製作excel按鍵精靈腳本

方法/步驟

1
首先來建立一個新的Excel文檔,在桌面上點擊右鍵,選擇【新建】-【Excel工作表】,命名為【新手學員】。

2
現在這個新Excel文檔是空白的,我們接下來會通過按鍵精靈的腳本來打開並寫入一些數據。

3
打開按鍵精靈軟體,點擊【新建】,進入我的腳本界面,再點擊進入【全部命令】。

在【全部命令】中選擇【插件命令】-【office辦公文檔插件】-【打開Excel文檔】。

在命令的下面可以看到命令的詳細設置,點擊【路徑】。

在彈出窗口中選擇【新手學員】的Excel文檔,點擊打開。

可以在命令參數中看到引用的文檔,點擊插入就可以插入對應的命令腳本。

繼續在文檔中寫入新的數據,選擇命令【writeXls 寫入Excel文檔單元格】,選擇對應的單元格的行和列,輸入要寫入單元格的內容【"序號"】,點擊插入。

在腳本界面可以看到新插入的代碼。

根據類似的格式,可以添加其它代碼,一共寫入3行4列的單元格內容。

最後選擇【closeXls 關閉文檔】,點擊插入對應的代碼。

修改腳本屬性的描述和保存的腳本文件名。保存腳本後按【F10】進行腳本調試。

腳本執行完成後,再次打開這個Excel文檔,可以看到剛才設置的數據已經成功寫入了。

『玖』 excel中VBA有哪些作用哪裡有教程啊

分類: 電腦/網路 >> 軟體
解析:

闡述了當前自動化軟體的技術特點和發展趨勢,並介紹了在iFIX自動化軟體中使用VBA訪問歷史和實時數據的機制。通過一段使用VBA語言編寫的程序,實現向Excel輸出歷史數據,生成歷史報表的實例,說明了VBA語言在自動化軟體中的應用。

1、自動化軟體的發展趨勢

自動化軟體主要是指那些為用戶提供人機操作界面(HMI)的開發和運行環境的軟體,有些軟體還能夠提供迴路控制功能,用戶可以實現基於PC的控制方案。自動化軟體應當具備如下的主要功能及特徵:工業過程的動態可視化;數據採集和管理;過程監控和報警;報表和操作記錄功能;系統安全等級化管理;為其他企業級程序提供實時和歷史數據;簡單的迴路調節;批量控制等。

近年來,隨著計算機和網路技術的發展與應用,自動化軟體的發展也呈現如下的發展趨勢。

1.1 開放和標准化

近年來,許多自動化軟體帶段廠商把通用的標准化編程語言,如微軟的VBA(Visual Basic for Applications)集成在自己軟體的開發環境中。VBA與VB(Visual Basic)極為相似,只是不能編譯成可執行文件,這就為眾多熟悉VB的用戶提供了一個編程環境。用戶在VBA環境中編寫程序,可以使用DDE,ActiveX控制項,ODBC,COM/DCOM 等技術使得自動化軟體演變成開放的軟體平台,在軟體功能不能滿足用戶特殊需要時,用戶可以根據自己的需要進行二次開發。

同時,OPC(OLE for Process Contro1)技術也是自動化軟體的一個熱點。OPC是Microsoft公司的對象鏈接和嵌入OLE/COM技術在過程式控制制方面的應用,為工業控制領域提供了標準的數據訪問機制。

1.2 網路化

隨著Inter/Intra的普及,自動化軟體又集成了基於TCP/IP協議的網路功能,使其成為協作生產製造過程中的核心系統,實現了企業網路環境下實時數據的管理、實時流程查看、實時趨勢瀏覽、報警記錄與查看、報表數據存儲、歷史趨勢存儲與查看、生產過程報表生成、生產統計報表生成等功能,從而實現過程式控制制系統與信息系統的網路集成。用戶可以通過IE瀏覽器登錄自動化軟體的Web Server伺服器,實現遠程瀏覽生產過程。

1.3 管理控制一體化

生產管理信息系統是大型企業重點建設的項目,隨著大型資料庫技術的日益成熟,自動化軟體成為全廠范圍內信息收集和集成的工具。在未來企業的信息化進程中,自動化軟體將成為硬體設備與生產管理信息系統的橋梁。因為自動化軟體能為生產管理信息系統提供生產過程的實時和歷史數據,而生產管理信息系統叉對生產過程有著指導作用。

2、VBA在自動化軟體中的應用

下面,以iFIX軟體為例,通過VBA編寫的腳本程序,實現向Excel輸出歷史數據的實例來具體說明VBA在自動化軟體中的應用。

2.1 iFIX軟體簡介

iFIX軟體是GE自動化軟體產品家族中的一個基於Windows的HMI/SCADA組件。iFIX是基於開放的和組件技術的產品,專為在工廠級和猛陵商業系統之間提供易於集成和協同工作的設計環境。iFIX中還加入了OPC,VBA,ActiveX,DDE,ODBC等工業標准化技術,可以提供一個強大的開發環境,實現用戶的特殊需求。

2.2 iFIX軟體中VBA的應用實例

a) iFIX的數據訪問機制。iFIX中的數據分為實時資料庫和歷史資料庫,這2種資料庫的訪問方法不同,對於實時資料庫,iFIX的VBA項目中提供了各種iFIX對象,利用這些對象,就可以方便地在VBA中實現對iFIX的控制功能;對於歷史資料庫,可以訪問關系資料庫來獲得歷史數據。對於這些關系資料庫,各種編程語言大多都提供了相應的數據控制項來訪問,在VBA 中,通常採用ADO對象模型來訪問這些歷史資料庫。

b) ADO Data控制項使用Microsoft ActiveX數據對象(ADO)來快速建立數據綁定的控制項和數據提供者之間的連接。數據綁定控制項是任何具有「數據源」屬性的控制項。數據提供者可以是任何符合ODBC規范的數據源。

c) 利用VBA實現Excel報表。通過編寫VBA腳本程序,可以實現向Excel輸出歷史數據,生成Excel報表。其觸發方式有2種:一種是蠢知譽通過iFIX的調度程序,以固定的時間或事件來啟動VBA腳本程序,生成報表;還可以直接使用VBA生成用戶操作界面,用戶可以輸入開始時間,間隔等參數,由用戶點擊按鈕啟動VBA腳本程序,生成報表。這2種方式在程序上大同小異,其主要部分VBA腳本程序如下。其中程序將歷史數據、時間、TAG名稱等參數送到Excel的Sheet2中,用戶可以將Sheet1作為報表版面,通過編輯版面格式,引用Sheet2數據等方式,形成最終報表。

根據用戶要求定義所要查詢的時間段和變數名稱

Dim MyDate,StartTime,EndTime As String Dim Tagl,Tag2 As String

Tagl=「TIC101.F_CV」

Tag2=「TIC102.F_CV」

MyDate=Format(Now(),「yyyy-mm—dd」)

StartTime=MyDate&「 」& 「0:00:00」

EndTime=MyDate&「 」& 「23:OO:OO」

使用ADO對象來訪問ODBC資料庫,用SQL語盲查詢歷史數據

strQuerySamp=「Select Datetime,Value,Tag From Fix Where Mode=『Sample』and (TAG=『 「& Tagl & 」『or TAG=』」& Tag2 ) and Interval=『 01:00:00』and (Datetime) >={ts『「& StartTime &」』 )and Datetime<={ts『「 EndTime & 」』})」

Dim ADO As New ADODB.Connection

Dim rsADO As Recordset

Set ADO=New ADODB.Connection

ADO.ConnectionString=「 DSN= FIX Dynamics Historical Data;UID=sa;PWD= ;」

AD0.Open 「FIX Dynamics Historical Data」,「sa」,「」

Set rsADO— New ADODB.Recordset

rsADO.Open strQuerySamp,ADO,adOpenForwardOnly,adLockBatchOptimistic

調用Excel,將歷史數據寫入打開的Excel報表文件

Dim 0utReport File,InReportFile As String

Set Intyexcel= New Excel.Application

InReportFile-」C:\data\HisReport「

Intyexce1.Workbooks.Open InReportFile &「.XLS」

Intyexce1.Sheets(「Sheet2」).Select

While rsADO.EOF < > True

With Intyexce1.Worksheets(2)

For C=0 To Items

If rsADO(c)= 「 」Then .Cells(r,C + 1).Value= rsADO(c)

Next C

r; r+ 1

rsADO.M oveNex

End With

W end

關閉Excel,保存報表文件

OutReportFile=InRep0rtFile &「_」& MyDate

Intyexce1. ActiveW orkbook. SaveAs OutReportFile

Intyexce1.Quit

Set Intyexcel=Nothing

Set ADO==Nothing

3、VBA應用的注意事項與展望

集成了VBA編程語言的自動化軟體,變成了標准化的、開放的軟體開發平台,這使得自動化軟體本身具有了無限的開放性和可擴展性。但同時也帶來一些問題。首先,開發人員要確保VBA腳本程序的可靠和精簡。VBA程序要經過嚴格和全面的測試,並要編寫出錯處理程序,保證生產過程式控制制的萬無一失。其次,目前VBA程序還不能編寫多線程程序,開發人員要選擇恰當的觸發方式,避免發生沖突。

總之,隨著最終用戶變得更加成熟以及對自動化軟體的更加了解,他們將通過編寫程序的方式來針對其過程及系統進行更多的定製,以便能夠滿足其需求。自動化軟體將不斷為用戶提供這樣的安全可靠的技術手段。

參考文獻

[1] 劉恩濤,趙耀峰.Visual Basic6.0編程技術與實例分析,北京:中國水利水電出版杜,1999.455~456,472~478,479~482

[2] 劉炳文,張紳.Visual Basic程序設計——資料庫篇.北京:人民郵電出版社。1999.196~198,224~232,248~251

詳細教程:whzx.tzr/read.php?wid=455

『拾』 如何將Excel中表結構數據自動生成SQL腳本的方法

一: 在本地PC新建一個Excel文件(例如:excel2007)
准備工作,左鍵選擇excel文本左上角的圖標,選擇「Excle選項」。1. 點擊「信任中心」->「信任中心設置」->「宏設置」->選擇「啟用所有宏...」選項。「開發人員宏設置」選項也勾選上。 2. 點擊「信任中心」->「信任中心設置」->選擇「個人信息選項」,將「文檔特定設置」上面默認選擇去掉,避免在保存腳本時報錯。
二: 在本地PC新建一個excel文件(例如: D:\testdate.xlsx)
按快捷鍵「ALT + F11」進入宏編輯,輸入如下代碼後保存。summary()為目標生成代碼,SQL()為生成SQL腳本文件代碼,按條件生成SQL的腳本如下:
Sub summary()
Dim i As Integer
i = 2
ThisWorkbook.Worksheets(1).Columns(2).Clear
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> " " Then
ThisWorkbook.Worksheets(1).Cells(i, 2).Value = sh.Name
ThisWorkbook.Worksheets(1).Cells(i, 2).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh.Name + "!A1", TextToDisplay:=sh.Name
i = i + 1
End If
Next sh

ThisWorkbook.Worksheets(1).Cells.Select

With Selection.Font
.Name = "目錄"
.Size = 9
.Strikethrough = False
.Superscript. = False
.Subscript. = False
.OutlineFont = False
.Shadow = False
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
Sub SQL()
Dim i As Integer
i = 1
Dim ADO_Stream As Object
Dim strSQL, strDelSQL As String
Dim strTblName As String
Dim col As Long
Dim row As Long
Dim str As String
Dim PK As String
Dim cnt As Integer

PK = "PK"
Dim rowcounts As Long
rowcounts = 0
Dim filecount As Long
filecount = 0
Set ADO_Stream = CreateObject("ADODB.Stream")
ADO_Stream.Type = 2
ADO_Stream.Mode = 3
ADO_Stream.Charset = "unicode"
ADO_Stream.Open

Dim checkType As String
For Each sh In ThisWorkbook.Worksheets
cnt = 0
If sh.Name <> " " And InStr(sh.Name, "template") = 0 Then
strTblName = sh.Cells(1, 2).Value
rowcounts = 1
'Insert SQL
row = 6

Do While sh.Cells(row, 1).Value <> ""
strDelSQL = "delete from " + strTblName + " where "
strSQL = "Insert into " + strTblName + " ("
col = 1
Do While sh.Cells(3, col).Value <> ""
If col <> 1 Then
strSQL = strSQL + ", "
End If
strSQL = strSQL + sh.Cells(3, col).Value
col = col + 1
Loop
strSQL = strSQL + ") VALUES ("
col = 1
Do While sh.Cells(3, col).Value <> ""

str = Trim(CStr(sh.Cells(row, col).Value))

If InStr(Trim(CStr(sh.Cells(2, col).Value)), PK) <> 0 Then
If cnt > 0 Then
strDelSQL = strDelSQL + " and "
End If
strDelSQL = strDelSQL + Trim(CStr(sh.Cells(3, col).Value)) + " = '" + str + "'"
cnt = cnt + 1
End If
If col <> 1 Then
strSQL = strSQL + ", "
End If

If (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") = 0) Or _
((Len(str) > 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0))) Then
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
ElseIf InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0 Then
str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
Else
str = "'" + str + "'"
End If

strSQL = strSQL + str
ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0) Then
strSQL = strSQL + "NULL"
Else
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
End If

strSQL = strSQL + str
End If

col = col + 1
Loop

strDelSQL = strDelSQL + ";" + vbCrLf
ADO_Stream.WriteText strDelSQL
strSQL = strSQL + ");" + vbCrLf
ADO_Stream.WriteText strSQL
row = row + 1
Loop
End If
i = i + 1
rowcounts = 0
filecount = 0
Next sh
ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL(delete by condition).txt", 2
ADO_Stream.Close
Set ADO_Stream = Nothing
End Sub
點擊「保存」宏腳本,主要的一步完成。
三: 在excel文件(test.xlsx)的首頁創建兩個圖標,分別選擇右鍵指定宏,一個指定上面的summary(),一個指定上面的SQL()。然後就可以在後續的sheet頁創建自己需要生成SQL腳本的表結構名稱了,記得每個sheet頁面對應一個表結構及數據,使用方法如下:
A,將需要更新的對象表數據整個sheet拷進工具中,數據只保留需要更新的數據。
B,在第2行標出主鍵欄位,填上「PK」即可。
看看代碼
http://www.51testing.com/html/41/195041-831346.html

熱點內容
安卓泰拉瑞亞去哪裡買 發布:2025-07-18 20:01:05 瀏覽:694
flash編譯器 發布:2025-07-18 19:49:38 瀏覽:487
memcached源碼分析 發布:2025-07-18 19:22:42 瀏覽:866
android展示圖片 發布:2025-07-18 19:21:24 瀏覽:594
一台伺服器5個IP怎麼分配 發布:2025-07-18 19:12:34 瀏覽:862
貴陽分布式存儲行情 發布:2025-07-18 19:12:31 瀏覽:361
車場伺服器和工控機是如何連接的 發布:2025-07-18 19:10:19 瀏覽:938
計算機編程學什麼好 發布:2025-07-18 19:06:49 瀏覽:410
網吧用的伺服器是什麼伺服器 發布:2025-07-18 18:40:15 瀏覽:938
ftp命令使用 發布:2025-07-18 18:13:05 瀏覽:47