VBA。卓越。上传、传输数据到 Goole SpreadSheet

问题描述 投票:0回答:1

我有多个用户的 Microsoft Excel 文件(带有宏)。我曾经使用 Google 表格存储一些数据并使用 ActiveSheet.QueryTables.Add 函数检索它。这样我就可以更新这些数据,所有用户都可以轻松更新他们的 Excel 文件。

但现在我想将一些数据从 Excel 存储到谷歌电子表格。用户一直在更改三列中的数据,我想将这些更改存储在单独的谷歌工作表中(每个用户将有不同的谷歌工作簿来简化)

所以我只需要这个: - 打开谷歌表格https://docs.google.com/spreadsheets/d/....key..../edit#gid=0 - 选择工作表上的所有数据并将其删除 - 从 Excel 工作表中复制三列 - 将这些列粘贴到 A1 处的 Google 表格中

我开始研究如何做到这一点,但发现事情并不那么简单。 我现在正在使用 Internet Explorer 来实现此目的:

 Dim ie As InternetExplorer
    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate ("https://docs.google.com/spreadsheets/d/....key..../edit?usp=sharing") 

我不知道如何选择Google Sheet上的所有数据,如何删除它以及如何在A1粘贴。

当我寻找问题的答案时,我在 stackoverflow 上找到了一些文章,但这对我没有帮助。他们建议使用:。使用 Google Spreadsheets API 将数据移至在线电子表格中。但是如何在VBA中使用它呢?如何添加这个API呢?

请帮忙! 预先感谢您!

excel vba google-sheets
1个回答
0
投票
  1. 使用 VBA 将数据从 Excel 工作表上传到 Google Sheets Google Apps 脚本,您可以按照以下步骤操作。我会分解这个 分为两个主要部分: A: 创建 Google Apps 脚本以上传到 Google 表格 和 B: 在 Excel 中设置 VBA 代码以将数据发送到 Google Sheets。

A:第 1 步: 设置 Google 表格和 Google Apps 脚本

  1. 创建一个新的 Google 表格:

    打开 Google 表格并创建一个新的电子表格。 这将是上传 Excel 数据的位置。

  2. 创建 Google Apps 脚本: 在您的 Google 表格中,单击“扩展”>“Apps 脚本”。 这将打开脚本编辑器。

  3. 编写 Google Apps 脚本来接收数据:替换默认值 使用以下脚本编写代码以创建用于接收的端点 来自 Excel 的数据:

     function doPost(e) {
     var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Change "Sheet1" if your sheet name is different
     var data = JSON.parse(e.postData.contents); // Parse the incoming data
     // Loop through the data and append it to the Google Sheet
     for (var i = 0; i < data.length; i++) {
         var row = data[i];
         sheet.appendRow(row);
     }
    
     return
    
     ContentService.createTextOutput("Success");
      }
    
  4. 保存并部署 Google Apps 脚本: 使用名称保存脚本,例如“ExcelToGoogleSheets”。 单击部署 > 测试部署 > 选择类型 > Web 应用程序。 将“执行”设置为“我”,将“谁有权访问”设置为“任何人”。 单击部署并复制 Web 应用程序 URL。

B:第 2 步: 在 Excel 中编写 VBA 代码

  1. 打开 Excel 并按 Alt + F11 打开 VBA 编辑器。
  2. 插入模块: 在 VBA 编辑器中,单击“插入”>“模块”以创建新模块。
  3. 编写 VBA 代码以将数据从 Excel 发送到 Google Sheets:

nxt

Sub UploadDataToGoogleSheets()
Dim http As Object
Dim url As String
Dim sheet As Worksheet
Dim row As Range
Dim data As Variant
Dim jsonData As String
Dim i As Long, j As Long

' URL of the Google Apps Script Web App
url = "YOUR_GOOGLE_APPS_SCRIPT_URL"  ' Replace with the Web App URL you copied

' Set the worksheet and range to upload
Set sheet = ThisWorkbook.Sheets("Sheet1") ' Change the sheet name if necessary
data = sheet.UsedRange.Value ' Get all the data in the used range of the sheet

' Prepare the data as JSON
jsonData = "["

' Loop through rows and columns to convert data into JSON format
For i = 1 To UBound(data, 1)
    jsonData = jsonData & "["
    For j = 1 To UBound(data, 2)
        jsonData = jsonData & """" & data(i, j) & """"
        If j < UBound(data, 2) Then
            jsonData = jsonData & ","
        End If
    Next j
    jsonData = jsonData & "]"
    If i < UBound(data, 1) Then
        jsonData = jsonData & ","
    End If
Next i

jsonData = jsonData & "]"

' Create the HTTP object
Set http = CreateObject("MSXML2.XMLHTTP")

' Send the data to the Google Sheets via the Google Apps Script web app
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.Send jsonData

' Check the response
If http.Status = 200 Then
    MsgBox "Data uploaded successfully!", vbInformation
Else
    MsgBox "Error uploading data: " & http.Status, vbCritical
End If
End Sub

第 3 步:运行 VBA 代码 运行宏: 在 VBA 编辑器中按 F5 或从 Excel 的“开发人员”选项卡运行宏。 验证上传:

运行代码后,到你的Google Sheet查看数据是否上传成功

© www.soinside.com 2019 - 2024. All rights reserved.