powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel (Office for Mac)
25 сообщений из 31, страница 1 из 2
Excel (Office for Mac)
    #37687302
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени!

Интересует вопрос, как этот код оптимизировать под Excel (Office for Mac 2011)?

Смысл кода.
Кнопка на форме открывает диалоговое окно, в нём выбирается нужный файл, при нажатии "открыть", по предустановленному шаблону создаётся папка, в неё копируется выбранный файл, диалоговое окно закрывается. Этот код нормально работает на Windows (исходно открывает диск С). На маке при нажатии ничего не происходит.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub Photoprot_bef_oper_but_Click()

 File_Path = GetFilePath

 St = ActiveWorkbook.Path

 SrcFile = File_Path
 DestFile = St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Фото-видеопротокол" & "_" & Photoprot_bef_oper.Text & "\"

 On Error Resume Next

 MkDir (St & "\" & "MRI_CT_Rtg" & "\")
 MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\")
 MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Фото-видеопротокол" & "_" & Photoprot_bef_oper.Text)

 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.CopyFile SrcFile, DestFile

End Sub

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для загрузки", _
 Optional ByVal InitialPath As String = "C:\") As String

On Error Resume Next

With Application.FileDialog(msoFileDialogOpen)

 .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
 If .Show <> -1 Then Exit Function
 GetFilePath = .SelectedItems(1): PS = Application.PathSeparator

End With

End Function



Подскажите, что нужно дописать, чтобы работало как на винде, так и на маке.

Спасибо!
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37687311
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorПодскажите, что нужно дописать,не дописать, а убрать On Error Resume Next
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37687381
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и чего? В винде он будет выдавать ошибку, если я буду добавлять ещё файлы в эту же папку - нажимать на кнопку (напишет, что объект уже существует).

Можно, конечно, прописать, чтобы каждый раз при нажатии на кнопку он проверял наличие соответствующих директорий и при их отсутствии, создавал, но как это сделать?
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37687385
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или, имеется ввиду, убрать из функции?
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37687386
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и того, что надо увидеть ошибку, а не игнорировать ее для начала и говорить "ничего не происходит"

Я не спец по маку, возможно, там надо использовать прямой слеш в пути. Что на нем выдает .Path?

А проверять наличие папки можно функцией Dir
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37687401
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не программер, если бы всё знал и умел, не рылся бы по форумам в поисках истины. До написанного выше своей головой дошел, изучая книжки и интернет. Будьте немного снисходительны.

Вторая проблема - отсутствие мака в настоящий момент. Сам не поклонник и не специалист в яблочных делах.

Лады. Доберусь до него, продолжим.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689244
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит, пишет. Ошибка выполнения "438". Объект не поддерживает это свойство или метод.
Выделяет строчку

Код: vbnet
1.
With Application.FileDialog(msoFileDialogOpen)
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689251
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё выделяет строку
Код: vbnet
1.
 MkDir (St & "\" & "MRI_CT_Rtg" & "\")



Пишет: Ошибка выполнения "75". Ошибка доступа к пути или файлу. Поменял слэши с '\' на '/'. По-прежнему эта ошибка.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689262
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorЗначит, пишет. Ошибка выполнения "438". Объект не поддерживает это свойство или метод.значит не поддерживает. Можно попробовать вместо этого GetOpenFileName


Dark Victorишет: Ошибка выполнения "75". Ошибка доступа к пути или файлу. Поменял слэши с '\' на '/'. По-прежнему эта ошибка.так чему St-то равно?
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689272
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
St = ActiveWorkbook.Path

В начале кода написано.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689310
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorSt = ActiveWorkbook.Path
В начале кода написано.
- Скажи чабан, а сколько овцы съедают травы в год?
- А какие, чёрные овцы или белые овцы?
- Ну к примеру белые?
- Нууу,- чешет в затылке чабан,- белые 20 кг.,
- А чёрные?
- А чёрные, тоже 20 кг.
- А сколько шерсти дают овцы?
- А какие, чёрные или белые?
- Чёрные к примеру.
- Чёрные 20 кг.
- А белые?
- И белые 20 кг.
- Слушай чабан, а чё ты спрашиваешь белые или чёрные!?
- Ну, дак белые - то овцы мои!
- А чёрные?
- А чёрные тоже мои!
Спросил, чему равен .Path? Ответа нет. Спросил, чему равен St. Оказывается .Path. Как бы так ответ-то получить (
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689317
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProDark VictorSt = ActiveWorkbook.Path
В начале кода написано.
Спросил, чему равен .Path? Ответа нет. Спросил, чему равен St. Оказывается .Path. Как бы так ответ-то получить (

Собственно, вопрос был
так чему St-то равно?
Я написал, чему. Какой вопрос, такой ответ.
Для ясности, можно было просто спросить, путь до книги.
Path в данном случае (на маке) равен "/Users/sdok/Documents/base/base.xlsm"
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689320
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorPath в данном случае (на маке) равен "/Users/sdok/Documents/base/base.xlsm"ага, именно это я и хотел понять, значит слеши все-таки прямые.

Нут так и что получается, вы пытаетесь создать папку
"/Users/sdok/Documents/base/base.xlsm/MRI_CT_Rtg/"
Думаю, это не получается, как минимум из-за отсутствия папки /Users/sdok/Documents/base/base.xlsm/
.Path на винде не содержит имени файла. Стало быть с этим на маке как-то придется бороться.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689322
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorСобственно, вопрос был
так чему St-то равно?

Я написал, чему. Какой вопрос, такой ответ.я не слепой - я вижу это в коде.
С тем же успехом можно было бы ответить: "значению типа String". Это тоже было бы правильным ответом, однако это не приближает нас к решению вопроса.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689325
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProDark VictorPath в данном случае (на маке) равен "/Users/sdok/Documents/base/base.xlsm"ага, именно это я и хотел понять, значит слеши все-таки прямые.

Не совсем правильно указал. base.xlsm это уже сама книга. Путь в директорию, где она лежит "/Users/sdok/Documents/base/" В этой же директории будет создаваться папка "MRI_CT_Rtg". На винде всё без проблем работает и создаёт.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689326
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro+
Dark VictorСобственно, вопрос был
пропущено...

Я написал, чему. Какой вопрос, такой ответ.
я не слепой - я вижу это в коде.
С тем же успехом можно было бы ответить: "значению типа String". Это тоже было бы правильным ответом, однако это не приближает нас к решению вопроса.

Как-то так.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689330
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorДля ясности, можно было просто спросить, путь до книги.Dark VictorНе совсем правильно указал. base.xlsm это уже сама книга. Путь в директорию, где она лежит "/Users/sdok/Documents/base/" В этой же директории будет создаваться папка "MRI_CT_Rtg". На винде всё без проблем работает и создаёт.Ну так потому я и не спрашивал путь к книге, а спрашивал чему равна переменная St и ожидал ответа именно на этот вопрос, потому что важно именно состояние переменной, а не путь к книге.
В таком случае, наиболее вероятна проблема с правами - недостаточно прав, чтобы создать эту папку.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689334
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно. Мысли были про это. Можно как-то из кода расширить права, или это для всего приложения нужно делать?
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689342
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark VictorВозможно. Мысли были про это. Можно как-то из кода расширить права, или это для всего приложения нужно делать?нет, из кода, конечно, нельзя, иначе зачем они вообще существуют. Нужно дать их пользователю, от имени которого выполняется эксель.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689345
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переписал кнопку через GetOpenFilename

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub Photoprot_bef_oper_but_Click()

 File_Path = Application.GetOpenFilename _
                 ("All Files (*.*),*.*")

 St = ActiveWorkbook.Path

 SrcFile = File_Path
 DestFile = St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Фото-видеопротокол" & "_" & Photoprot_bef_oper.Text & "\"

 On Error Resume Next

 MkDir (St & "\" & "MRI_CT_Rtg" & "\")
 MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\")
 MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Фото-видеопротокол" & "_" & Photoprot_bef_oper.Text)

 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.CopyFile SrcFile, DestFile




Снова на винде работает, на маке выдвёт новую ошибку: Ошибка выполнения "1004". Ошибка метода "GetOpenFilename" объекта "_Application".
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689349
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Капризная, видать, эта штука - офис для мака, особенно в части совместимости с неродной файловой системой.
Надо курить хелпы по этим командам, именно хелп маковского офиса.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689351
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, боюсь "Scripting.FileSystemObject" там тоже неоткуда взяться.
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689358
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне ещё придётся как-то совмещать, чтобы оно работало на винде и маке. Уже были мысли предложить владельцу поставить винду второй системой. Ещё день-другой помучаюсь, наверно так и сделаю...
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37689380
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наткнулся.

В маке, судя по всему, вообще слэшей нет в пути...
...
Рейтинг: 0 / 0
Excel (Office for Mac)
    #37690938
Dark Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! Разобрался самостоятельно.

Переписал кнопку. Теперь работает как на винде, так и на маке. Может кому пригодится.

кнопка
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Private Sub Photoprot_bef_oper_but_Click()

    File_Path = Application.GetOpenFilename()
    St = ActiveWorkbook.Path
    
            If Application.OperatingSystem Like "*Mac*" Then
                
                If File_Path = False Then
            
                    MsgBox "Canceled!"
                    
                Else
                
                        DestFile = St & ":" & "MRI_CT_Rtg" & ":" & Name_.Text & "_" & Date_hospit.Text & ":" & "6. Photo-videoprotokol" & ":" & "Date_" & Photoprot_bef_oper.Text & ":"
        
                    On Error Resume Next
        
                        MkDir (St & ":" & "MRI_CT_Rtg" & ":")
                        MkDir (St & ":" & "MRI_CT_Rtg" & ":" & Name_.Text & "_" & Date_hospit.Text & ":")
                        MkDir (St & ":" & "MRI_CT_Rtg" & ":" & Name_.Text & "_" & Date_hospit.Text & ":" & "6. Photo-videoprotokol" & ":")
                        MkDir (St & ":" & "MRI_CT_Rtg" & ":" & Name_.Text & "_" & Date_hospit.Text & ":" & "6. Photo-videoprotokol" & ":" & "Date_" & Photoprot_bef_oper.Text)
        
                    On Error GoTo 0
            
                        FileCopy File_Path, DestFile
                        
                End If
                    
            Else
              
                If File_Path = False Then
            
                    MsgBox "Canceled!"
                    
                Else
                          
                        DestFile = St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Photo-videoprotokol" & "\" & "Date_" & Photoprot_bef_oper.Text & "\"

                    On Error Resume Next

                        MkDir (St & "\" & "MRI_CT_Rtg" & "\")
                        MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\")
                        MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Photo-videoprotokol" & "\")
                        MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\" & "6. Photo-videoprotokol" & "\" & "Date_" & Photoprot_bef_oper.Text)
    
                    On Error GoTo 0
                        
                        Set fs = CreateObject("Scripting.FileSystemObject")
                        fs.CopyFile File_Path, DestFile
                        
                End If
    
            End If
                                                  
    Photoprot_bef_oper.Text = ClearContents
            
            

End Sub



По поводу создания папок в винде с SHCreateDirectoryEx заморачиваться не стал.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel (Office for Mac)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]