1. 程式人生 > >VB excel 開啟無法關閉

VB excel 開啟無法關閉

  最近做了一個數據庫工具,資料庫資料匯出成excel後自動開啟excel檔案,但發現第二次開啟同一個檔案時(開啟前用VB關閉了的),無法正常執行。網上也是很多人碰到此問題,無法解決。後來我不用VB關閉excel,而是模擬操作手動關閉excel。這樣就完全可以了。程式碼如下:

Private Declare Function FindWindow% Lib "user32" Alias "FindWindowA" (ByVal lpclassname As Any, ByVal lpCaption As Any)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const NILL = 0&
Const WM_SYSCOMMAND = &H112
Const SC_CLOSE = &HF060


Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) _
As Long

Function closeExcel()‘系統資訊,關閉excel。
Dim hwnd%
Dim x As Integer
hwnd% = FindWindow%("XLMAIN", 0&)
x = SendMessage(hwnd%, WM_SYSCOMMAND, SC_CLOSE, NILL)
End Function


'filename為excel的檔名,不包路徑。sqlS是從mdb導到excel的語句。
Function fnExcelOutAndShow(filename As String, sqlS As String) As Boolean
On Error Resume Next

Dim ret As Integer
Dim objDB As Database   '資料庫

Dim xlApp As Excel.Application  'excel的應用程式
Dim xlBook As Excel.Workbook    'excel的工作視窗
Dim xlsheet As Excel.Worksheet  'excel的sheet
fnExcelOutAndShow = False
    '-----------------------------------------------------------------------------------------判斷excel文並刪除,如果佔用則提示關閉。
    If Dir(App.Path & "/報表/" & filename) <> "" Then
        Err.Clear
        Kill App.Path & "/報表/" & filename
        If Err.Number > 0 Then
            ret = MsgBox("檔案被開啟,是否自動關閉所有excel繼續匯出報表?", vbYesNo)
            If ret = vbNo Then GoTo endfnExcelOutAndShow
            Call closeExcel
            Kill App.Path & "/報表/" & filename
        End If
    End If
    '------------------------------------------------------------------------------------------由mdb導到excel檔案中
    Set objDB = OpenDatabase(App.Path & "\Famidoc.mdb", False, False, ";

[email protected]")  '開啟資料庫
    'If excel file already exists, you can delete it here
    If Dir(App.Path & "/報表/" & filename) <> "" Then Kill App.Path & "/報表/" & filename
    objDB.Execute sqlS
    objDB.Close
    Set objDB = Nothing
    '------------------------------------------------------------------------------------------開啟excel文並修改格式
    ret = MsgBox("是否自動開啟檔案:" & filename, vbYesNo)
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\報表\" & filename)
    Set xlsheet = xlBook.Worksheets(1)
    If ret = vbYes Then
        xlApp.Visible = True
    Else
        xlApp.Visible = False
    End If
    xlsheet.Rows.HorizontalAlignment = xlLeft       '文字全部左對齊
    xlApp.ActiveSheet.Columns.EntireColumn.AutoFit  '自動調整寬度
    xlBook.Save                                     '存檔
    If ret = vbYes Then
        Set xlApp = Nothing
    Else
        xlBook.Close True
        xlApp.Quit
        Set xlApp = Nothing
        ShellExecute frmMain.hwnd, vbNullString, App.Path & "\報表", vbNullString, vbNullString, 1 '不開啟檔案則顯示資料夾
    End If
    Set xlBook = Nothing
    Set xlsheet = Nothing
    fnExcelOutAndShow = True

endfnExcelOutAndShow:
End Function


'ShellExecute frmMain.hwnd, vbNullString, App.Path & "/報表", vbNullString, vbNullString, 1
Function OpenWordFileder()

End Function

相關推薦

VB excel 開啟無法關閉

  最近做了一個數據庫工具,資料庫資料匯出成excel後自動開啟excel檔案,但發現第二次開啟同一個檔案時(開啟前用VB關閉了的),無法正常執行。網上也是很多人碰到此問題,無法解決。後來我不用VB關閉excel,而是模擬操作手動關閉excel。這樣就完全可以了。程式碼如下

vb.net 開啟EXCEL關閉程式後,EXCEL程序仍然存在的問題

寫在每段程式的末尾: ReleaseExcel(Excel)             GC.Collect() 另有單獨一個可呼叫過程: Sub ReleaseExcel(ByRef o As Object)         System.Runtime.I

使用XSSFWork建立的xlsx字尾Excel檔案無法開啟

總結一下:空excel需要建一個sheet 這次需要自己寫個自用的Excel匯出工具: 照著POI的官方文件新建一個Excel檔案。 Workbook wb = new XSSFWorkbook(); FileOutputStream fileOut

VB.net硬體程式設計實現開啟關閉電燈泡

之前我們已經給廣大愛好者或程式設計師朋友們,帶來了硬體版的或者說物聯網版本的Hello World C++Builder/Delphi版的程式原始碼和教學資料,讓大家對硬體控制帶來一個嶄新的認識。今天我們再出一套Microsoft Visual Studio 2005 --

vim 重新開啟無法回到上次關閉位置

今天配置vim,需要讓vim重新開啟時,保持上次關閉的位置。 一直用的一份.vimrc都有這個功能,今天咋弄弄不好。 最後一看 ll .viminfo,發現所屬使用者是root,fuck,果斷chown,一把就好了。

Python2寫CSV無法MS Excel開啟亂碼

Python2處理漢字一直是個很讓人頭疼的問題。 首先,要在程式開頭加上如下一行,否則漢字變亂碼; #-*- coding: utf-8 -*- 其次,處理漢字字串時候,有時候需要 str.encode("utf-8") 轉碼或者先解碼再轉碼 str.decode("GBK

VB.NET 開啟Excel檔案,讀取Excel內容,新增到DataGridView中並顯示

'Excel新增:工程->參照追加→COM→Microsoft Excel *.* ObjectLibrary   'DataGridView列列舉型定義PrivateEnumDGV_ENUMCOL_ROWCOL_NAMECOL_AGEEndEnum    'Excel

在VS2017環境下Qt讀寫Excel遇到"無法開啟 源 檔案 'QAxObject'"的錯誤解決辦法

問題: 無法開啟 源 檔案 "QAxObject" 解決辦法: 1、右擊工程 -> 點選 "Create Basic .pro File" 生成一個 .pro 檔案 2、在Resources資料夾裡面找到生成的 .pro 檔案,編輯生成的 .pro 檔案內容,在其

Android 8.0後notification通知聲音無法關閉開啟的問題

Android O更新已經有很長一段時間了,然而也帶來了很多適配的問題,比如:app無法自動安裝的問題,通知欄無法顯示的問題等等。今天我們說說通知欄的聲音無法關閉的問題。 因為很多應用更新用的是notification建立一個前臺通知,放在通知欄中給使用者展示下載進度和提示內

VB Open 函式詳解 開啟關閉、讀、寫檔案

(一)開啟和關閉檔案      1、順序檔案      開啟順序檔案,我們可以使用Open語句。它的格式如下: Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize]   

