emptyRows()
необходимо подбирать, чтобы соответствовать данным, используя ReDim
.Column = 16384
следует изменить на .Column = sheet.Columns.Count
. If WorksheetFunction.CountA(sheet.Rows(i)) = 0 Then
Cells
должен быть квалифицирован для sheet
: sheet.Cells(i, 1)
Function FindAllEmptyRows(sheet As Worksheet) As Variant
Dim emptyRows() As Variant
Dim i As Long, rowNumber As Long
Dim rowCounter As Integer
rowNumber = sheet.UsedRange.Rows.Count
For i = rowNumber To 1 Step -1
If sheet.Cells(i, 1).End(xlToRight).Column = sheet.Columns.Count And Cells(i, 1) = "" Then
If rowCounter = 0 Then
ReDim emptyRows(0)
Else
ReDim Preserve emptyRows(rowCounter)
End If
emptyRows(rowCounter) = i
rowCounter = rowCounter + 1
End If
Next
FindAllEmptyRows = emptyRows
End Function
Range.SpecialCells()
можно использовать для разделения Range
на области ячеек, которые соответствуют определенным критериям.
MSDN - Range.SpecialCells Method (Excel)
Возвращает объект Range, который представляет все ячейки, соответствующие указанному типу и значению
Одним из наиболее полезных методов в Excel (по моему опыту) является метод SpecialCells. При использовании он возвращает объект диапазона, который представляет только те типы ячеек, которые мы указываем. Например, можно использовать метод SpecialCells для возврата объекта Range, который содержит только формулы. Фактически, мы можем, если хотим, даже сузить его дальше, чтобы наш объект Range (содержащий только формулы) возвращал только формулы с ошибками.
Изучение вывода этого кода должно дайте вам хорошие идеи о том, как использовать SpecialCells.
Sub SpecialFoo() Dim rArea As Range, rBlanks As Range, rFormulas As Range, rConstants As Range, rUnion As Range Dim sheet As Worksheet Set sheet = ActiveSheet On Error Resume Next Set rBlanks = sheet.UsedRange.SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not rBlanks Is Nothing Then For Each rArea In rBlanks.Areas Debug.Print "rBlanks Areas: "; rArea.Address Next End If On Error Resume Next Set rFormulas = sheet.UsedRange.SpecialCells(xlCellTypeFormulas) On Error GoTo 0 If Not rFormulas Is Nothing Then For Each rArea In rFormulas.Areas Debug.Print "rFormulas Areas: "; rArea.Address Next End If On Error Resume Next Set rConstants = sheet.UsedRange.SpecialCells(xlCellTypeConstants) On Error GoTo 0 If Not rConstants Is Nothing Then For Each rArea In rConstants.Areas Debug.Print "rConstants Areas: "; rArea.Address Next End If If Not rFormulas Is Nothing And Not rConstants Is Nothing Then Set rFormulas = Union(rConstants, rFormulas) For Each rArea In rFormulas.Areas Debug.Print "rUnion Areas: "; rArea.Address Next End If End Sub
Вы можете создать учетную запись службы, доступ к которой ограничен требуемым сегментом. https://cloud.google.com/iam/docs/understanding-service-accounts
Используйте списки доступа Bucket и назначьте адрес электронной почты пользователя в корзину. Адрес электронной почты пользователя должен быть частью учетных записей Google или G Suite, с которыми пользователь входит (в учетные записи Google).
Следующий пример gsutil
предоставит john.doe@example.com
разрешение write
на ведро example-bucket
:
gsutil acl ch -u john.doe@example.com:WRITE gs://example-bucket
Документация: