[[20170926142802]] 『Macで保存されたデータのVBAでの転記について』(あん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Macで保存されたデータのVBAでの転記について』(あん)

いつもお世話になってます。

VBAを使用して、同一フォルダにある異なるシート名のシートを
統合する処理をしています。

デスクトップの統合用というフォルダにあるエクセルから、
シート名というシートのA列に名前のあるシート名のみを、
sheet1に統合していっていたのですが、
最近Macのパソコンが1つ増えて、
Macで上書き保存すると、このVBAでの読み込みが
出来なくなりました。

(実行時エラー1004:「”●●”(Macで保存したエクセルの保存名と
フルパス)が見つかりません。名前が変更されたか、移動や削除が
行われた可能性があります」というエラーが出ます)

Sub シートの統合()

    Dim shT As Worksheet
    Dim shF As Worksheet
    Dim r As Range
    Dim fPath As String
    Dim fName As String
    Dim done As Boolean

    Application.ScreenUpdating = False

    Set shT = ThisWorkbook.Sheets("Sheet1")     '集約用シート
    With ThisWorkbook.Sheets("シート名")          '必要シート名登録シート
        Set r = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
    End With
    fPath = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\統合用\"    
    shT.Cells.ClearContents
    fName = Dir(fPath & "*.xls*")
    Do While fName <> ""
        With Workbooks.Open(fPath & fName)
            For Each shF In .Worksheets
                If IsNumeric(Application.Match(shF.Name, r, 0)) Then
                    If done Then                    
                        shF.Range("A1").CurrentRegion.Offset(1).Copy shT.Cells(shT.Range("A1", shT.UsedRange).Rows.Count + 1, "A")

                    Else
                        shF.Range("A1").CurrentRegion.Copy shT.Range("A1")
                        done = True
                    End If
                End If
            Next
            .Close False
        End With
        fName = Dir()
    Loop
 End Sub

Macの場合はフルパスが”¥”ではなく、
”/”を使うと聞いたことがありますが、
ウィンドウズで作成して、MACで上書き保存し、
ウィンドウズのPCのフォルダに入れて、
読み込みをしてもフルパスは変更されるのでしょうか??

ちなみにウィンドウズで保存しなおしても、
読み込みはできませんでした

途方にくれています。
どなたか助けて下さい。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


Macはセキュリティが厳しいので、windowsとの同時運用は難しいのかも知れません。 私はMac用のExcelを使っていないので、一般常識的な指示になりますが、元のなるブックは、エクスプローラではファイルの存在やプロパティを見ることができているのでしょうか?

PC上のフォルダを共有してそこにアクセスさせるのではなく、別途ファイルサーバを用意して、そこで読み書きさせるとどうなりますか? または、お互いに機種依存文字があるので、ファイル名を単純な文字列に変えるとどうなりますか?
(???) 2017/09/26(火) 16:22


>Macの場合はフルパスが”¥”ではなく、
 Dim sp as string
 sp=Application.PathSeparator

 fPath = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & sp & "統合用" & sp

(マナ) 2017/09/26(火) 20:57


↑ごめんなさい。誤解していいました。
マクロの実行は、windowsからなのですね。

(マナ) 2017/09/26(火) 21:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.