Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Свойства оптического диска средствами VBA, Получение данных о типе, свободном месте, занятом объёме и т.п. информации
 
Доброго времени суток!

Столкнулся с проблемой получения корректных данных по оптическим дискам посредством "GetDrive". А именно, при попытке получить данные по оптическим дискам неверно отображается свойство "TotalSize"
Код создаёт таблицу на листе со свойствами диска и, ниже, список файлов на нём и их свойства.


Однако, через стандартное окно свойств системы наблюдаем совсем другое:



Сам код выглядит следующим образом
Код
Sub getInfoDrive() 
    Dim fso As Object, t As String
    Dim myDrive As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set myDrive = fso.GetDrive(fso.GetDriveName(sFolder)) 'sFolder Public variable 
    'Set myDrive = fso.GetDrive("P:") ' test string
    Select Case myDrive.DriveType
        Case 0: t = "Unknown"
        Case 1: t = "Removable drive (USB/SDCard)"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select
Cells(2, 1) = t
Cells(2, 2) = myDrive.VolumeName
Cells(2, 3) = myDrive.FileSystem
Cells(2, 4) = myDrive.TotalSize '  &vbCrLf
'Cells(2, 4) = myDrive.FreeSpace
Cells(2, 5) = myDrive.TotalSize - myDrive.AvailableSpace

    Application.Run "getInfoFolder"

End Sub
переменная sFolder пути файла задаётся диалоговым окном

