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

Интересует вопрос, как этот код оптимизировать под 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
02.03.2012, 00:20
    #37687311
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Dark VictorПодскажите, что нужно дописать,не дописать, а убрать On Error Resume Next
...
Рейтинг: 0 / 0
02.03.2012, 01:35
    #37687381
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Так и чего? В винде он будет выдавать ошибку, если я буду добавлять ещё файлы в эту же папку - нажимать на кнопку (напишет, что объект уже существует).

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

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

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

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

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

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



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


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

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

Собственно, вопрос был
так чему St-то равно?
Я написал, чему. Какой вопрос, такой ответ.
Для ясности, можно было просто спросить, путь до книги.
Path в данном случае (на маке) равен "/Users/sdok/Documents/base/base.xlsm"
...
Рейтинг: 0 / 0
02.03.2012, 23:12
    #37689320
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
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
02.03.2012, 23:14
    #37689322
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Dark VictorСобственно, вопрос был
так чему St-то равно?

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

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

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

Как-то так.
...
Рейтинг: 0 / 0
02.03.2012, 23:27
    #37689330
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Dark VictorДля ясности, можно было просто спросить, путь до книги.Dark VictorНе совсем правильно указал. base.xlsm это уже сама книга. Путь в директорию, где она лежит "/Users/sdok/Documents/base/" В этой же директории будет создаваться папка "MRI_CT_Rtg". На винде всё без проблем работает и создаёт.Ну так потому я и не спрашивал путь к книге, а спрашивал чему равна переменная St и ожидал ответа именно на этот вопрос, потому что важно именно состояние переменной, а не путь к книге.
В таком случае, наиболее вероятна проблема с правами - недостаточно прав, чтобы создать эту папку.
...
Рейтинг: 0 / 0
02.03.2012, 23:30
    #37689334
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Возможно. Мысли были про это. Можно как-то из кода расширить права, или это для всего приложения нужно делать?
...
Рейтинг: 0 / 0
02.03.2012, 23:38
    #37689342
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Dark VictorВозможно. Мысли были про это. Можно как-то из кода расширить права, или это для всего приложения нужно делать?нет, из кода, конечно, нельзя, иначе зачем они вообще существуют. Нужно дать их пользователю, от имени которого выполняется эксель.
...
Рейтинг: 0 / 0
02.03.2012, 23:46
    #37689345
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Переписал кнопку через 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
02.03.2012, 23:55
    #37689349
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Капризная, видать, эта штука - офис для мака, особенно в части совместимости с неродной файловой системой.
Надо курить хелпы по этим командам, именно хелп маковского офиса.
...
Рейтинг: 0 / 0
02.03.2012, 23:57
    #37689351
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Кстати, боюсь "Scripting.FileSystemObject" там тоже неоткуда взяться.
...
Рейтинг: 0 / 0
03.03.2012, 00:06
    #37689358
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Мне ещё придётся как-то совмещать, чтобы оно работало на винде и маке. Уже были мысли предложить владельцу поставить винду второй системой. Ещё день-другой помучаюсь, наверно так и сделаю...
...
Рейтинг: 0 / 0
03.03.2012, 01:01
    #37689380
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel (Office for Mac)
Наткнулся.

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

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

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


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