Какие действия Excel VBA возможны на скрытых рабочих листах или рабочих книгах?

Лучший способ устранить эту проблему - это посмотреть в Wordnet. Взгляните сюда: Loving in wordnet . Как вы можете видеть, на самом деле в Wordnet присутствует прилагательное «любящий». На самом деле, есть даже наречие «с любовью»: с любовью в Wordnet . Поскольку wordnet на самом деле не знает, какую часть речи вы на самом деле хотите, по умолчанию используется имя существительное ('n' в Wordnet). Если вы используете набор тегов Penn Treebank, вот несколько удобных функций для преобразования тегов Penn в WN:

from nltk.corpus import wordnet as wn

def is_noun(tag):
    return tag in ['NN', 'NNS', 'NNP', 'NNPS']


def is_verb(tag):
    return tag in ['VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ']


def is_adverb(tag):
    return tag in ['RB', 'RBR', 'RBS']


def is_adjective(tag):
    return tag in ['JJ', 'JJR', 'JJS']


def penn_to_wn(tag):
    if is_adjective(tag):
        return wn.ADJ
    elif is_noun(tag):
        return wn.NOUN
    elif is_adverb(tag):
        return wn.ADV
    elif is_verb(tag):
        return wn.VERB
    return None

Надеюсь, это поможет.

8
задан Lance Roberts 19 July 2009 в 06:49
поделиться

2 ответа

Из справки Visual Basic для приложений:

Когда объект скрыт, он удаляется с экрана, а его свойство Visible имеет значение False. Элементы управления скрытым объектом недоступны пользователю, но они доступны программно для запущенного приложения, для других процессов, которые могут взаимодействовать с приложением через автоматизацию, а в Windows - для событий управления таймером.

Не очень помогает. там, я боюсь, и я не смог бы найти больше через Google.

Как вы сами сказали, метод Select и свойство Selection не работают на скрытом рабочем листе, хотя они должны работать и на скрытом рабочем листе. (Пожалуйста, поправьте меня, если я ошибаюсь.) В целом, однако, в любом случае не всегда так эффективно выбирать диапазоны на листах, вам лучше работать со свойством Range (которое работает со скрытым листом).

РЕДАКТИРОВАТЬ:

Следующий код изменит цвет A1: A8 на голубой, даже если рабочий лист не отображается:

Dim book2 As Workbook
Set book2 = Workbooks.Open("C:\Book2.xls")

book2.Worksheets("Sheet1").Visible = False
book2.Windows(1).Visible = False

With book2.Worksheets("Sheet1").Range("A1:E8").Interior
    .ColorIndex = 8
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
End With

book2.Windows(1).Visible = True
book2.Worksheets("Sheet1").Visible = True
14
ответ дан 5 December 2019 в 06:54
поделиться

Вы можете обойти любые ограничения для скрытых листов, отобразив их незаметно для пользователя, сделав все, что вам нужно, а затем снова скрыв их.

В этом примере предполагается, что Sheet2 скрыт. .

Sub DoStuffToAHiddenSheetWithoutTheUserKnowingIt()
    'turns off screen repainting so the user can't see what you're doing
    'incidentally, this dramatically speeds up processing of your code
    Application.ScreenUpdating = False
    'note that if you're stepping through your code, screenupdating will be true anyway

    'unhide the sheet you want to work with
    Sheets("sheet2").Visible = True
        'do whatever you want here, including selecting cells if you want
        'Scagnelli is right though, only select cells if you have to

    'when you're finished, hide the sheet again
    Sheets("sheet2").Visible = False

    'make sure you turn screenupdating back on, or Excel will be useless
    Application.ScreenUpdating = True
End Sub

Еще один полезный трюк, если вы хотите, чтобы ваши листы были скрыты, - установить для них значение xlVeryHidden, что предотвратит их отображение в списке для пользователей, если они попытаются отобразить их через меню или ленту.

10
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: