2016-02-03 27 views
5

Tôi hiện đang cố gắng khởi chạy macro VBA rất đơn giản từ R. Cho điều đó, tôi đang làm theo quy trình được tìm thấy tại đây: Run VBA script from R Thật không may, khi tôi mở tệp Excel sau đó, nó bị hỏng và Excel dừng lại. Đây là mã của tôi:Khởi chạy macro VBA từ R

:

library(XLConnect) 
saveWorkbook(wb,pathfile) 
# The saveWorkbook part is working 
shell(shQuote(normalizePath(pathtovbs)), "cscript", flag = "//nologo") 

:

Option Explicit 
On Error Resume Next 
ExcelMacroExample 
Sub ExcelMacroExample() 
    Dim xlApp 
    Dim xlBook 
    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook =  xlApp.Workbooks.Open(pathfile, 0, True) 
    xlApp.Run "PERSONAL.XLSB!MyMacro" 
    xlApp.Quit 
    Set xlBook = Nothing 
    Set xlApp = Nothing 
End Sub 

PESONAL.XLSB MyMacro:

Sub MyMacro() 

Dim ws As Worksheet 
    For Each ws In Sheets 
     ws.Range("C:C").EntireColumn.Delete 
     ws.Range("A:A").EntireColumn.Delete 
    Next ws 
End Sub 

Bạn có bất cứ ý tưởng gì đang xảy ra? Tôi đã kiểm tra đường dẫn của từng tệp và chúng rất tốt. Cảm ơn bạn rất nhiều trước.

Chỉnh sửa: Rõ ràng, sự cố xuất phát từ vbscript. Tệp mở ra nhưng không thể tìm thấy macro nằm trong thư viện cá nhân của tôi (PERSONAL.XLSB). Khi tôi mở Excel theo cách thủ công, tôi có thể truy cập macro này, nhưng khi tôi mở Excel từ một chương trình khác, tôi không thể. Bất kỳ ý tưởng tại sao?

Pauline

+0

Bạn có nhận được thông báo lỗi nào không? – tospig

+0

Không, không có gì. Tôi chỉ không thể mở nó khi nó được thực hiện. Excel dừng lại, ans khi tôi cuối cùng có thể mở tập tin, không có gì thay đổi trong nó (macro không hoạt động). – Pauline

Trả lời

0

Tôi đã tìm thấy giải pháp.Nếu một số bạn đang cố gọi thư viện người từ vbscript, bạn cần thêm:

Dim objWorkbook 
Set objWorkbook=xlApp.Workbooks.Open("D:\users\...\PERSONAL.XLSB") 

trước khi khởi chạy macro.

1

pathfile không được định nghĩa trong .vbs của bạn:

Set xlBook =  xlApp.Workbooks.Open(pathfile, 0, True) 

và EVIL của bạn

On Error Resume Next 

ẩn tất cả các lỗi.

Cập nhật wrt bình luận:

("tôi nói thêm On Error Resume Next nhưng bây giờ các tập tin rỗng") - Bạn đã một EVIL OERN; bạn nên xóa nó - và sau đó nghiên cứu thông báo lỗi - có thể liên quan đến các tham số cho cuộc gọi .Open.

+0

Cảm ơn câu trả lời của bạn. pathfile được hardcoded trong vbscript. Tôi đã thay đổi nó trong bài viết để bạn không có đường dẫn đầy đủ để đọc. Tôi đã thêm vào Lỗi Tiếp tục Tiếp theo nhưng bây giờ tệp này trống ... – Pauline

+0

Ồ vâng, tôi hiểu ý của bạn bây giờ. Tôi nhận được "Lỗi thực thi không xác định" (được dịch từ tiếng Pháp) – Pauline

0

Bạn đang thực hiện xlApp.Quit mà không lưu và đóng Sổ làm việc trước.

Thêm này:

xlBook.Save 
xlBook.Close SaveChanges:=False 

Trước:

xlApp.Quit 

Và loại bỏ On Error Resume Next để xem lỗi.

+0

'xlBook.Close SaveChanges: = False' sẽ gây ra lỗi trong VBScript. –

+0

Điều này không thay đổi bất cứ điều gì .. – Pauline

Các vấn đề liên quan