- ベストアンサー
イントラネット上で開いているエクセルのセルをコピー
社内のイントラネット上のファイル(http://*******.csv) のA1セルをコピーするという作業をマクロでやりたいのですが、 イントラネット上のファイルの指定の仕方がわかりません。 いろいろとやってみたのですが、現在開いているエクセルのA1を認識してしまいます。 どうかよろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
イントラネットと言うよりはURLでファイルを読み込むと言うことをやりたいのでしょうか? もしそうであれば次のコードを試してください。 Public Sub OpenFileByURL() Dim objSrcWorkBook As Workbook 'ファイルを開くと開いたファイルに画面が切り替わってしまうので、再描画を行わないことにより画面のちらつきを防ぐ Application.ScreenUpdating = False '本当はタイムアウト処理やURLの有効無効判定を行わないといけないが '省略のためにエラーを無視にしています On Error Resume Next '実際にここでファイルを開いている(3番目の引数「1」は読み取り専用を指定するの意味) Set objSrcWorkBook = Workbooks.Open("開きたいファイルのURL", , 1) 'ここから先はエラー時はきちんとエラーにして停止させる On Error GoTo 0 If objSrcWorkBook Is Nothing Then 'オープンに失敗した場合 Application.ScreenUpdating = True MsgBox "ファイルのオープンに失敗しました。" & vbCrLf & "処理を中断します。", vbOKOnly Or vbCritical Exit Sub End If With objSrcWorkBook.Sheets(1) 'CSVだとそもそもシートは1個のみだけどXLSファイルの場合は目的のシートを指定することで任意のシートのデータが読み出せます '読み込みたい処理を記述 [何か変数名] = .Range("読み込みたいアドレス").Value '以下好きなだけ記述... End With '開いたブックを閉じる objSrcWorkBook.Close ThisWorkbook.Activate '再描画を有効にする Application.ScreenUpdating = True '開いた後は後片付け Set objSrcWorkBook = Nothing End Sub ただ、あくまでExcelの機能を使用したファイルの読み込みです。したがって、Excelがサポートしていないファイルの場合はこの方法では開けません。その場合は別の方法を講じてください。CSVはこの方法で読み込み可能です。
その他の回答 (4)
- hayasi456
- ベストアンサー率40% (2402/5878)
追伸 注意 「社内のイントラネット上のファイル」が別のフォルダに移動したりファイル名が変わったり変化するとリンクできなくなります。
- hayasi456
- ベストアンサー率40% (2402/5878)
- hayasi456
- ベストアンサー率40% (2402/5878)
マクロを使わなくても コピーしたい社内のイントラネット上のファイルのA1を リンクしたいエクセル、ファイルのセルにリンクして張り付ければ良いと思います。 両方のエクセル ファイルを開き リンクしたいエクセル、ファイルのセルに「=」を入れ イントラネット上のファイルのA1を選び、Enterを押せば完了です。 自宅から会社のサーバーに入れたファイルとリンクさせてみました。 数式バーには「='\\192.168.・・・・・・・・」と表示されました。 画像添付しましたが途中の文字は消しています。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
CSVファイルのA1セルをコピー 自分のブックでセルのリンク貼り付け CSVファイルを閉じる たぶん、この時のリンク貼り付けを行って張り付いた数式を マクロで書いて コピー→値の貼り付けすればいいんじゃないかなあ
お礼
ご丁寧にどうもありがとうございました。 思っていた通りにできました。感謝します。