「教えて!ピックアップ」リリース!

アクセスで、パスワード設定されたエクセルブックからデータを自動でインポートしたいと思って、
①と②の方法を考えました。 他にこれ以上、私の浅知恵では思いつきません。
よりよいアイデアがあれば、ご教示頂けないでしょうか?

考えた方法①
:アクセス上で、ボタンアクションで、自動的にエクセルブックのパスワードを解除して、データをインポートできるマクロの構築。

①については、難しくて、実現できませんでした。


考えた方法②
:アクセス上で、エクセルアプリケーションを軌道させる。

手動で、該当のパスワードを設定されたエクセルブックを開く。

パスワードを手入力して、開き、解除をした上で、ファイル名を変更してコピー保存。

エクセルを閉じる。

アクセスに戻って、パスワード設定のないエクセルを呼び出すメニューコマンドの実行をする。
(DoCmd.RunCommand acCmdImportAttachExcel)

コピーブックを呼び出して、インポート。

以上が、恥ずかしながらのアイデアでした。。。

もしも、①が実現できるのだとすれば、その方法を、
また、①や②の他に簡潔な道筋があれば、是非、お知恵をおわけください。
よろしくお願いいたします。

A 回答 (2件)

サンプル。


ご自由にアレンジを。

Sub Sample()
  Dim strDocName As String
  Dim strNewName
  Dim oApp As Object

  strDocName = "C:\Sample\ブック.xlsx"
  strNewName = "C:\Sample\ブック_パスなし.xlsx"

  Set oApp = CreateObject("Excel.Application")

  'Excelファイルオープン
  With oApp
'     .Visible = True
    .Workbooks.Open FileName:=strDocName, _
    Password:="abcd", WriteResPassword:="abcd"

    '名前を付けて保存
    .ActiveWorkbook.SaveAs strNewName, Password:="", WriteResPassword:=""
    .ActiveWorkbook.Close False
    .Quit
  End With
  Set oApp = Nothing

  'Excelインポート
  DoCmd.TransferSpreadsheet acImport, , "テーブル1", strNewName, True, "シート1$"
End Sub


セルの値を読みながらテーブルに書き込んでいくという方法もあり?
    • good
    • 2
この回答へのお礼

bonaronさま!
感激です!!!すごい!うれしい!
できましたっ!
ありがとうございました!
明日、すぐにでも職場で組み入れます!助かりました!

お礼日時:2016/07/06 00:01

Access と Excelのバージョン、


Excelのどのシート(範囲)からか、
一行目からデータ行が始まるのかまたは項目名なのか。
以上の説明は必要かと。
    • good
    • 0
この回答へのお礼

nicotinismさま
ご回答をありがとうございます。
質問の仕方も知らず、大変失礼しました。

Accessも、Excelも2013です。
元データとなるExcelは、
1行目には項目名、列数はL列まであります。
Excelに設定されたパスワードは、
読み取りも書き込みも「abcd」です。
(ファイルの保護で設定されています。)

何卒よろしくお願いいたします。

お礼日時:2016/07/05 00:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング