2010-05-10 22 views
7

Sunucuda bulunan bir makro var. Bu sunucuya bağlanan farklı iş istasyonlarından çalıştırabilmem gerekir. ŞuBaşka bir çalışma kitabından excel makrosu çalıştırma

yapıyorum:

Application.Run ("L:\database\lcmsmacro\macro1.xlsm!macro_name") 

alıyorum hata mesajı Zaten güvenlik ayarları olduğundan emin yaptık

"makro 1004 Bu çalışma kitabı # da mevcut olmayabilir" dir en düşük seviyeye ayarlanmış.

Başka bir sunucuda barındırılan başka bir çalışma kitabından makroyu nasıl çalıştırırım?

Eklentileri kullanmama yardımcı olur mu?

cevap

17

Ben Sözdiziminizin tek tırnak karakterleri eksik olduğunu düşündüğünüz: bunun parametreleri geçirmek için gerekirse

Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name") 

Ardından, sözdizimi şu şekilde olacaktır:

da
Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name","param1","param2") 
+1

neden tek tırnaklara mı ihtiyacım var? –

+5

Kapalı olan excel için herhangi bir çalışma kitabını bağlamak için standart sözdizimi. Örneğin farklı bir kapalı çalışma kitabındaki başka bir hücreye bir hücre bağlama olsaydı, sözdizimi şu şekilde görünecektir: 'C: Documents and Settings \ \ mnbtjf01 Masaüstü \ [MyWorkbook.xls] Sayfa1'ın \'! $ F $ 15 Ayrıca, ağa bağlı elektronik tablo üzerinde daha fazla kontrole ihtiyacınız varsa, bir adım öteye geçebilirsiniz. İşte iyi bir kaynak: http://www.vbaexpress.com/kb/getarticle.php?kb_id=279 – Fink

+0

Eğer SheetName için değişkenler varsa, - Application.Run "'" & ExcelSheetName & "' ! macroname" – OverrockSTAR

1

Bu hata gösterileri uzak çalışma kitabında yinelenen makro adları olduğunda, örn. "makro_name" adlı iki makro. Öğrenmek için bir süre aldı!

0

Adlar arasında genellikle bir boşluk veya noktalama işaretiniz varsa, Excel'in uzayın bir Yöntemden gelen argümanları ayırma gibi kasıtlı bir ayırma olduğunu düşünmesiyle karıştırılmaması için tek bir ‘gerekir. Bazı durumlarda Excel bunlarda ısrar edecektir. Genelde, ihtiyaç duyulmasalar bile, isimleri içermeyen herhangi bir alan bulunmadığında, bunları dahil etmek zararı yoktur. Bazen Excel, ihtiyaç duyulmadığı takdirde bunları çıkarır. http://www.eileenslounge.com/viewtopic.php?f=27&t=25599

0

makro size makro çalıştırdığınız çalışma kitabı yolunu kullanarak göreli makro yolu bulmak gerekiyorsa ve dizi listeden birkaç makro çalıştırmak için gereken, aşağıdaki kod yardımcı olacaktır:

Dim relativePath As String, programFileName As String 
Dim selectedProgramsFiles() As String, programsArrayLastIndex As Byte, I As Byte 

For I = 0 To programsArrayLastIndex 'Loop through all selected programs 
    programFileName = selectedProgramsFiles(I) 
    relativePath = ThisWorkbook.Path & "\" & programFileName 
    Workbooks.Open Filename:=relativePath 

    Application.Run ("'" & relativePath & "'!ModuleName.Main") 

    Workbooks(programFileName).Activate 
    ActiveWorkbook.Close SaveChanges:=False 
Next I 'For I = 0 To programsArrayLastIndex 'Loop through all selected program 
İlgili konular