關於Android 8.0後notification通知聲音無法關閉開啟的問題

Android O更新已經有很長一段時間了,然而也帶來了很多適配的問題,比如:app無法自動安裝的問題,通知欄無法顯示的問題等等。今天我們說說通知欄的聲音無法關閉的問題,此篇博文針對關閉聲音的,如果想開啟聲音則相反,道理一樣的。 因為很多應用更新用的是noti

win10電腦突然開不了熱點,怎麽辦,怎樣開啟關閉此操作??

開啟 右擊 禁用 設備管理 選擇 src blog log 設備 (1)右擊‘我的電腦’,選擇‘管理’ 會出現下面這個界面 (2)選擇‘設備管理器’,再右擊‘網絡適配器’裏面的第二條,具體如下圖示 (3)選擇‘屬性’,進入‘高級’選項有下圖所示界面 (4)再將鼠

php開啟關閉錯誤提示

php.ini target spa style 目錄 http ubuntu linux系統 spl linux系統下: 1. 打開php.ini文件。 以我的ubuntu為例,這個文件在: /etc/php5/apache2 目錄下。 2. 搜索並修改下行,把Of

作業19——夜間模式的開啟關閉,父模板的制作

amp https str clas mys tac 夜間模式 mage get 夜間模式的開啟與關閉 放置點擊的按鈕或圖片。 定義開關切換函數。 onclick函數調用。 父模板的制作 制作網站網頁共有元素的父模板html,包括頂部導航,中間區塊劃分,底部導航,底部說

夜間模式的開啟關閉,父模板的制作

制作網站 定義 css 問題 hit img date 註冊 uname 夜間模式的開啟與關閉 放置點擊的按鈕或圖片。 定義開關切換函數。 onclick函數調用。 父模板的制作 制作網站網頁共有元素的父模板html,包括頂部導航,中間區塊劃分,底部導航,底部說明等。

scripts may close only the windows that were opened by it 瀏覽器JS控制無法關閉當前頁面

解決方案 360瀏覽器 當前 火狐 就會 navigator opener ati hat 不是window.open形式打開的子頁面用js的window.close在chrome下就會提示關不了。 網上的很多解決方法都是把當前頁面為空,在IE和360瀏覽器也不能直接關閉

Mongodb默認開啟關閉

日誌 普通 clas gap 有一個 9.1 後臺 過程 最終 默認啟動: $ ./mongodb 默認數據保存路徑:/data/db/ 默認端口:27017 修改默認路徑: --dbpath $ ./mongdb --dbpath /mongodb/

exchange 2016開啟關閉發件人ID篩選(SPF檢查)功能

功能 fig 關閉 them exc 禁用 bsp static false 1、啟用發件人篩選:Set-SenderFilterConfig -Enabled $true2、禁用發件人篩選:Set-SenderFilterConfig -Enabled $false3、驗

Oracle歸檔的開啟關閉

Oracle archivelog --1、開啟歸檔【步驟】a.一致性關閉數據庫(shutdown [immediate | transactional |normal])b.啟動到mount階段(startup mount)c.切換到歸檔模式(alter database archivelog[ma

tp5--開啟關閉調試模式

png alt blog fin cat https lan .html tps https://www.cnblogs.com/finalanddistance/p/8906000.html   在TP5中,我們運行的代碼有錯誤無法執行時,只顯示頁面錯誤,而不顯