2016-12-30 39 views
2

當第一個文檔正在保存時,是否可以創建一個宏以在其他工作簿中觸發的一個工作簿上運行?從外部觸發器運行VBA代碼?

一些背景:我將PDF文檔 - 保存我需要的數據 - 轉換爲Excel文檔。轉換隻能用於.xlxs文檔。之後,我可以將此文檔「保存」爲一個支持宏觀的文檔,但整個過程需要更長時間,整個目標是大幅縮短時間。

我有一個宏可以將.xlsx文件中的數據提取到.xlsm文件,所以我可以根據需要操縱數據。當我更新.xlxs文件時自動獲取它是問題所在。

以下是我目前編寫的將.xlsx文件中的數據導入啓用宏的Excel文檔中的代碼。每當我進行更改並保存.xlsx文件而無需打開任何文件時,是否可以自動提取數據?

Sub Import_Test()  
    Dim Target_Workbook As Workbook 
    Dim Source_Workbook As Workbook 
    Dim Target_Path As String 

    Target_Path = "H:\Test.xlsx" 
    Set Target_Workbook = Workbooks.Open("H:\Test.xlsx") 
    Set Source_Workbook = ThisWorkbook 
    Target_Data = Target_Workbook.Sheets(1).Cells(35, 1) 
    Source_Workbook.Sheets(1).Cells(2, 1) = Target_Data 
    Source_data = Source_Workbook.Sheets(1).Cells(2, 1) 
    Target_Workbook.Sheets(1).Cells(35, 1) = Source_data 
    Source_Workbook.Save 
    Target_Workbook.Close False 
End Sub 
+0

您可以創建一個事件子,當您保存一個工作簿時觸發,但我不知道將數據推送到已關閉的工作簿的方法。無論如何,這將在您的「.xlsx」工作簿中需要一個宏,這將需要成爲「.xlsm」工作簿。這可能可以通過python或其他一些高級語言來完成。一般的做法是創建一個文件觀察器,而不是每次更改「.xlsx」文件時觸發一個腳本。儘管你可以打開工作簿,但你可能會遇到困難。 – Kyle

+2

如何啓動PDF到Excel的轉換?從批處理腳本?然後,您可以創建一個VBS腳本('.vbs'文件),您可以在同一批處理腳本中啓動該腳本,並可以創建Excel對象,並在Excel文件內容上運行,並可能將其另存爲另一個名稱。 。等等。 – trincot

+0

我正在使用Adobe ExportPDF進行轉換。由於受到公司庫存計劃的制約,我的選擇有限。 – Fondyrunner

回答

0

我看到它 - 這就是你有2種選擇: 1)創建一個工作簿不停地檢查你的.xlsx等工作簿的上次更改日期,只要它的變化,觸發宏...這不利的一面是你必須打開它才能工作。 2)我認爲首選的方法是將.xlsx文件切換爲.xlsm或.xlsb文件,正如其他人指出的那樣,這是真正實現您所需功能和切換PDF的唯一方法創建方法從您正在使用的Adobe內置PDF創建功能...

在任一情況下,您必須妥協您的一項要求,選項1需要打開工作簿,而選項2需要你切換PDF方法。我認爲選項2將是迄今爲止的首選路線,只要沒有某種原因需要使用Adobe PDF製造商創建PDF ...

下面是內置PDF創建者的代碼,如果可以的話使用它: 「Thisworkbook.ExportAsFixedFormat類型:= xlTypePDF,文件名:=」 文件名 「質量:= xlQualityStandard,IncludeDocProperties:=真,IgnorePrintAreas:=假OpenAfterPublish:=真」

希望這有助於 TheSilkCode