确定VBC组件是否考虑工作簿或工作表

时间:2016-04-07 04:48:18

标签: vba excel-vba excel

以下代码允许我浏览具有宏的工作簿和工作表:

LBYouTubeExtractor *extractor = [[[LBYouTubeExtractor alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:(@"http://www.youtube.com/watch?v=%@"), self.videoID ]] quality:LBYouTubeVideoQualityLarge] autorelease];
[extractor extractVideoURLWithCompletionBlock:^(NSURL *videoURL, NSError *error) {
    if(!error) {
        NSLog(@"Did extract video URL using completion block: %@", videoURL);

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSData *data = [NSData dataWithContentsOfURL: videoURL];
            NSString *pathToDocs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
            NSString *filename = [NSString stringWithFormat:(@"video_%@.mp4"), self.videoID ];
            [data writeToFile:[pathTODocs stringByAppendingPathComponent:filename] atomically:YES];
            NSLog(@"File %@ successfully saved", filename);
        });
    } else {
        NSLog(@"Failed extracting video URL using block due to error:%@", error);
    }
}];

正如this page所示,对于工作簿和工作表,其类型均为For Each VBCmp In ActiveWorkbook.VBProject.VBComponents Msgbox VBCmp.Name Msgbox VBcmp.Type Next VBCmp ,即100。但我仍想区分它们:我想知道哪个vbext_ct_Document是关于工作簿的,哪一个是关于工作表的。

请注意VBCmp可以更改,它们不一定总是VBCmp.NameThisWorkbook,因此它不是我所追求的可靠信息。

是否有人知道是否存在相关的属性?

1 个答案:

答案 0 :(得分:1)

工作表对象和工作簿对象都具有与VBCmp.Name属性匹配的CodeName属性,因此您可以将两者进行比较。

Sub Tester()
    Dim vbcmp
    For Each vbcmp In ActiveWorkbook.VBProject.VBComponents
        Debug.Print vbcmp.Name, vbcmp.Type, _
                    IIf(vbcmp.Name = ActiveWorkbook.CodeName, "Workbook", "")
    Next vbcmp
End Sub