2

ワークブックの「データ」と呼ばれるワークシートのいくつかの Excel テーブルにデータ (VBA および ADO を介して SqlServer ストアド プロシージャによって返される) をインポートする Excel 2007/2010 ワークブックを開発しました。次に、ADO (ワークブック自体を指す接続) を使用して、他のワークシートのデータを取得します。私がこの ADO レイヤーを気に入っているのは、データ アクセス レイヤー (データ ワークシート) とアプリケーション (他のすべてのワークシート) を明確に分離できるからです。取得したデータにいくつかの数式を追加する必要があるため、私の場合はピボット テーブルはオプションではありません。これは、ワークブックの接続文字列をセットアップする方法です

Private Function GetThisWorkbookCN() As String
   Dim fileFullPath As String
   fileFullPath = ThisWorkbook.FullName
   GetThisWorkbookCN = "DSN=Excel Files;DBQ=" & fileFullPath  
End Function

私の問題は、ワークブックが読み取り専用でない限り、すべてが正常に機能することです。この場合、接続は、開いているファイルではなく、保存されたワークブックを指します。開いたファイルからデータを取得するために接続を設定することは可能だと思いますか? 現在、ワークブックの各バージョンをローカルに保存するようにすべてのユーザーに強制していますが、これは避けたいと思います。

編集: Remou は、回避策として、データをローカル ファイル (csv またはその他の形式) に保存し、ワークブック自体ではなく、そのファイルに ADO を使用することを提案しました。これにより、メイン ファイルを読み取り専用モードで開くことができるため、メンテナンスの問題が回避されます。

4

0 に答える 0