Код
Sub GetFolderDialog_Shell()
    On Error Resume Next
    Dim objShellApp As Object, objFolder As Object, ulFlags As Integer
    Set objShellApp = CreateObject("Shell.Application")
    ulFlags = 20
    Set objFolder = objShellApp.BrowseForFolder(0, "Error", ulFlags, "*:\") '"
    sFolder = objFolder.Self.Path 'folder path -> variable

    If Err.Number <> 0 Then
        MsgBox "File not found!", vbInformation, "File Information Program"
    
    Else:
    Application.Run "getInfoDrive"
    Application.Run "GetSerialDisk"
    
    End If
End Sub

С некоторыми оптическими дисками информацию код выдаёт верно. Думал дело в UDF, но при анализе диска CD-R 0,7 Гб с UDF информация об объёмах показывается верная. То ли дело в сессиях записи/перезаписи, то ли ещё в чём-то... в общем пока не разобрался...
Подскажите, пожалуйста, в какую сторону здесь нужно "копать"?
Копирование листа активной книги в закрытую книгу макросом, Копирование листа или диапазона активной книги в закрытую книгу при условии отсутствия этого листа в ней
 
Добрый день!

Собственно, тема похожая есть, но там посоветовали создать отдельную ибо есть своя специфика.
Есть файл-шаблон в котором есть заготовки листов (диапазонов) для внесения данных. На главном листе формируется идентификатор (будущее имя новой книги).
При запуске макроса, на сервере в локалке создаётся файл xls с именем идентификатора, в который копируется часть информации с главного листа файла-шаблона.
Перед созданием необходимо убедится в отсутствии такого файла, а если он есть, действие по созданию заменяется на открытие уже существующего файла.
Вот эти действия я кое-как осуществил. Но теперь мне нужно, чтобы в этот файл из файла-шаблона можно было бы "догружать" либо листы либо диапазоны с листов, и, причём также с проверкой их существования. Если такой лист уже есть в этом файле, то макрос должен открыть лист без его замены. Если листа нет, то создать его или скопировать целиком из файла-шаблона. Аналогичные действия необходимо сделать с диапазонами на листах файла-шаблона, которые копируются в одноимённые листы.
То есть, алгоритм примерно такой: проверить существует ли лист, если да - открыть, если нет, скопировать. Если лист на который нужно скопировать только диапазон есть, то открыть этот лист, если нет, создать лист с аналогичным именем, и скопировать диапазон.
Книга в которую заносится информация затем сохраняется.
Внизу код проверки существования файла и создание из диапазона файла с заданным в ячейке именем и префиксом, если проверка показала что такого файла нет.
Подскажите пожалуйста, можно ли этот код видоизменить и где, чтобы он работал для  листов.

Код
Sub SearhFiles() 'Макрос поиска файла с именем и автоматическое его открытие при наличии
     On Error GoTo err_: Workbooks.Open "\\Server\FTP\Global\" & Range("F2") & ".xls": Exit Sub 
err_:     MsgBox "Нет такого файла!" 
Application.Run "DOC-Fish.xlsm!R_to_xls" 'Запуск макроса по созданию файла с именем 
End Sub  

Sub R_to_xls()     
Const Path = "\\Server\FTP\Global\"  'Объявляем путь для сохранен
Dim NameDate As String    'Вводим переменную для определения даты для имени файла     
Dim RepFileName As String 'Вводим переменную для имени файла     
NameDate = Format((Sheets("Расход").Range("Y1")), "yyyy-mm-dd") 'Указываем значение переменной даты для имени файла (хотя дата не создаётся почему-то в имени)     
RepFileName = "R-" & NameDate & ".xls"   'Указываем значение переменной всего имени файла        
Sheets("Расход").Select     
Range("O2:AB41").Select     
Range("O2:AB41").Activate     
Selection.Copy     
Workbooks.Add     
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _     
xlNone, SkipBlanks:=False, Transpose:=False     
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _     
SkipBlanks:=False, Transpose:=False     
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _         
SkipBlanks:=False, Transpose:=False     
Sheets("Лист1").Select     
Sheets("Лист1").Name = "R-" & NameDate     
ActiveWindow.Zoom = 100     
ActiveWorkbook.SaveAs FileName:=Path & RepFileName, FileFormat _  
   :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _    
     False, CreateBackup:=False 
End Sub

Пробовал следующий код, но эксель ругается на 4 строку и не могу понять как макросом проверить наличие листа в файле, по аналогии с указанным выше кодом

Код
Sub CopySheet()
Dim Ws As Worksheet
Set Ws = ActiveSheet
With Workbooks("\\Server\ftp\Global\" & Range("Q3") & ".xls")
Err.Clear
On Error Resume Next
.Worksheets.Add After:=.Worksheets(Sheets.Count)
If Err.Number = 0 Then ActiveSheet.Name = Ws.Name
Ws.Parent.Activate
Cells.Copy Destination:=.Worksheets(ActiveSheet.Name).Cells
End With
End Sub
Изменено: Sandero - 20.06.2019 17:35:39
Генерация сочетаний чисел из различных ячеек таблицы, вывод таблицы этих сочетаний
 
Прошу Вас помочь в решении следующей задачи!

Есть таблица исходных параметров (А,Б,С,Д и т.д.) каждый из которых может иметь некоторое конечное число вариантов значений. Например А=10, 20, 30; Б = 1,0, 2,0 и т.д. Значения параметров записаны в столбец под обозначением самого параметра.

Цель -
1. Составить (сгенерировать) все возможные варианты сочетаний этих параметров и вывести их в виде таблицы на этом же, либо на отдельном листе. При этом в комбинировании участвуют все параметры указанные в исходной таблице, то есть, если в таблице 4 параметра, то одна из комбинаций параметров, должна содержать 4 числа - по одному от каждого параметра. То есть, комбинация не должна содержать чисел меньше, чем число параметров.
Комбинации записываются построчно. Каждая комбинация уникальна.
Например:
10__1,0__2,9__3,6
10__1,2__2,9__3,6
20__1,0__2,9__3,6
20__1,2__2,9__3,6

2. Одновременно, либо после составлению/я комбинаций, в крайнем правом столбце, проводится расчет по определенной формуле, исходя из полученной комбинации параметров. Например, =А+Б*С/Д
Пример прилагается.
Заранее благодарю, и надеюсь на Вашу помощь.

P.S. честно искал похожее на форуме, не нашел...
Страницы: 1
Наверх